PDA

View Full Version : سوال: چند صفحه ای کردن اطلاعات



rash44
شنبه 02 خرداد 1388, 13:08 عصر
سلام
به چه صورت می تونم اطلاعاتی رو که از بانک بیرون می کشم بصورت چند صفحه ای نمایش بدم ؟
مثلا می خوام توی هر صفحه 10 رکورد نمایش بدم
با این کوئری هم اطلاعات رو واکشی می کنم :
select * from test limit 10
به چه صورت باید اطلاعات رو صفحه بندی کنم ؟

امیـرحسین
شنبه 02 خرداد 1388, 13:55 عصر
فکر کنم همین کافی باشه:

$request_page = ( isset($_GET['page']) && is_numeric($_GET['page']) ) ? $_GET['page'] : 1;
$result_per_page = 10;

$last = $request_page * $result_per_page; // First page: last = 1 * 10 = 10
$first = $last - $result_per_page; // First page: first = 10 - 10 = 0

$sql = "SELECT * FROM table LIMIT $fisrt , $last";

rash44
شنبه 02 خرداد 1388, 18:28 عصر
فکر کنم همین کافی باشه:

$request_page = ( isset($_GET['page']) && is_numeric($_GET['page']) ) ? $_GET['page'] : 1;
$result_per_page = 10;

$last = $request_page * $result_per_page; // First page: last = 1 * 10 = 10
$first = $last - $result_per_page; // First page: first = 10 - 10 = 0

$sql = "SELECT * FROM table LIMIT $fisrt , $last";



این کد رو باید کجا استفاده کنم ؟

امیـرحسین
شنبه 02 خرداد 1388, 18:36 عصر
اون کد اشتباه داشت :چشمک: این کار می کنه:

$request_page = ( isset($_GET['page']) && is_numeric($_GET['page']) ) ? $_GET['page'] : 1;
$result_per_page = 10;
$first = ($request_page * $result_per_page) - $result_per_page; // First page: first = (1 * 10) - 10 = 0

$sql = "SELECT * FROM table LIMIT $first , $result_per_page";

مثلا کاربر میخواد صفحه سوم یا نتایج 20 تا 30 رو ببینه. به آدرس صفحه یه کوئری GET اضافه می کنید مثل این
http://domain/document.html?page=3
وقتی کوئری GET گرفته بشه، اول شماره اولین نتیجه رو باید بدست آورد که میشه :
(شماره صفحه × تعداد) - تعداد
که این عدد 20 رو میده و توسط دستور LIMIT مشخص می کنیم که از مورد 20 تعداد 10 تا میخوایم به همین ترتیب برای بقیه. صفحه اول میشه مورد صفر به تعداد 10 تا.

به صفحه بندی PhpMyAdmin توجه کنید.

arlabbafi
شنبه 02 خرداد 1388, 20:01 عصر
اين كلاسي رو كه مي بيني تو يه فايل php ذخيره كن و در بر نامت require كن



