PDA

View Full Version : نمایش رکوردها با تعداد خاص



aserfg
جمعه 13 آذر 1388, 19:06 عصر
با سلام چطوری میشه تعداد محدودی رکورد رو در یک صفحه نمایش داد مثلا مثل همین فروم خودمون یعنی مثلا تعداد 10 رکورد رو در یک صفحه نشون بدیم و بقیه رو به شکل زیر :

امیـرحسین
جمعه 13 آذر 1388, 23:42 عصر
دستور LIMIT در MySQL میتونه این کار رو راحت انجام بده. این یه نمونه است که فرض شده شماره صفحه بصورت GET با کلید page میاد. با دقت بخونیدش خیلی دستگیرتون میشه:
$page = isset($_GET['page']) ? intval($_GET['page']) : 1;
$page--;
$resultsPerPage = 20;
$sql = "SELECT * FROM table LIMIT $page,$resultsPerPage";
$select = mysql_query($sql);




$sqlCount = "SELECT COUNT(id) FROM table;";
$row = mysql_fetch_row( mysql_query($sqlCount) );
$totalPages = ceil($row[0] / $resultsPerPage);

for($i=1 ; $i<=$totalPages; $i++) {
if($i == ($page+1))
echo $i;
else
echo '<a href="current URL ?page=' .$i. '">' .$i. '</a>';

aserfg
چهارشنبه 18 آذر 1388, 15:38 عصر
با سلام خدمت همه اساتید گرامی و خصوصا آقا امیرحسین گل . ممنون از راهنماییتون ، با وجود اینکه من از کدهای بالا بارها استفاده کردم و محل کاربرد هر کدوم رو می دونم ولی چون مبتدی هستم عملکرد توابع هم می خوام بدونم :
اگه ممکنه این چند خط رو توضیح بدین :
10.$sqlCount = "SELECT COUNT(id) FROM table;";11.$row = mysql_fetch_row( mysql_query($sqlCount) );12.$totalPages = ceil($resultsPerPage, $row[0]);

امیـرحسین
چهارشنبه 18 آذر 1388, 23:30 عصر
فرض کنید ما 130 تا مورد برای نمایش داریم که میخوام صفحه بندی کنیم که تو هر صفحه 20 تا باشه.

توسط COUNT می تونیم تعداد سطرها رو بگیریم (همون 130 رو). من فرض کردم توی جدول، ستون id وجود داره و تعداد سطرهای این ستون رو با COUNT گرفتم. هر سطر دیگه ای رو میشه به تابع COUNT داد حتی اینجوری (*)COUNT.
حالا باید ببینیم که چند تا صفحه داریم. برای این کار باید 130 رو تقسیم بر 20 کنیم که میشه 6.5 یعنی 6.5 صفحه داریم پس یعنی 6 صفحه 20 تایی و یک صفحه 10 تایی یعنی 7 صفحه. تابع ceil عدد رو به بالا گرد می کنه.
با این اطلاعات میشه لیست شماره صفحات رو نمایش داد.

اطلاعات رو کنار هم بذارید، میبینید که خیلی ساده است.