درخواست کمک در مورد صفحه بندی در php

persiangn

Member
سلام
من در صفحه اول سایتم 5 مطلب آخر را نمایش می دهم و بقیه مطالب را 5 تا 5 صفحه بندی کردم.
در حال حاضر این مشکلات را دارم.
1-لینکی که در آن صفحه آخر نمایش داده شود وجود ندارد.
2-صفحه اول خود دارای یک لینک فعال هست(می خواهم غیر فعال باشد).

کد صفحه بندی به طور زیر است.
PHP:
<?php
$connection = mysql_connect("localhost", "root", "") or die(mysql_error());
@mysql_select_db('db');
$sql = "SELECT * FROM tutorial ORDER BY id DESC";
$ans= mysql_query($sql,$connection) or die(mysql_error());
$results = array();
while($row = @mysql_fetch_assoc($ans)){
 $results[]=$row;
}
$page = (isset($_GET['page'])) ? intval($_GET['page']) : 1;
$begin_iteration = ($page-1)*5;
$end_iteration = $begin_iteration+5;
for($i = $begin_iteration;$i<$end_iteration;$i++){
if(@is_array($results[$i])){
echo "Title:".$results[$i]['title']."<br />\n";
echo "Contents:".$results[$i]['content']."<br />\n";
}
else
{
break;
}
}
$pages = ceil(sizeof($results) / 5);
for($i = 1;$i<$pages;$i++)
{
print ("<a href=\"index.php?page=$i\">$i</a>  ");
}
?>

اگر میشود راهنمایی کنید.
 

Cybertoos

Member
خدا قوت
شرط دوم حلقه for متغیر i کوچکتر مساوی متغیر pages .
در مورد صفحه فعلی هم یک شرط بزار که اگر ایندکس حلقه for برابر ایندکس page از Query string بود فقط عدد نشون بده:
PHP:
if($i == $_GET['page']){
    print("$i  ");
}else{
    print("<a href=\"11.php?page=$i\">$i</a>  ");
}
یک از چند نکته:به نظر من برای بهینه تر شدن برنامت از خاصیت LIMIT در sql استفاده کن چون این جوری حجم زیادی از رکودها رو بی خودی از دیتابیس فراخوانی می کنی و برنامت سنگین میشه.
</div>
 

persiangn

Member
سلام
مرسی ازاین که جواب دادید ولی ...

من تازه کار هستم و نمیتونم از توضیحاتون کد خوبی رو در بیارم(همش با ارور رو به رو میشم).
اگه میشه با توجه به توضیحاتون کد رو خودتون یا دوستان دیگر درستش کنید آخه من نمیتونم :sad:

در مورد اون آخر هم عرض کردید شدیدا مشتاق انجام اون کار هستم ولی بلد نیستم چجوری باید limit گذاشت.

اگر امکانش هست در مورد حجم کار که گفتید سفارشی توضیح بدید که کدشم خودتون زحمتشو بکشید.

تورو به خدا شرمندم که این همه جسارت می کنم آخه من زیاد بلد نیستم این کد هم از یک سایت خارجی گرفتم.

بازم تشکر :rose:
 

omid4u

New Member
برای limit

PHP:
$sql = “SELECT * FROM tutorial ORDER BY id DESC LIMIT 0, 20”;
0 در این جا رکورد اول و 20 تعداد سطر هایی که بر میگرداند

اول این جا را یک نگاهی بندازید راهنمایی کامل وجود دارد

 

persiangn

Member
سلام

با تشکر از دوستان که اطلاعات و وقتشون رو در اختیار بنده قرار دادند.

با توجه به توضیح دوستان و لینک آموزشی که گذاشتند من کدم را به صورت تغییر دادم.

PHP:
$connection = mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db('db');
if (isset($_GET["page"])) { $page  = $_GET["page"]; } else { $page=1; }; 
$start_from = ($page-1) * 5; 
$sql = "SELECT * FROM tutorial ORDER BY id DESC LIMIT $start_from, 5"; 
$rs_result = mysql_query($sql,$connection); 
?> 
<table>
<tr><td>Title</td><td>Moghadame</td></tr>
<?php 
while ($row = mysql_fetch_assoc($rs_result)) { 
?> 
            <tr>
            <td><?php echo $row["title"]; ?></td>
            <td><?php echo $row["short_desc"]; ?></td>
            </tr>
<?php 
}; 
?> 
</table>
<?php 
$sql = "SELECT COUNT(id) FROM tutorial"; 
$rs_result = mysql_query($sql,$connection); 
$row = mysql_fetch_row($rs_result); 
$total_records = $row[0]; 
$total_pages = ceil($total_records / 5); 
 
for ($i=1; $i<=$total_pages; $i++) { 
            echo "<a href='index.php?page=".$i."'>".$i."</a> "; 
}; 
?>

ولی بازم چند تا سوال و مشکل

1-اول این که آیا این مورد که حجم کار در کد اولم زیاد بود برطرفت شد (یعنی الان limit درست به کار رفته و حجم کار کم شده )

2-دوم این که برای غیر فعال شدن لینک صفحه در حال نمایش دوستان کمک کردند ولی نمیتوانم چناچنچه دوستان گفتند شرط if را در حلقه ی for به کار برم و با ارور مواجه می شوم .اگه می شه این کارو خودتون بکنید(آخه من نتونستم).

ممنون :rose:
 
آخرین ویرایش:

persiangn

Member
پس چرا کسی جواب نمی ده. من سوالم رو بد مطرح کردم یا این که شما هم مثل من ... :lol:

من منتظر جواب شما هستم . کارم هم فوری است.

توروبه خدا دست بجنبونین.
 

جدیدترین ارسال ها

بالا