PDA

View Full Version : سوال: صفحه بندی



hamedarian2009
چهارشنبه 09 مرداد 1392, 13:49 عصر
با سلام

من در حال ساخت یک سایت خبری هستم. در این سایت اخبار از بانک اطلاعاتی گرفته میشه و در صفحه اصلی نمایش داده میشه.
حالا من میخام مثل همین سایت و خیلی سایتهای دیگه تعداد نمایش خبر در صفحه محدود باشه مثلا 10 تا خبرو نمایش بده و اگه خبر در بانک تعدادش بیشتر از 10 تا بود بره صفحه دوم و الی آخر...
و در زیر صفحه منوی شماره صفحه بیاد و که بشه با کلیک روش بری صفحه بعدی

لطفا یه نفر کدی یا مثالی در این زمینه داره بهم بگه.با تشکر

milad_d993
چهارشنبه 09 مرداد 1392, 14:02 عصر
$numberOfBookInPage = 10;

$pageLinks = "";


$bookR = mysql_query("select count(*) from book",$serverLink);
$bookNum = mysql_fetch_array($bookR);

$numberOfPage = (int)($bookNum[0] / $numberOfBookInPage[1]);
if (($bookNum[0] % $numberOfBookInPage[1]) != 0) $numberOfPage++;
$allPages = array();
for ($i=0;$i < $numberOfPage;$i++){
$allPages[$i] = $i+1;
}
if (isset($_GET["p"]) && is_numeric($_GET["p"]) && array_search($_GET["p"],$allPages)){
$page = $_GET["p"];
for ($i=1;$i <= $numberOfPage;$i++){
if ($i == $page){
$pageLinks .= "$i ";
}else{
$pageLinks .= "<a href ='index.php?p=$i'>$i</a> ";
}
}
$start = ($page-1) * $numberOfBookInPage[1];
$bookResult = mysql_query("select * from book LIMIT $start,$numberOfBookInPage[1]",$serverLink);

}else{
for ($i=1;$i <= $numberOfPage;$i++){
if ($i == 1){
$pageLinks .= "$i ";
}else{
$pageLinks .= "<a href ='index.php?p=$i'>$i</a> ";
}
}
$bookResult = mysql_query("select * from book LIMIT 0,$numberOfBookInPage[1]",$serverLink);
}



//پایین صفحه (چاپ شماره صفحات)
if ($pageLinks !== "1 ")
echo $pageLinks;

hamedarian2009
چهارشنبه 09 مرداد 1392, 21:46 عصر
با تشکر از شما
ولی نمیشه یکم بیشتر توضیح بدین من این کدهارو کجا بزارم
کدهایی که خودم نوشتم اینا هستن نباید این کدهارو تغییر بدم


<?php
$r=mysql_query("select * from tblnews where flag=1") or die(mysql_error());
while ($rows=mysql_fetch_array($r))
{
echo '<table width=100% border=0 cellpadding=5 cellspacing="5">
<tr style="background-color:aqua">
<td colspan=2>عنوان :'.$rows['title'].' </td>
</tr>
<tr bgcolor="#EBEBEB">
<td height=115 colspan=2>'.$rows['body'].'</td>
</tr>
<tr>
<td style="background-color:yellow">توسط :'.$rows['memberid'].'</td>
<td style="background-color:orange">تاریخ :'.$rows['date'].'</td>
</tr>
</table>';
}
mysql_close($link);
?>

milad_d993
جمعه 11 مرداد 1392, 12:46 عصر
خط 1 که تعداد رکورد در هر صفحه است.

تو خط 6 تعداد رکورد های موجود در بانک رو میکشیم بیرون (با count(*))

تو خط 9 تا 14 شماره صفحات رو درست کردیم

شرط خط شماره 15 میاد چک بکنه که پارامتر p که همون شماره صفحه هست و تو نوار آدرس میاد اولا عددیه یا نه و همچنین همچین شماره صفحه ای هست یا نه (مثلا برای جلوگیری از کرم ریختن کاربر....)

خطوط 17 تا 24 لینک شماره صفحات که پایین صفحه درج میشه رو درست میکنه، یه شرط توش هست که شماره صفحه ای که توشیم لینک نشه

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

خطوط 27 تا 37 هم مال موقعیه که روی لینک صفحات پایین صفحه کلیک نکردیم و پارامتر p یا صفحه مقدار دهی نشده

تو خط 42 هم میاد میبینه اگه تعداد رکورد هخای موجود رد بانک 10 یا کمتر بود (فقط یه صفحه داشتیم) دیگه شماره صفحات رو نشون نمیده
---

شما تو خط 2 اومدین کل رکورد هایی که فیلد flagشون 1 هست رو سلکت کردین؛ اینجوری کل رکرود ها در یه صفحه نمایش داده میشه و باید از کلید واژه LIMIT تو دستور سلکت استفده کنین...