گام به گام با آموزش 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  توسط علي فيروزي  |