X
تبلیغات
گام به گام با آموزش php

گام به گام با آموزش php

آموزش زبان برنامه نويسي php و ديگر زبانهاي برنامه نويسي تحت وب

صفحه بندی مطالب با صفحه بندی مطالب با php

شاید برای شما هم مشکل صفحه بندی مطالب پیش اومده باشه ، اون اولا که برای من خیلی زیاد این مشکل پیش می اومد و نمی تونستم مطالبی رو که از بانک اطلاعاتی میگیرم صفحه بندی کنم اما رفته رفته با تمریناتی که انجام دادم به این مسئله پی بردم که صفحه بندی مطالب یک راه حل خیلی ساده داره و اونم استفاده از limit  هستش که آموزش انجام این کار در ادامه مطلب اومده

آموزش  صفحه بندی مطالب خوانده شده از بانک اطلاعاتی با PHP

توضیحات ) در این آموزش ما تعدادی مطلب را با دستورات ساده php و mysql از بانک اطلاعاتی میگیریم و در ادامه یاد می گیریم که چگونه به لینک  صفحه نمایش دهنده تعدادی (دلخواه ) از مطالب با قالب دلخواه دست پیدا کنیم . پس مراحل زیر را بترتیب دنبال کنید .

مرحله اول ) ایجاد و کد نویسی function های لازم برای بازخوانی و نمایش مطالب و لینک ها و پردازش قالب و ارتباط با بانک اطلاعاتی

* کد ارتباط با بانک اطلاعاتی Mysql


$host = "localhost"; //آدرس میزبان بانک اطلاعاتی
$user = "root"; //نام کاربری برای ارتباط با بانک اطلاعاتی
$pass = "root"; //رمز عبور برای ارتباط با بانک اطلاعاتی
$db = "page" ; //نام بانک اطلاعاتی
mysql_connect($host,$user,$pass) or die (mysql_error()) ;
mysql_select_db($db) ;
?>

کد بالا را در فایلی با نام “db.php” در یک پوشه با نام دلخواه ذخیره نمایید .

* function ها برای دریافت و نمایش اطلاعات


//////////////////////////////////////////////////////////////
//// simple php/mysql pagination ////////
//// ////////
//// WEBSITE : http://mypress.ir ////////
//// by: hossein.d ////////
//////////////////////////////////////////////////////////////

include("db.php"); // قرار دادن محتوی فایل ذکر شده در این مکان برای ارتباط با بانک اطلاعاتی

// عملگر نمونه برای دریافت اطلاعات از بانک اطلاعاتی

function page($table,$theme,$items) {

// نیازی به دستکاری موارد زیر نمی باشد . این موارد بصورت خودکار تنظیم می شوند
$offset=$_GET[$table] ; // دریافت شماره صفحه از آدرس درخواستی

$page_items = $items ; // تعداد موراد در هر صفحه

$sql = mysql_query("select * from $table order by id asc limit $offset,$page_items") or die ("اشکال در دریافت اطلاعات"); // دستور مای اس کیو ال لازم برای دریافت اطلاعات از بانک اطلاعاتی

while ($fetch=mysql_fetch_array($sql)) { // نمایش خروجی تا زمانی که هنوز اطلاعاتی مجود است

$item = $fetch['title'];

$out = str_replace("[page_item]",$item,$theme) ;

print $out ;

}

}

// عملگر نمونه برای نمایش لینک به صفحات . این موارد نیاز به تغییر ندارند

function links($table,$theme,$items) {

$sql = mysql_query("select * from $table ") or die (mysql_error()); // انتخاب تمام موارد از بانک اطلاعاتی

$num = mysql_num_rows($sql) ; // شمارش تعداد اطلاعات انتخاب شده

$pages = $num/$items ; // محاسبه تعداد صفحات با توجه به تعداد موارد در هرصفحه

for ($i=0 ; $i<=$pages ; $i++) { // نمایش لینک ها

if ($i !='0') {
$of = $i*$items-1; // مقدار عددی لینک صفحه اول در اینجا ساخته می شود
}
else {
$of = $i*$items; // مقدار عددی لینک صفحات دیگر در اینجا ساخته می شود
}
$out = str_replace("[table]",$table,$theme) ;
$out = str_replace("[offset]",$of,$out) ;
$out = str_replace("[page]",$i,$out) ;
print $out ;
}

}
?>

