PDA

View Full Version : آموزش: آموزش pagination



css-man
پنج شنبه 15 فروردین 1392, 15: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>

iman_k26
یک شنبه 15 تیر 1393, 15:10 عصر
ممنون از مطلبتون

ببخشید فرض کنید یه صفحه HTML داریم که توش متن هامون رو نوشتیم و برای کوتاه تر شدن ارتفاع صفحه میخوایم مطالب رو به 2 صفحه تبدیل کنیم.

حالا میخواستم ببینم با این روش میشه این کار رو کرد یا خیر؟(میخوام صفحه دوم توی همون 1 صفحه HTML بارگذاری بشه)

امیدوارم منظورم رو رسونده باشم.

ممنون میشم راهنمایی بفرمایید یا اگر آموزش و پیشنهاد خاصی هم دارید بگید

MRmoon
یک شنبه 15 تیر 1393, 16:06 عصر
از اینکه تاپیکای زیر خاکی رو بالا میارین از شما دوست عزیز ممنونیم!:تشویق:

محمد.

vahidqara
یک شنبه 15 تیر 1393, 16:59 عصر
تو این آموزش قصد دارم نحوه ایجاد 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>




سلام و درود .. دستت طلا برای زحمتی که کشیدید... فک کنم در لینک ها به جای
$row[0] باید نام تابع صدا زده شود
showarticle($page)

H:Shojaei
یک شنبه 15 تیر 1393, 18:10 عصر
ممنون از مطلبتونببخشید فرض کنید یه صفحه HTML داریم که توش متن هامون رو نوشتیم و برای کوتاه تر شدن ارتفاع صفحه میخوایم مطالب رو به 2 صفحه تبدیل کنیم.حالا میخواستم ببینم با این روش میشه این کار رو کرد یا خیر؟(میخوام صفحه دوم توی همون 1 صفحه HTML بارگذاری بشه)امیدوارم منظورم رو رسونده باشم.ممنون میشم راهنمایی بفرمایید یا اگر آموزش و پیشنهاد خاصی هم دارید بگیدسلام چرا که نشه... یه مقدار گت به پیج مربوطه بفرستید که مثلا دفه اول 0 بعد تو پیج با تابع substr() بخشی از متن رو تو اون پیج نمایش میدین یه لینک هم یه جایی میذارید که اون مقدار گت که دارین رو تغییر بده و بگه تا جایی که خونده نه حالا از اون به بعد رو نمایش بده. مثلا: substr($text,$_GET['indexstart'],($text/2);) این کد دقیقا داره متن رو به دو بخش تقسیم میکنه شما فقط باید بدونید مقدار گت رو چی بفرستید که اون هم میشه دفه اول 0 و دفه دوم هم ($text/2)... موفق باشید...

iman_k26
یک شنبه 15 تیر 1393, 18:16 عصر
از اینکه تاپیکای زیر خاکی رو بالا میارین از شما دوست عزیز ممنونیم!:تشویق:

محمد.

چیکار کنم خب سرچ زذم این تاپیک رو آورد منم سوالم رو پرسیدم...

iman_k26
یک شنبه 15 تیر 1393, 20:26 عصر
سلام چرا که نشه... یه مقدار گت به پیج مربوطه بفرستید که مثلا دفه اول 0 بعد تو پیج با تابع substr() بخشی از متن رو تو اون پیج نمایش میدین یه لینک هم یه جایی میذارید که اون مقدار گت که دارین رو تغییر بده و بگه تا جایی که خونده نه حالا از اون به بعد رو نمایش بده. مثلا: substr($text,$_GET['indexstart'],($text/2);) این کد دقیقا داره متن رو به دو بخش تقسیم میکنه شما فقط باید بدونید مقدار گت رو چی بفرستید که اون هم میشه دفه اول 0 و دفه دوم هم ($text/2)... موفق باشید...

ممنون از راهنماییتون...

الان ببینید توی این آدرس (http://cigf.ir/index.aspx?siteid=1&fkeyid=&siteid=1&pageid=212) یه صفحه HTML هست که میخوام جدول رو کاری کنم که بره توی یه صفحه دومی قرار بگیره و پایین متن یه pagination قرار بگیره که وقتی کاربر روی اون زد بگیره صفحه دوم که جدول هست..

اگه امکانش هست یه راهنمایی کنید که دقیقا باید چیکار کنم؟

ممنون