View Full Version : مشکل با limit در جستجو
saeed-71
چهارشنبه 24 اردیبهشت 1393, 21:46 عصر
سلام.
بنده وقتی از limit در سلکت کردن در حالت معمولی استفاده میکنم درست جواب میده مثل زیر
$counter=9;
$page =Check_Get($_GET['page']);
if($page=='') $page=1;
$start=($page-1)*$counter;
$sql = "SELECT * FROM `table` WHERE (`flag`='1' AND `edit`='0') ORDER BY `id` DESC LIMIT $start,$counter ";
ما وقتی میخوام در جستجو استفاده کنم و با چند مورد همزمان جستجو کنم لیمیت میاد از صفر تا عدد مورد نطر رو سلکت میکنه اما بقیع موارد رو تو صفحات بعد نشون نمیده
مثلا باید 9 مورد سلکت بشه.6 تا تو صفحه اول بقیش تو صفحات بعد نمایش داده بشه میاد 6تا رو تو صفحه اول رو نشون میده اما صفحات بعد و بقیه موارد رو نشون نمیده!
$counter=3;
$page =Check_Get($_GET['page']);
if($page=='') $page=1;
$start=($page-1)*$counter;
if($berand!='0') {
$check=" AND `berand`= '$berand'";
}
if($model!='0') {
$check=" AND `model`='$model'";
}
if($ostan!='0') {
$check=" AND `ostan` = '$ostan'";
}
if($tsakht!='0') {
$check=" AND `tsakht` >= '$tsakht'";
}
if($tsakhtend!='0') {
$check=" AND `tsakht` <='$tsakhtend'";
}
$sql = "SELECT * FROM `table` WHERE (`flag`='1' AND `edit`='0' $check) ORDER BY `id` DESC LIMIT $start,$counter";
saeed-71
پنج شنبه 25 اردیبهشت 1393, 23:28 عصر
کسی نمیدونه ؟!
***BiDaK***
جمعه 26 اردیبهشت 1393, 00:25 صبح
کدو کامل نذاشتی.احتمال میدم توو صفحات بعدی check$ وجود نداره.
saeed-71
جمعه 26 اردیبهشت 1393, 14:06 عصر
کدو کامل نذاشتی.احتمال میدم توو صفحات بعدی check$ وجود نداره.
ممنون.کد کامله.$check رو نمیخونه درسته اما چرا؟خوب وقتی $page=2 میشه دوباره همین فرایند رو با limti بعدی اجرا میکنه.اما چرا تو دفعات بعد $check اجرا نمیشه؟!
Mohammadsgh
جمعه 26 اردیبهشت 1393, 19:42 عصر
ببخشید کاربرد LIMIT چیه؟
bikran
جمعه 26 اردیبهشت 1393, 22:15 عصر
LIMIT محدوده اي كه مد نظر داريد رو نشون ميده . مثلا
SELECT * FROM tbl LIMIT 5;
باعث ميشه بجاي اينكه يكباره كل جدول گرفته بشه 5 سطر از جدول گرفته بشه . در سرعت سايتتون خيلي تاثير داره و دستور زير
SELECT * FROM tbl LIMIT 5,10;
باعث ميشه MySQL از سطر پنجم ، ده خونه بره جلو و تا سطر پانزدهم رو برگردونه .6 تا 15 .
Mohammadsgh
جمعه 26 اردیبهشت 1393, 23:41 عصر
ممنون خیلی جالب و باحال بود
MMSHFE
شنبه 27 اردیبهشت 1393, 15:48 عصر
ممنون.کد کامله.$check رو نمیخونه درسته اما چرا؟خوب وقتی $page=2 میشه دوباره همین فرایند رو با limti بعدی اجرا میکنه.اما چرا تو دفعات بعد $check اجرا نمیشه؟!
نه اینطور نیست. وقتی روی لینک صفحه بعد کلیک میکنید، به روش GET به صفحه بعد منتقل میشین و آرایه POST_$ خالیه چون فرم دوباره سابمیت نشده. برای حل مشکل، باید لینکهای رفتن به صفحات مختلف رو بصورت فرم در بیارین و این لینکها، دکمه های سابمیت باشن. مثلاً بجای لینک رفتن به صفحه 2 باید اینطوری کد بنویسید:
echo '<form action="?page=2" id="form2" method="post">' . PHP_EOL;
if($berand != 0) { echo '<input name="berand" type="hidden" value="' . $berand . '" />' . PHP_EOL; }
if($model != 0) { echo '<input name="model" type="hidden" value="' . $model . '" />' . PHP_EOL; }
if($ostan != 0) { echo '<input name="ostan" type="hidden" value="' . $ostan . '" />' . PHP_EOL; }
if($tsakht != 0) { echo '<input name="tsakht" type="hidden" value="' . $tsakht . '" />' . PHP_EOL; }
if($taskhtend != 0) { echo '<input name="taskhtend" type="hidden" value="' . $taskhtend . '" />' . PHP_EOL; }
echo '<input type="submit" value="2" />' . PHP_EOL;
echo '</form>' . PHP_EOL;
saeed-71
شنبه 14 تیر 1393, 14:10 عصر
وب الان من باید برا هر پیج این کار رو انجام بدم؟!
نمیشه برا همشون یه جا انجام داد؟
اون تابع صفحه بندیم اینه
فک کنم من باید $check رو به ادامه لینک ها اضاف کنم.
function paging($total, $limit, $current_page, $link=':id:', $distance=3){
$total_page = $total / $limit;
if (is_float($total_page)) $total_page = ceil($total_page);
$result = '<li><a title="'.$current_page.'" href="'.str_replace(':id:', $current_page, $link).'" class="disabled">'.$current_page.'</a></li>'.PHP_EOL;
for ($i = $current_page+1; $i <= $current_page+$distance; $i++)
if ($i <= $total_page)
$result .= '<li><a title="'.$i.'" href="'.str_replace(':id:', $i, $link).'">'.$i.'</a></li>'.PHP_EOL;
for ($i = $current_page-1; $i >= $current_page-$distance; $i--)
if ($i >= 1)
$result = '<li><a title="'.$i.'" href="'.str_replace(':id:', $i, $link).'">'.$i.'</a></li>'.PHP_EOL.$result;
if ($current_page-$distance > 2)
$result = '<li> ... </li>'.PHP_EOL.$result;
if ($current_page+$distance < $total_page-1)
$result = $result.'<li> ... </li>'.PHP_EOL;
if ($current_page > 1) {
$previous = $current_page - 1;
$result = '<li><a title="'.$previous.'" href="'.str_replace(':id:', $previous, $link).'">قبلی</a></li>'.PHP_EOL.$result;
}
if ($current_page < $total_page) {
$next = $current_page + 1;
$result = $result.'<li><a title="'.$next.'" href="'.str_replace(':id:', $next, $link).'">بعدی</a></li>'.PHP_EOL;
}
if ($current_page-$distance > 1)
$result = '<li><a title="1" href="'.str_replace(':id:', '1', $link).'">« اولین</a></li>'.PHP_EOL.$result;
if ($current_page+$distance < $total_page)
$result = $result.'<li><a title="'.$total_page.'" href="'.str_replace(':id:', $total_page, $link).'">آخرین »</a></li>'.PHP_EOL;
return '<div class="page"><ul>'.PHP_EOL.$result.'</ul>'.PHP_EOL/*.'<div>تعداد کل صفحات : <strong>'.$total_page.'</strong> صفحه</div>'.PHP_EOL*/.'</div>';}
saeed-71
شنبه 14 تیر 1393, 16:47 عصر
حل شد.تشکر.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.