تالار گفتمان nCIS.ir

نسخه‌ی کامل: جست و جوی پیچیده
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام و عرض ادب و احترام
من یک روزی روی این جست و جو وقت گذاشتم ولی دیوونم کرد
به این کد من نگاه کنین .
خواهشا به عکس هایی که هم میفرستم نگاه کنین .
بهترین کوئزی برای این کد من چی میتونه باشه .
من میخوام :
وقتی طرف فقط شماره بارنامه رو هم نوشت ، اون فیلد بیاره .
یا
هم شماره بارنامه و هم نوع سنگ و هم درجه رو نوشت بره همون رو بیاره .

منظورم اینه که گاهی وقت ها کاربر یکی از فیلد هارو پر میکنه و میخواد که اطلاعات رو جست وجو کنه و گاهی وقتا سه تا فیلد رو پر میکنه و گاهی وقتا 5 تا فیلد رو .
من میخوام هر فیلدی که پر نکرد و یا انتخاب نکرد تاثیری نداشته باشه .
من برای option یه مقداری با 0 وعنوان مهم نبست گذاشتم تا انتخاب نکرد کار نکنه .(همون مقدار صفر رو بفرسته)

خیلی خیلی ممنون


$this->view->alldata=$this->model->sel("select * from `barnameh` where `id`='$id' or `shb` like '%$shb%' or `mine_id`='$mine_id' or `darajeh`='$darajeh' or `vazn` like '%$vazn%' or `ton` like '%$ton%' or `price` like '%$price%' or `time_time` like '%$time_time%' or `driver_id`='$driver_id' or `kerayeh` like '%$kerayeh%' or `salemali_id`='$salemali_id' ");

گاهی وقت ها کاربر میخواد جست و جو فقط بر اساس یک فیلد باشد و گاهی وقت ها میخواهد جست وجو بر اساس چند فیلد باشد.
گاهی وقت ها کاربر میخواد ففط شماره بارنامه رو بزنه و اطلاعات بیاره ولی گاهی وقت ها منخواد تمام ردیف هایی که معدن فلان هستن و درجه فلان هستن و راننده فلان هستن بیاره .
آیا این کار ممکن هستش ؟
احساس میکنم که نتونستم منظورمو برسونم .
بهترین راه برای چنین کاری، اینه که یک شرط عمومی بگذارین که تمام رکوردها رو در بر میگیره و بعد هر فیلتری که اضافه میشه، با AND بهش اضافه کنین تا دامنه‌ی فیلتر رو محدودتر کنه. برای مثال:
$sql = "SELECT * FROM `barnameh` WHERE 1=1";
if (isset($_POST['shb'])) {
    $sql .= "AND `shb` LIKE '%{$_POST['shb']}%'";
}
// ...

نکته: توی مثال بالا کنترل‌های امنیتی درنظر گرفته نشده.