صفحه بندي كد بالا درست حالا ما چجوري اطلاعات رو از db بگيريم. يعني در هر صفحه مثلا 10 سطر جدول را بخواند و با كليك بهnext برود در صفحه مثلا page=2 ده رديف بعدي ديتابيس را بخواند .؟
Printable View
صفحه بندي كد بالا درست حالا ما چجوري اطلاعات رو از db بگيريم. يعني در هر صفحه مثلا 10 سطر جدول را بخواند و با كليك بهnext برود در صفحه مثلا page=2 ده رديف بعدي ديتابيس را بخواند .؟
خواهشا كمكم كنيد كارم گيره
قبلاً 3 - 4 بار بحث شده
اول جستجو کنید
من خيلي دنبال كد تو همين فروم گشتم يه چيزايي از خود شما هم پيدا كردم ولي اصلا جور در نميومد. مخم ديگه سوت كشيد.
كدي كه نوشتم رو مي ذارم فقط بلدم يك سطر رو تو هر صفحه بخونم.
اگه مي شه لطف كنين كمكم كنين تا بتونم در هر صفحه 10 سطر از ديتابيس رو بخونم.
هر كاري كردم نشد.
كد:
[PHP]
<?php
$archiveQuery = mysql_query("SELECT * FROM ".TABLE_COMPANY_NEWS." order by ID desc")
or die("<div id='top_warning'><span><img src='images/warning.gif'/><b> ".$warning.": </b></span>".$query_failed_warning."<br/>".mysql_error()."</div>");
list($count) = mysql_fetch_row($archiveQuery);
$pages = intval($count/1)-1; //musb be 10
if ($pages == 1){
return "";
}
if (isset($_REQUEST["page"]) && !empty($_REQUEST["page"])){
$thisPage = intval($_REQUEST["page"]);
}else{
$thisPage = 1;
}
if ($thisPage > 1){
$PagerLinks .= "<a href=\"?lng=".$lan."&pid=".$page."&page=1\"> « اولين </a> <a href=\"?lng=".$lan."&pid=".$page."&page=" . ($thisPage-1) . "\">< قبلي </a>";
}
for ($i=1;$i<=$pages;$i++){
if ($i != $thisPage){
$PagerLinks .= "<a href=\"?lng=".$lan."&pid=".$page."&page=" . $i . "\">" . $i . "</a> | ";
}else{
$PagerLinks .="<b>". $i . "</b> | ";
}
}
if ($thisPage < $pages){
$PagerLinks .= " <a href=\"?lng=".$lan."&pid=".$page."&page=" . ($thisPage+1) . "\"> بعدي ></a> <a href=\"?lng=".$lan."&pid=".$page."&page=". ($i-1) ."\"> آخرين »</a>";
}
$archiveQuery = "SELECT * FROM ".TABLE_COMPANY_NEWS." ORDER BY ID desc LIMIT ".($subpage).",".(($subpage)+1);
if($oResult = mysql_query($archiveQuery) and mysql_num_rows($oResult) > 0) {
$aValues = mysql_fetch_array($oResult,MYSQL_ASSOC);
echo "<div id=\"Arch_content\">";
echo "<b>".$aValues['Title']."</b><br/>";
echo $aValues['content']."<br/><br/>";
echo $lastsend.$aValues['NewsDate'];
echo "</div><br/>";
}
echo "<div align=\"center\" id=\"pager\">";
echo $PagerLinks;
echo "</div>";
mysql_free_result($result);
?>
[/PHP]
مشکل تو این خطه:
[PHP]list($count) = mysql_fetch_row($archiveQuery); [/PHP]
باید از mysql_fetch_array استفاده کنی
کدی که نوشتی خیلی شلوغه من که حوصلم نمیزاره همشو بخونم
اینجا یه کد ساده رو برای این کار نوشتم
میتونی خیلی راحت تغییرش بدی تا با اونی که میخوای جور در بیاد:
[php]
<?php
// تعدادر سطرهایی که برای هر صفحه باید از دیتابیس استخراج شود
$row_per_page = 10;
// پیدا کردن اولین سطری که باید از دیتابیس استخراج شود
$page = ((int)$_REQUEST['page']) * $row_per_page;
// به دست آوردن تعداد کل سطرهای موجود در دیتابیس
$sql_cont = mysql_query("SELECT COUNT(*) FROM ".TABLE_COMPANY_NEWS.";") or die(mysql_error());
list($count) = mysql_fetch_row($sql_cont);
mysql_free_result($sql_cont);
// ننمایش لینک به صفحات بعدی و قبلی
for ($i=0; $i<$count; $i+=$row_per_page) {
echo "<a href='?page=$i'>Page $i</a>\n";
}
// گرفتن سطرهای قابل نمایش در صفحه از دیتابیس و نمایش آنها در صفحه
$sql = mysql_query("SELECT * FROM ".TABLE_COMPANY_NEWS." LIMIT $row_per_page OFFSET $page;") or die(mysql_error());
while($row = mysql_fetch_assoc($sql) {
.......
مد مربوط به نمایش هر سطر در صفحه
.......
}
mysql_free_result($sql);
?>
[/php]
از neopersia جان تشكر مي كنم، واقعا كد به دردم خورد ولي چند تا ايراد جزئي داشت كه اصلاحشون كردم. گفتم شايد به درد دوستان بخوره:
[PHP]
<?php
// تعدادر سطرهایی که برای هر صفحه باید از دیتابیس استخراج شود
$row_per_page = 10;
// پیدا کردن اولین سطری که باید از دیتابیس استخراج شود
$subpage = ((int)$_REQUEST['page']);
// به دست آوردن تعداد کل سطرهای موجود در دیتابیس
$sql_cont = mysql_query("SELECT COUNT(*) FROM ".TABLE_COMPANY_NEWS.";") or die(mysql_error());
list($count) = mysql_fetch_row($sql_cont);
mysql_free_result($sql_cont);
// گرفتن سطرهای قابل نمایش در صفحه از دیتابیس و نمایش آنها در صفحه
$sql = mysql_query("SELECT *,LEFT(content,300) as shortContent FROM ".TABLE_COMPANY_NEWS." order by ID desc LIMIT $row_per_page OFFSET $subpage;") or die(mysql_error());
while($row = mysql_fetch_assoc($sql)) {
echo "<div id=\"Arch_content\">";
echo "<a href=\"?lng=".$language."&pid=conews&sid=".$row['ID']."\"><b>".$row['Title']."</b></a><br/>";
echo $row['shortContent']."...<br/>";
echo "<a href=\"?lng=".$language."&pid=conews&sid=".$row['ID']."\">".$moreConews."</a><br/><br/>";
echo $lastsend.$row['NewsDate'];
echo "</div><br/>";
}
// ننمایش لینک به صفحات بعدی و قبلی
for ($i=0; $i<$count; $i+=$row_per_page) {
echo "<a href='?lng=".$language."&pid=".$page."&sid=".$subi d."&ajax=".$ajax."&page=$i'>Page $i</a>\n";
}
mysql_free_result($sql);
?>
[/PHP]
تشکر از دوست گرامیneopersia به خاطر جواب های بی عیب نقسشون