PDA

View Full Version : نمايش اطلاعات يك جدول درصفحات متعدد



bps20590
پنج شنبه 19 شهریور 1388, 11:54 صبح
با سلام
جدول من داراي چند هزار ركورد ميباشد حال مي خواهم هر 50 ركورد دريك صفحه نمايش داده شده ودرپائين صفحه شماره صفحات ديگه قرار داده بشه تا كاربر با كليك برروي هرشماره صفحه به آن صفحه منتقل بشه الته نمي خواهم كل شماره صفحات نمايش داده شود بلكه مانند همين سايت چند شماره اول سپس شماره هاي آخر

mostafa_shaeri_tj
پنج شنبه 19 شهریور 1388, 13:01 عصر
این کد sql میگه که از چندمین رکورد و چندتا رکورد از جدول رو برگردونه




SELECT * FROM table LIMIT 5, 50


5 اول یعنی از رکورد پنجم شروع کن
50 یعنی پنجاه تا رکورد رو برگردنون.
حالا با یه کمی کد نویسی میتونی اون کاری که میخوای انجام بدی

سلیمانی پور
پنج شنبه 19 شهریور 1388, 14:36 عصر
با سلام
جدول من داراي چند هزار ركورد ميباشد حال مي خواهم هر 50 ركورد دريك صفحه نمايش داده شده ودرپائين صفحه شماره صفحات ديگه قرار داده بشه تا كاربر با كليك برروي هرشماره صفحه به آن صفحه منتقل بشه الته نمي خواهم كل شماره صفحات نمايش داده شود بلكه مانند همين سايت چند شماره اول سپس شماره هاي آخر

سلام
جهت paging یا pagination یا به عبارتی نمایش چند صفحه ای اطلاعات به کار بردن روش زیر را پیشنهاد می کنم:




<html dir="rtl">
<?php
$host = 'localhost';
$user = 'root';
$pwd = '';
$dbName = 'soleymanipur';

$conn = mysql_connect ($host, $user, $pwd) or die ('Connection Failed.<br>');
$db = mysql_select_db ($dbName) or die ('DB selection failed.');

// تعداد رکوردهایی که می خواهید در هر صفحه نمایش داده شود
$recordsPerPage = 2;

// default startup page
$pageNum = 1;

if(isset($_GET['p'])) {
$pageNum = $_GET['p'];
settype($pageNum, 'integer');
}

$offset = ($pageNum - 1) * $recordsPerPage;
mysql_query("SET NAMES 'utf8'");

$query = "SELECT title, detail FROM content LIMIT $offset, $recordsPerPage;"; # 1. Main query

$result = mysql_query($query) or die('Mysql Err. 1');

// print table
# 2 change/add columns name
while($row = mysql_fetch_assoc($result))
{
$data .= "<h4 > $row[title]</h4>
<div> $row[detail] </div>
<div> نوشته شده توسط روح الله سليماني پور در تاريخ :...</div> ";
}
# Update this query with same where clause you are using above.
mysql_query("SET NAMES 'utf8'");
$query = "SELECT COUNT(detail) AS dt FROM content;"; # 3

$result = mysql_query($query) or die('Mysql Err. 2');
$row = mysql_fetch_assoc($result);
$numrows = $row['dt']; # 4

$maxPage = ceil($numrows/$recordsPerPage);

$nav = '';
##
for($page = 1; $page <= $maxPage; $page++)
{
if ($page == $pageNum)
{
$nav .= "<div class=\"pNo\">$page</div>";
}
else
{
$nav .= "<div class=\"pNo\"><a href=\"?p=$page\">$page</a></div>";

}
}

if ($pageNum > 1) {

$page = $pageNum - 1;
$prev = "<a href=\"?p=$page\"><strong>بعدی</strong></a>";

$first = "<a href=\"?p=1\"><strong>آخرین</strong></a>";
}
else {
$prev = '<strong> </strong>';
$first = '<strong> </strong>';
}

if ($pageNum < $maxPage) {
$page = $pageNum + 1;
$next = "<a href=\"?p=$page\"><strong>قبلی</strong></a>";

$last = "<a href=\"?p=$maxPage\"><strong>اولین</strong></a>";
}
else {
$next = '<strong> </strong>';
$last = '<strong> </strong>';
}
##

echo $data;

echo '<br />';

echo "<div class=\"pagingDiv\">
<div class=\"pNo\">$first</div>
<div class=\"pNo\">$prev</div>
$nav
<div class=\"pNo\">$next</div>
<div class=\"pNo\">$last</div></div>";
?>
</html>


موفق باشید.

ahmadbadpey
پنج شنبه 19 شهریور 1388, 16:59 عصر
تاپيك زير رو يه نگاهي بنداز :
http://barnamenevis.org/forum/showthread.php?t=161054