class dbClass
{
var $db;
var $result;
var $result2;
var $result3;
var $allresult;
private $offSet;
private $totalRec;
private $pageSize;
private $pageCount;
private $oldGet;
private $outputPagination="<style type=\"text/css\">
.page{ white-space:\"nowrap\"; color:#000; float:left; height:20px; }
.pagination{font-family:tahoma;margin:0px auto ; height:20px}
.pagination a{display:block;height:8px; background:#999999; border:1px solid gray; float:left; padding:5px; padding-bottom:7px;color:#ffffff;}
.pagination a:hover{background:#00ccff;}
</style>
<table>
<tr class=\"pagination\" valign=\"top\">";
function pagination_OneTable($tableName,$conditions="",$order="",$pageSize=20,$offSet=0,$oldGet="")
{
$this->oldGet=$oldGet;
$cond='';
if($conditions!="")
$cond= " where $conditions ";
$sql = 'select count(*) from '.$tableName.$cond;
//echo '<div dir="ltr">'.$sql.'</div>';
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
$this->totalRec = $row[0];
$this->offSet=$offSet;
$this->pageSize=$pageSize;
$this->pageCount = ceil($this->totalRec/$this->pageSize);
dbClass::query('select * from '.$tableName.$cond." $order LIMIT ".$this->offSet.', '.$this->pageSize);
if(!dbClass::GetRows('select * from '.$tableName.$cond." $order LIMIT ".$this->offSet.', '.$this->pageSize))return false;
}

function showPagination()
{
if($this->pageCount > 1)
{
$pastPage=(($this->offSet)-($this->pageSize));
if($pastPage >= 0){
$this->outputPagination.="
<td><a class=\"page\" href=\"?".$this->oldGet."offSet=".'0'."\"> صفحه اول </a></td>
<td><a class=\"page\" href=\"?".$this->oldGet."offSet=".$pastPage."\"> صفحه قبلي </a> </td>";
}else{
$this->outputPagination.="
<td><a class=\"page\"> صفحه اول </a> </td>
<td><a class=\"page\"> صفحه قبلي </a></td>";
}
$balance=$this->offSet/$this->pageSize;
$baade=(($balance+4)>($this->pageCount))?($this->pageCount):($balance+4);
for($i=(($balance-3)<=0)?'0':($balance-3); $i<$baade; $i++)
{
$isIndex=$this->offSet/$this->pageSize;
$this->outputPagination.='<td><a class="page" href="?'.$this->oldGet.'offSet='.$i*$this->pageSize.'" style=" background-color:'.(($isIndex==$i)?'#00aaff':'').'">'.($i+1).'</a></td>';
}
if(((($this->offSet)/($this->pageSize))+1)<($this->pageCount))
{
$this->outputPagination.="
<td><a class=\"page\" href=\"?".$this->oldGet."offSet=".(($this->offSet)+($this->pageSize))."\"> صفحه بعدي</a> </td>
<td><a class=\"page\" href=\"?".$this->oldGet."offSet=".$this->pageSize*($this->pageCount-1)."\"> صفحه آخر </a> </td>";
}else{
$this->outputPagination.="
<td><a class=\"page\"> صفحه بعدي</a> </td>
<td><a class=\"page\"> صفحه آخر </a> </td>";
}
$this->outputPagination.="
</tr>
</table>";
return $this->outputPagination;
}
}
}


اينجوري استفاده ميشه



require_once "dbClass.php";
$page = new dbClass();
$page->pagination_OneTable('obj',(($srchName!="")?" `obj_Name` LIKE '%$srchName%' $and ":'').(($srchSpec!="")?" `obj_Spec` LIKE '%$srchSpec%' ":''),' ORDER BY `obj_Name` DESC ',20,($_GET['offSet']?$_GET['offSet']:0),"srchName=$srchName&srchSpec=$srchSpec&"))?>
<html>

<?php
while($row = $page->fetchArray()){
?>
.
.
.
<?php
}
?>

<tr>
<td align="center"><?=$page->showPagination()?></td>
</tr>

پارامترهايي كه تابعpagination_OneTable ميگيره نام table و شرايط و مرتب سازي بر حسب فيلد مشخص و ... است بخون ميفهمي

rash44
یک شنبه 03 خرداد 1388, 10:41 صبح
اون کد اشتباه داشت :چشمک: این کار می کنه:

$request_page = ( isset($_GET['page']) && is_numeric($_GET['page']) ) ? $_GET['page'] : 1;
$result_per_page = 10;
$first = ($request_page * $result_per_page) - $result_per_page; // First page: first = (1 * 10) - 10 = 0

$sql = "SELECT * FROM table LIMIT $fisrt , $result_per_page";

مثلا کاربر میخواد صفحه سوم یا نتایج 20 تا 30 رو ببینه. به آدرس صفحه یه کوئری GET اضافه می کنید مثل این
http://domain/document.html?page=3
وقتی کوئری GET گرفته بشه، اول شماره اولین نتیجه رو باید بدست آورد که میشه :
(شماره صفحه × تعداد) - تعداد
که این عدد 20 رو میده و توسط دستور LIMIT مشخص می کنیم که از مورد 20 تعداد 10 تا میخوایم به همین ترتیب برای بقیه. صفحه اول میشه مورد صفر به تعداد 10 تا.

به صفحه بندی PhpMyAdmin توجه کنید.


سلام

برنامه این ارور رو میده :



You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '( , 10) order by `noee`' at line 1


کد برنامه :



$request_page = ( isset($_GET['page']) && is_numeric($_GET['page']) ) ? $_GET['page'] : 1;
$result_per_page = 10;
$first = ($request_page * $result_per_page) - $result_per_page;
$q1="SELECT distinct `name`,`tabiat`,`noee` FROM `mahsol` LIMIT $fisrt , $result_per_page order by `noee`";

امیـرحسین
یک شنبه 03 خرداد 1388, 15:38 عصر
توی دستور SELECT، متغیر first$ بصورت fisrt$ تایپ شده....

ahmadbadpey
یک شنبه 17 خرداد 1388, 16:22 عصر
همه چیز توی این فایل هست :

mohsen60
پنج شنبه 05 شهریور 1388, 10:51 صبح
همه چیز توی این فایل هست :

با سلام

من تو كد مربوط به چند صفحه اي كردن مشكلي ندارم فقط نمي دونم چرا فيلد ها فارسي به صورت علامت سوال مي اد ؟! ميشه كمكم كنيد.

در ضمن مي خوام به جاي يه فيلد يه فيلد ديگه لينك دار هم بياد؟

azade.kazemi33
پنج شنبه 05 شهریور 1388, 11:16 صبح
با سلام

من تو كد مربوط به چند صفحه اي كردن مشكلي ندارم فقط نمي دونم چرا فيلد ها فارسي به صورت علامت سوال مي اد ؟! ميشه كمكم كنيد.


سلام
سرچ می کردی تاپیک در این مورد بود عزیز
ب این سر بزن
http://barnamenevis.org/forum/showthread.php?t=175719

h.alizadeh
چهارشنبه 28 مهر 1389, 14:07 عصر
حالا اگر رشته ی کوئری selectمون متغیر بود یعنی مثلا چندتا دکمه داریم روی هر کدوم که کلیک بشه یک select خاصی بخوایم اجرا بشه که با POSt صفحه متوجه میشم کدوم Select رو میخوایم نمایش بدیم.
حالا اگر بخوایم اینطوری صفحه بندی کنیم

$request_page = ( isset($_GET['page']) && is_numeric($_GET['page']) ) ? $_GET['page'] : 1;
$result_per_page = 10;
$first = ($request_page * $result_per_page) - $result_per_page; // First page: first = (1 * 10) - 10 = 0



خب وقتی صفحه بندی با GEtکار میکنه پس POSTاز بین میره دیگه به نظرشما بعد هر پاست باید رشته ی کوئریSelect رو در سشن ذخیره کرد و در صفحه بندی از سشن خوندش؟

آیا کار درستی هست؟

مثلاً



if(!$_POST || isset($_POST['btnAll']))// avalin bar namayesh kole rows.
$sql="SELECT * FROM `t1` JOIN `t2` ON `t1`.`id`=`t2`.`id`";
elseif(isset($_POST['btnSearch']))
{ if((!empty($_POST['fild0'])) || ($_POST['fild1']!= "-1"))
{
$sql="SELECT * FROM `t1` JOIN `t2` ON `t1`.`id`=`t2`.`id`";
if(!empty($_POST['fild0']))
{
$sql .=" and `t1`.`tt` LIKE '$p'";
}
if($_POST['fild']!= "-1")
{
$sql .=" and `t1`.`gg`='$p'";
}
}
}
حالا این $sqlرو توی سشن بریزیم و در کد صفحه بندی از سشن بخونیم و در متغیر$sqlذخیره کرده و اینجور ی کنیم:

$sql = $sql." LIMIT $first , $result_per_page";
به نظرتون کار اشتباهی هست؟ به نظرتون نباید در سشن ذخیره کرد رشته ی Selectرو؟
چه روشی پیشنهاد میشه؟

امیـرحسین
چهارشنبه 28 مهر 1389, 19:18 عصر
اگر متغیرهای اساسی رو بصورت GET بین صفحات منتقل کنید مثل گوگل امکان لینک کردن صفحات جستجو هم بوجود میاد ولی Session هم میشه البته باپذیرفتن ریسکهاش.

xoogle.ir
چهارشنبه 28 مهر 1389, 21:25 عصر
Session چه ریسکی داره مگه ؟

h.alizadeh
چهارشنبه 28 مهر 1389, 23:11 عصر
خب اگر مثلا متغیرهامون یکم زیاد باشه برای سرچ چی بازم GETکنیم؟
یا وقتی مثلا مقدار متغیرهامون فارسی هست مشکلی نیست یک وقتیGETکنیم؟

امیـرحسین
پنج شنبه 29 مهر 1389, 20:46 عصر
Session چه ریسکی داره مگه ؟
امنیت Session توی سرورهای Share یه جورایی قاطی باقالی‌هاست. میشه به فایلهای Session روی سرور دسترسی پیدا کرد. البته نه به این سادگی ها ولی خب غیرممکن نیست. به همین دلیل هست که هیچوقت اطلاعات حساس کاربر مثل کلمه عبور رو حتی بصورت کدشده در Session قرار نمیدند.
در اون صورت قرار داشتن یک SQL آماده که ساختار دیتابیس رو نشون میده اصلا جالب نیست.


خب اگر مثلا متغیرهامون یکم زیاد باشه برای سرچ چی بازم GETکنیم؟
یا وقتی مثلا مقدار متغیرهامون فارسی هست مشکلی نیست یک وقتیGETکنیم؟
اینترنت اکسپلورر توی طول URI محدودیت داره یعنی نمیشه یک آدرس خیلی بلند رو اجرا کرد. شما باید فقط پارامترهای اصلی دخیل رو منتقل نکنید یعنی اونهایی که کاملا به کاربر بستگی داره نه همه رو.
حتی میتونید پارامترها رو برای خودتون کوتاه کنید مثلا بجای name از n استفاده کنید. مثلا بجای

http://domain.com/search?name=حسن&age=24
اینجوری داشته باشید:

http://domain.com/search?n=حسن&a=24

mohsen6500
دوشنبه 03 آبان 1389, 00:24 صبح
سلام خدا قوت
خیلی بدردم خورد

hamparvaz
دوشنبه 01 فروردین 1390, 14:15 عصر
یک سوال داشتم
دوستان من با دیتابیس کار میکنم اما به صورت مستقیم نیست
یعنی من تمام مطالبم رو داخل یک آرایه ریختم به نام $content
که شامل محتوا+عکس+ چند مورد دیگه هست

حالا من خودم داخل این تمام رکورد هارو ریختم
چطور میتونم $content رو بدم برام صفحه بندی کنه ؟

باتشکر

MMSHFE
دوشنبه 01 فروردین 1390, 14:27 عصر
با سلام، يك نگاه به اين كلاس كه من نوشتم هم بكنيد، فكر كنم بد نباشه.
موفق باشيد.

bnnoor
پنج شنبه 10 آذر 1390, 14:20 عصر
http://www.irandevelopers.com/programming/paging-php-870912-661/

lady64
یک شنبه 30 بهمن 1390, 15:11 عصر
امنیت Session توی سرورهای Share یه جورایی قاطی باقالی‌هاست. میشه به فایلهای Session روی سرور دسترسی پیدا کرد. البته نه به این سادگی ها ولی خب غیرممکن نیست. به همین دلیل هست که هیچوقت اطلاعات حساس کاربر مثل کلمه عبور رو حتی بصورت کدشده در Session قرار نمیدند.
در اون صورت قرار داشتن یک SQL آماده که ساختار دیتابیس رو نشون میده اصلا جالب نیست.


اینترنت اکسپلورر توی طول URI محدودیت داره یعنی نمیشه یک آدرس خیلی بلند رو اجرا کرد. شما باید فقط پارامترهای اصلی دخیل رو منتقل نکنید یعنی اونهایی که کاملا به کاربر بستگی داره نه همه رو.
حتی میتونید پارامترها رو برای خودتون کوتاه کنید مثلا بجای name از n استفاده کنید. مثلا بجای

http://domain.com/search?name=حسن&age=24
اینجوری داشته باشید:

http://domain.com/search?n=حسن&a=24


در مورد اینکه می فرمائید اطلاعات حساس در session بهتره قرار نگیره ، پس برای چک کردن user و pass در صفحات دیگه (برای جلوگیری از ورود کاربر غیرمجاز) باید چکار کرد ؟ من تا حالا اینو راه امنی میدونستم...لطفا راهنمایی کنید راههای بهتر رو...

shahriyar3
یک شنبه 30 بهمن 1390, 15:40 عصر
در مورد اینکه می فرمائید اطلاعات حساس در session بهتره قرار نگیره ، پس برای چک کردن user و pass در صفحات دیگه (برای جلوگیری از ورود کاربر غیرمجاز) باید چکار کرد ؟ من تا حالا اینو راه امنی میدونستم...لطفا راهنمایی کنید راههای بهتر رو...
سشن ها رو توي ديتابيس ذخيره كنيد
آقاي شهركي يك كلاس خيلي خوب براي انجام اين كار توي همين فروم گذاشتن
http://barnamenevis.org/showthread.php?286634-%D8%B0%D8%AE%D9%8A%D8%B1%D9%87-Session-%D8%AF%D8%B1-DB-%D8%A8%D9%87-%D8%AC%D8%A7%D9%8A-%D9%81%D8%A7%D9%8A%D9%84

MMSHFE
یک شنبه 30 بهمن 1390, 16:08 عصر
ضمناً بهتره با هر روشی که سشن رو ذخیره میکنید (فایل یا دیتابیس)، مستقیماً خود نام کاربری و رمز عبور رو توی سشن نگه ندارین. بجاش اگه لاگین موفقیت آمیز بود، یک سشن خاص مثلاً بنام uid درست کنید و مقداری مثل true بهش بدین و توی صفحات دیگه چک کنید اگه وجود داشت و مقدارش true بود یعنی کاربر لاگین کرده. حتی اگه به نام کاربری احتیاج داشتین، میتونید اون رو توی سشن بگذارین ولی تحت هیچ شرایطی توصیه نمیشه که رمز رو توی سشن قرار بدین. حالا چه بصورت خام (بدترین حالت) و چه بصورت کدشده (اندکی ضریب امنیت رو بالاتر میبره).
موفق باشید.

lady64
سه شنبه 09 اسفند 1390, 08:40 صبح
ضمناً بهتره با هر روشی که سشن رو ذخیره میکنید (فایل یا دیتابیس)، مستقیماً خود نام کاربری و رمز عبور رو توی سشن نگه ندارین. بجاش اگه لاگین موفقیت آمیز بود، یک سشن خاص مثلاً بنام uid درست کنید و مقداری مثل true بهش بدین و توی صفحات دیگه چک کنید اگه وجود داشت و مقدارش true بود یعنی کاربر لاگین کرده. حتی اگه به نام کاربری احتیاج داشتین، میتونید اون رو توی سشن بگذارین ولی تحت هیچ شرایطی توصیه نمیشه که رمز رو توی سشن قرار بدین. حالا چه بصورت خام (بدترین حالت) و چه بصورت کدشده (اندکی ضریب امنیت رو بالاتر میبره).
موفق باشید.

من چون این موضوع برام تازگی داره ، باز هم سوال دارم .کلاسی که نوشتید رو خوندم اما درست متوجه هدف نشدم.
شما میفرمائید که session ها در پایگاه ذخیره بشه.در کلاسی که نوشتید ابتدا مقادیر در پایگاه ذخیره میشن و بعد در index.php چک میشه که session تعریف شده یا خیر؟
این session رو شما قبلا کجا تعریف کردید ؟اصلا دلیل ذخیره کردن در پایگاه رو ، در حالی که باز برای چک کردن از session استفاده میشه متوجه نمیشم.
ممنون میشم روال کلی کار رو بگید (توضیح کدها در تاپیک بحث شده ، مجددا زحمت نکشید)

MMSHFE
سه شنبه 09 اسفند 1390, 15:29 عصر
دوست عزیز، متغیرهای سشن در حالت عادی، توی پوشه tmp و در فایلی با نام دامنه و در ادامه، شماره شناسه سشن ذخیره میشن که طبیعتاً اگه کسی دسترسی به پوشه tmp پیدا کنه، میتونه سشنهای سایتهای دیگری رو هم که روی همون هاست قرار دارن، بخونه. برای جلوگیری از چنین مسائلی، کلاسی نوشتم که سشن رو توی دیتابیس ذخیره میکنه و از فایل برای این کار استفاده نمیکنه. تنها تفاوتی هم که توی کد پیش میاد اینه که اول باید یک شئ از کلاسی که گذاشتم ایجاد کنید و بعد از اون، مثل سابق با سشن کار میکنید، با این تفاوت که سشن شما دیگه توی فایل ذخیره نخواهد شد و از دیتابیس برای مدیریت اطلاعات سشن استفاده میشه. موفق باشید.

masato
شنبه 05 فروردین 1391, 01:14 صبح
با سلام
من هر چی در تاپیک ها مربوط به چند صفحه ای کردن اطلاعات نگاه کردم،دیدم همه دارن از یه جدول کل اطلاعاتو چند صفحه ای میکنند.
حالا سوال من اینه که اگه ما بخوایم مثلا اون رکورد های که tapik_id مساوی با 2 رو چند ... کنیم، چی کار باید کرد؟:متفکر:
با تشکر

MMSHFE
شنبه 05 فروردین 1391, 13:10 عصر
میشه بیشتر توضیح بدین؟

masato
شنبه 05 فروردین 1391, 13:23 عصر
سلام
منظورم از چند... ،چند صفحه ای کردنه
مثلا من جدول کتاب ها دارم،که فیلد های id,b_name,cate_id،b_title داره
حالا میخوام مثلا کتابهای کcat_id=2 هست رو به چند صفحه ای نشون بدم؟
مرسی

MMSHFE
شنبه 05 فروردین 1391, 14:03 عصر
خوب آدرس رو اینطوری قرار بدین:
book.php?cid=2
و برای صفحه بندی مطالب این گروه هم این کد رو بنویسید:


$cid = isset($_GET['cid']) ? abs((integer) $_GET['cid']) : 0;
$page = isset($_GET['page']) ? abs((integer) $_GET['page']) : 1;
$per_page = 2;
$start = ($page - 1) * $per_page;
mysql_Connect('localhost', 'root', '') or die('Connection error');
mysql_select_db('dbname') or die('Database error');
mysql_query('SET NAMES \'utf8\'');
$books = mysql_query('SELECT * FROM `books` '.($cid != 0 ? "WHERE (`cate_id`='{$cid}')" : '')." ORDER BY `id` DESC LIMIT {$start},{$per_page}");
if($books && mysql_num_rows($books) > 0) {
while($book = mysql_fetch_assoc($books)) {
echo '<pre style="border: solid thin #000000;">'.PHP_EOL;
print_r($row);
echo '</pre>'.PHP_EOL;
}
}
$pages = mysql_query('SELECT COUNT(*) AS `count` FROM `books`'.($cid != 0 ? "WHERE (`cate_id`='{$cid}')" : ''));
if($pages && mysql_num_rows($pages) == 0) {
$pages_link = ceil(mysql_result($pages, 0, 0) / $per_page);
for($i = 1; $i <= $pages_link; $i++) {
if($i != $page) {
echo '<a href="book.php?'.($cid != 0 ? "cid={$cid}&" : '').'page='.$i.'">['.$i.']</a>';
}
else {
echo '<b>['.$i.']</b>';
}
}
}

همونطور که میبینید، میشه هر شرطی رو به کوئری خودتون اضافه کنید و صفحه بندی، ارتباطی به شرط انتخاب رکوردها نداره و داره فقط با LIMIT کار میکنه. ضمناً این کدی که گذاشتم، باعث میشه صفحه جاری در قسمت شماره صفحات، بصورت پررنگ و ساده ظاهر بشه و لینک نباشه.
موفق باشید.

chn367
دوشنبه 28 فروردین 1391, 13:24 عصر
خوب آدرس رو اینطوری قرار بدین:
book.php?cid=2
و برای صفحه بندی مطالب این گروه هم این کد رو بنویسید:


$cid = isset($_GET['cid']) ? abs((integer) $_GET['cid']) : 0;
$page = isset($_GET['page']) ? abs((integer) $_GET['page']) : 1;
$per_page = 2;
$start = ($page - 1) * $per_page;
mysql_Connect('localhost', 'root', '') or die('Connection error');
mysql_select_db('dbname') or die('Database error');
mysql_query('SET NAMES \'utf8\'');
$books = mysql_query('SELECT * FROM `books` '.($cid != 0 ? "WHERE (`cate_id`='{$cid}')" : '')." ORDER BY `id` DESC LIMIT {$start},{$per_page}");
if($books && mysql_num_rows($books) > 0) {
while($book = mysql_fetch_assoc($books)) {
echo '<pre style="border: solid thin #000000;">'.PHP_EOL;
print_r($row);
echo '</pre>'.PHP_EOL;
}
}
$pages = mysql_query('SELECT COUNT(*) AS `count` FROM `books`'.($cid != 0 ? "WHERE (`cate_id`='{$cid}')" : ''));
if($pages && mysql_num_rows($pages) == 0) {
$pages_link = ceil(mysql_result($pages, 0, 0) / $per_page);
for($i = 1; $i <= $pages_link; $i++) {
if($i != $page) {
echo '<a href="book.php?'.($cid != 0 ? "cid={$cid}&" : '').'page='.$i.'">['.$i.']</a>';
}
else {
echo '<b>['.$i.']</b>';
}
}
}

همونطور که میبینید، میشه هر شرطی رو به کوئری خودتون اضافه کنید و صفحه بندی، ارتباطی به شرط انتخاب رکوردها نداره و داره فقط با LIMIT کار میکنه. ضمناً این کدی که گذاشتم، باعث میشه صفحه جاری در قسمت شماره صفحات، بصورت پررنگ و ساده ظاهر بشه و لینک نباشه.
موفق باشید.

من این کد استفاده کردم ولی نتیجه نگرفتم! مشکلم با ترکیب کردن با کدهای تیبل نمایش داده ها هست! واسه رپیت تیبل و نمایش رکوردها
شماره صفحات زیرش نشون نمیداد!
چندبار دستکاری کردم یکبار فقط آخرین رکورد نشون میداد یکبارهم رکورد آخر به تعداد زیاد که هیچ جای کد نیومده رپیت کرد! در هر حالت شماره صفحات نمایش نداد!

یکبار همین کد تنها استفاده کردم کار کرد ولی شماره صفحات درست نمیزد! لینک صفحه اول page=0 میشد!

میشه راهنمایی کنید؟