css-man
پنج شنبه 15 فروردین 1392, 16:48 عصر
تو این آموزش قصد دارم نحوه ایجاد pagination رو آموزش بدم هم برای دوستانی که نیاز دارن هم برای اینکه روش من رو اساتید ببینن شاید بهینه تر بشه
این اولین شرط مورد نیا ماست که باید در صفحه بنویسیم تا شماره صفحه موجود رو داشته باشیم
$page = isset($_GET['page']) ? $_GET['page'] : 1;
برای اینکار اول لازمه مشخص کنیم که چند رکورد در هر صفحه میخوایم نمایش بدیم
در این مثال من میخوام 5 رکورد رو در هر صفحی بیارم که تعدادش رو در یک متغیر ذخیره میکنم
$show=5;
بعد برای اینکه تعداد صفحات ما مشخص بشه باید تعداد رکورد ها رو بدست بیاریم
$q="SELECT * FROM `article`";
$r=mysql_query($q);
$count=mysql_num_rows($r);
حالا که تعدا د مطالب یا رکورد های داخلدیتابیس رو بدست آوردیم باید بدست بیاریم که این تعداد رکورد نایز به چند صفحه دارن
برای این کار تعداد رکورد هارو تقسیم بر تعداد مطالب میکنیم و این تعداد رو همه در یک متغیر ذخیره می کنیم
حالا ممکنه این عدد بسدت اومده اعشار داشته باشه برای اینکه این عدد رو رند کنیم از تابعی به نام ciel استفاده میکنیم
$totalpage=ceil($count/$show);
حالا مانایز داریم که کوئری که در مرحله دو نوشتیم رو گسترش بدیم و دستور limit رو بهش اضافه کنیم تا تعداد رکوردهای مورد نظر مارو نمایش بده
همونطور که میدونید دستور limit دو عدد میگیره عدد اول نقطه شروع و عدد دوم تعدادی که باید بر گردونه
مثال
LIMIT 0,10
این دستور از رکورد 0 تعداد 10 تا رو میشماره و بر میگردونه
در این آموزش کار ما به این صورت هست که در صفحه اول تا رکورد شماره 5 رو نمایش بده
در صفحه دوم از 5 تا 10 رو نمایش بده و...
در دستور select ما به این شکل بخش limit رو مینویسیم limit $start,$show
$show همون متغیر ثابت ماس که اول مشخص کردیم 5 تا رکورد بگیره یعنی عدد 5 رو داخلش ریختیم
اما برای $start نیاز به یه فرمول دارم که که هر دفعه عدد درست رو بما نشون بده
فرمول به اینن شکله شماره صفحه(page$) ضرب در تعداد رکورد قابل نمایش در هر صفحه($show) منهای
تعداد رکورد قابل نمایش در هر صفحه($show)
$start=($page*$show)-$show;
این هم شد نقطه شروع بخش LIMIT
یعنی کوئری ما در نهایت میشه
$q2="SELECT * FROM `article` ORDER BY `id` DESC LIMIT $start,$show";
تابع کامل این بخش رو هم براتون انتهای مطلب مینویسم از روش نگاه کنید فکر کنم کامل متوجه بشید
اگر بد توضیح دادم هم عذر خواهی میکنم
امیدوارم بدرد دوستان بخوره
function showarticle($page)
{
$show=5;
$start=($page*$show)-$show;
$q="SELECT * FROM `article`";
$r=mysql_query($q);
$count=mysql_num_rows($r);
$totalpage=ceil($count/$show);
$q2="SELECT * FROM `article` ORDER BY `id` DESC LIMIT $start,$show";
$ret=array();
$ret[0]=$totalpage;
$ret[1]=$this->database->runQuery($q2);
return $ret;
}
ایجاد لینک صفحه بعد و قبل
<div class="paging">
<?php
if($page < $row[0])
{
?>
<a href="?page=<?php echo ($page+1)?>">صفحه بعد</a>
<?php
}
if($page>1)
{
?>
<a href="?page=<?php echo ($page-1)?>">صفحه قبل</a>
<?php
}
?>
</div>
این اولین شرط مورد نیا ماست که باید در صفحه بنویسیم تا شماره صفحه موجود رو داشته باشیم
$page = isset($_GET['page']) ? $_GET['page'] : 1;
برای اینکار اول لازمه مشخص کنیم که چند رکورد در هر صفحه میخوایم نمایش بدیم
در این مثال من میخوام 5 رکورد رو در هر صفحی بیارم که تعدادش رو در یک متغیر ذخیره میکنم
$show=5;
بعد برای اینکه تعداد صفحات ما مشخص بشه باید تعداد رکورد ها رو بدست بیاریم
$q="SELECT * FROM `article`";
$r=mysql_query($q);
$count=mysql_num_rows($r);
حالا که تعدا د مطالب یا رکورد های داخلدیتابیس رو بدست آوردیم باید بدست بیاریم که این تعداد رکورد نایز به چند صفحه دارن
برای این کار تعداد رکورد هارو تقسیم بر تعداد مطالب میکنیم و این تعداد رو همه در یک متغیر ذخیره می کنیم
حالا ممکنه این عدد بسدت اومده اعشار داشته باشه برای اینکه این عدد رو رند کنیم از تابعی به نام ciel استفاده میکنیم
$totalpage=ceil($count/$show);
حالا مانایز داریم که کوئری که در مرحله دو نوشتیم رو گسترش بدیم و دستور limit رو بهش اضافه کنیم تا تعداد رکوردهای مورد نظر مارو نمایش بده
همونطور که میدونید دستور limit دو عدد میگیره عدد اول نقطه شروع و عدد دوم تعدادی که باید بر گردونه
مثال
LIMIT 0,10
این دستور از رکورد 0 تعداد 10 تا رو میشماره و بر میگردونه
در این آموزش کار ما به این صورت هست که در صفحه اول تا رکورد شماره 5 رو نمایش بده
در صفحه دوم از 5 تا 10 رو نمایش بده و...
در دستور select ما به این شکل بخش limit رو مینویسیم limit $start,$show
$show همون متغیر ثابت ماس که اول مشخص کردیم 5 تا رکورد بگیره یعنی عدد 5 رو داخلش ریختیم
اما برای $start نیاز به یه فرمول دارم که که هر دفعه عدد درست رو بما نشون بده
فرمول به اینن شکله شماره صفحه(page$) ضرب در تعداد رکورد قابل نمایش در هر صفحه($show) منهای
تعداد رکورد قابل نمایش در هر صفحه($show)
$start=($page*$show)-$show;
این هم شد نقطه شروع بخش LIMIT
یعنی کوئری ما در نهایت میشه
$q2="SELECT * FROM `article` ORDER BY `id` DESC LIMIT $start,$show";
تابع کامل این بخش رو هم براتون انتهای مطلب مینویسم از روش نگاه کنید فکر کنم کامل متوجه بشید
اگر بد توضیح دادم هم عذر خواهی میکنم
امیدوارم بدرد دوستان بخوره
function showarticle($page)
{
$show=5;
$start=($page*$show)-$show;
$q="SELECT * FROM `article`";
$r=mysql_query($q);
$count=mysql_num_rows($r);
$totalpage=ceil($count/$show);
$q2="SELECT * FROM `article` ORDER BY `id` DESC LIMIT $start,$show";
$ret=array();
$ret[0]=$totalpage;
$ret[1]=$this->database->runQuery($q2);
return $ret;
}
ایجاد لینک صفحه بعد و قبل
<div class="paging">
<?php
if($page < $row[0])
{
?>
<a href="?page=<?php echo ($page+1)?>">صفحه بعد</a>
<?php
}
if($page>1)
{
?>
<a href="?page=<?php echo ($page-1)?>">صفحه قبل</a>
<?php
}
?>
</div>