PDA

View Full Version : مشکل با limit در جستجو



saeed-71
چهارشنبه 24 اردیبهشت 1393, 20: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, 22:28 عصر
کسی نمیدونه ؟!

***BiDaK***
پنج شنبه 25 اردیبهشت 1393, 23:25 عصر
کدو کامل نذاشتی.احتمال میدم توو صفحات بعدی check$ وجود نداره.

saeed-71
جمعه 26 اردیبهشت 1393, 13:06 عصر
کدو کامل نذاشتی.احتمال میدم توو صفحات بعدی check$ وجود نداره.
ممنون.کد کامله.$check رو نمیخونه درسته اما چرا؟خوب وقتی $page=2 میشه دوباره همین فرایند رو با limti بعدی اجرا میکنه.اما چرا تو دفعات بعد $check اجرا نمیشه؟!

Mohammadsgh
جمعه 26 اردیبهشت 1393, 18:42 عصر
ببخشید کاربرد LIMIT چیه؟

bikran
جمعه 26 اردیبهشت 1393, 21:15 عصر
LIMIT محدوده اي كه مد نظر داريد رو نشون ميده . مثلا

SELECT * FROM tbl LIMIT 5;
باعث ميشه بجاي اينكه يكباره كل جدول گرفته بشه 5 سطر از جدول گرفته بشه . در سرعت سايتتون خيلي تاثير داره و دستور زير

SELECT * FROM tbl LIMIT 5,10;
باعث ميشه MySQL از سطر پنجم ، ده خونه بره جلو و تا سطر پانزدهم رو برگردونه .6 تا 15 .

Mohammadsgh
جمعه 26 اردیبهشت 1393, 22:41 عصر
ممنون خیلی جالب و باحال بود

MMSHFE
شنبه 27 اردیبهشت 1393, 14: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, 13: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).'">&laquo; اولین</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).'">آخرین &raquo;</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, 15:47 عصر
حل شد.تشکر.