کد بالا را نیز با نام “functions.php” در همان پوشه ذخیره نمایید . توضیحات کامل در مورد عملکرد هر دستور در ضمن فایل آمده است

مرحله دوم )  ایجاد صفحه index.php برای نمایش خروجی ها

در این مرحله ما کد های لازم برای بازخوانی اطلاعات و نمایش خروجی را در قالب اصلی کارمان قرار می دهیم به نمونه  زیر توجه کنید.






mypress.ir ::: مرجع آموزش وبمستر های ایرانی








    $theme = "
  • [page_item]
  • n";
    page("news",$theme,"5") ;
    ?>




صفحات :
$theme = "[page] - " ;

links("news",$theme,"5") ;

?>




در این کد ما با

function هایی را که نوشته ایم در کدمان قرار می دهیم تا  آن ها را آماده استفاده کنیم

و در ادامه از

$theme = "
  • [page_item]
  • n";
    page("news",$theme,"5") ;
    ?>

    برای نمایش مطالب با قالبی که در متغیر theme$ قرار داده ایم استفاده می کنیم . روش کار در این قسمت اینگونه است که مطالب از خانه بانک اطلاعاتی با نام News خوانده می شود و [page_item] با عنوان مورد نظر ما که در function  ها مشخص کرده ایم جایگزین می شود و به تعداد ۵ بار چاپ می شود . می توانید با تغییر عدد ۵ به تعداد مورد نظر ، تعداد موارد نمایشی در هر صفحه را تغییر دهید

    پس از این ما از کد

    $theme =  "[page] - " ;

    links("news",$theme,"5") ;

    ?>

    استفاده کرده ایم که وظیفه نمایش لینک صفحات را بر عهده دارد . در این قسمت اطلاعات از خانه بانک اطلاعاتی با نام news شمرده می شوند و سپس لینک صفحات تولید می شود و با قالب مشخص شده در متغیر theme$ به نمایش در می آید . لینک های تولید شده برای ۵ مورد در صفحه می باشد که این قسمت را باید برابر با تعداد موارد در قسمت قبلی قرار دهید تا لینک ها متناسب با مطاب و تعداد موارد به نمایش در بیایند .

    کد ایجاد بانک اطلاعاتی استفاده شده در این آموزش

    CREATE TABLE `news` (
    `id` int(11) NOT NULL auto_increment,
    `title` text collate latin1_general_ci NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=18 ;

    --
    -- Dumping data for table `news`
    --

    INSERT INTO `news` VALUES (1, 'title1');
    INSERT INTO `news` VALUES (2, 'title2');
    INSERT INTO `news` VALUES (3, 'title3');
    INSERT INTO `news` VALUES (4, 'title4');
    INSERT INTO `news` VALUES (5, 'title5');
    INSERT INTO `news` VALUES (6, 'title6');
    INSERT INTO `news` VALUES (7, 'title7');
    INSERT INTO `news` VALUES (8, 'title8');
    INSERT INTO `news` VALUES (9, 'title9');
    INSERT INTO `news` VALUES (10, 'title10');
    INSERT INTO `news` VALUES (11, 'title 11');
    INSERT INTO `news` VALUES (12, 'title 12');
    INSERT INTO `news` VALUES (13, 'title 13');
    INSERT INTO `news` VALUES (14, 'title 14');
    INSERT INTO `news` VALUES (15, 'title 15');
    INSERT INTO `news` VALUES (16, 'title 16');
    INSERT INTO `news` VALUES (17, 'title 17');

    اگر سوالی داشتید یا به مشکلی برخوردید حتما اینجا اعلام کنید تا مشکلتون حل بشه . امیدوارم این مطلب مفید بوده باشه و یه جایی بدردتون بخوره

    + نوشته شده در  چهارشنبه بیست و ششم خرداد 1389ساعت 8:1  توسط علي فيروزي  | 

    ساختن form

    ساختن form :

    Form ها بوسیله تگ Form و به صورت زیر ساخته میشوند:





    Action : روبروی این دستور باید صفحه ای که اطلاعات به درون آن فرستاده میشود نوشته شود.

    Method : روبروی این دستور نوع فرستادن متغیرها مشخص میشود که به دو نوع get و post تقسیم میشوند.

    1- get: توسط این Method متغیرها از طریق URL فرستاده خواهند شد: http://localhost/script.php?name=mohsen&family=soltani

    2- Post : در این حالت برخلاف Method قبلی داده ها قابل رویت نیستند و این Method داده ها را به صورت مخفی ارسال می کند.

    در مثال زیر نحوه به کارگیری تگ Form را مشاهده خواهید کرد:

    کد PHP:
    <html>
    <
    head>
    <
    title>Simple HTML Formtitle>
    head>
    <
    body>
    <
    form action="handle_form.php" method="post">
    <
    fieldset><legend>Enter your information in the form below:legend>
    <
    p><b>Name:b> <input type="text" name="name" size="20" maxlength="40" />p>
    <
    p><b>Email Address:b> <input type="text" name="email" size="40" maxlength="60" />p>
    <
    p><b>Gender:b> <input type="radio" name="gender" value="M" /> Male <input type="radio" name="gender" value="F" /> Femalep>
    <
    p><b>Age:b>
    <
    select name="age">
      <
    option value="0-29">Under 30option>
      <
    option value="30-60">Between 30 and 60option>
      <
    option value="60+">Over 60option>
    select>p>
    <
    p><b>Comments:b> <textarea name="comments" rows="3" cols="40">textarea>p>
    fieldset>
      <
    div align="center"><input type="submit" name="submit" value="Submit My Information"/>div>
    form>
    body>
    html

    این یک نمونه Form است که در بخش های بعدی به آن نیاز داریم.

    این فایل را با نام Form.html ذخیره کنید.



    نکته: تنها متغیرهایی که مابین تگ
    قرار میگیرند ، فرستاده خواهند شد.


    استفاده از متغیرهای فرستاده شده:

    همان طور که در قسمت قبل مشاهده کردید ، داده بوسیله Form به فایل Handle_form.php فرستاده میشوند . حال ما باید در این فایل این اطلاعات را خوانده و از آنها استفاده کنیم.

    دستوری در PHP وجود دارد با نام $_Post['name'] که متغیرهای فرستاده شده را میگیرد و در متغیری قرار می دهد:

    کد PHP:
    $name $_Post['name']; 

    مثال: ما در فایل Form.html دستوری بصورت داریم. برای خواندن داده ی موجود در این متغیر باید از دستور زیر استفاده کرد :
    کد PHP:
    $name $_post['weight']; 
    یعنی اینکه متغیرها در جلوی عبارت name تعریف میشوند.

    مثال زیر نحوه کار با این دستور را کاملاً مشخص می کند:

    کد PHP:





    $name 
    $_POST['name'];
    $email $_POST['email'];
    $comments $_POST['comments'];

    echo 
    "

    Thank you, $name,for the following comments:$comments

    We will reply to you at $email.

    \n"
    ;
    ?>



    این فایل را با نام handle_form.php ذخیره کنید.

    بجای استفاده از $_POST شما میتوانید از $_REQUEST نیز استفاده کنید.



    مدیریت Magic Quotes (گیومه جادویی!)

    همانطور که در مثال قبل مشاهده کردید برنامه ما بدون هیچ نقصی کار می کرد. مرورگر خود را باز کنید و سپس در قسمت comment حرف ' را تایپ و سپس روی Submit My Information کلیک کنید، در صفحه Handle_form.php بجای مشاهده فقط حرف ' ، این حرف را با یک \ مشاهده می کنید!

    البته در این نوع برنامه ها این حرف کوچک مشکل ساز نخواهد بود ، اما در برنامه هایی که با پایگاه داده نوشته می شوند ، این حرف یک مشکل اساسی است .

    برای اینکه این حرف مانند تمام حرف های معمولی دیگر شود کافی است از تابع stripslashes($var) استفاده کرد. پس قسمت هایی از برنامه قبل را به این صورت تغییر خواهیم داد:


    کد PHP:
    $comments stripslashes($_POST['comments']);
    $email stripslashes($_POST['email']); 

    نکته : یک تابع نیز با نام trim() وجود دارد که فاصله های خالی ابتدا و انتهای عبارت را در نظر نمی گیرد.استفاده از این تابع نیز در بعضی موارد بسیار مفید است.

    تغییرات گفته شده را در فایل انجام دهید و دوباره برنامه را اجرا کنید.
    + نوشته شده در  دوشنبه سوم خرداد 1389ساعت 8:8  توسط علي فيروزي  |