PDA

View Full Version : درخواست راهنمایی برای نوشتن کوئری



maryam.20
جمعه 23 فروردین 1392, 18:34 عصر
سلام به همه دوستان. :لبخندساده:
من میخوام یه کوئری بنویسم که برام کار سرچ رو انجام بده، یعنی دیتا ها از فرمی میاد که تحت عنوان سرچ هست و این یعنی میتونه بعضی فیلد ها خالی باشه.
مشکل اینجاست که اگه همه فیلدها رو پرنکنم اونها رو با صفر یکی میکنه مثلن وزن رو صفر درنظر میگیره و جستجو میکنه. من میخوام اگه کاربر فیلدی رو پرنکرد با "همه موارد" یکی باشه! یعنی اگه وزن خالی بود روی وزن حساس نشه و بره همه کالاها با همه وزنهارو لیست کنه اگر هم فیلدی پر بود چک کنه با فیلد مربوطش.
وقتی هم از عملگر مقایسه ای "<=" یا ">=" استفاده میکنم بدون توجه به هیچ شرطی میره همه کالا هارو برام لیست میکنه میاره. :افسرده:

فرم جستجو:




<form action="search.php" method="post">

لیست انتخابی:
<select name="select1">
<option value="1">Item 1</option>
<option value="2">Item 2</option>
<option value="3">Item 3</option>
</select><br>
فیلد اول: <input name="field1" type="text"><br>
قیمت : از <input name="min_gheimat" type="text"> تا <input name="max_gheimat" type="text"><br>
ابعاد: از <input name="min_metr" type="text"> تا <input name="max_metr" type="text"> <br>
مساحت: از <input name="min_masahat" type="text"> تا <input name="max_masahat" type="text"><br>
وزن: از <input name="min_vazn" type="text"> تا <input name="max_vazn" type="text"> <br>
<input type="submit" value="جستجو" />
</form>






کوئری




mysql_query("
SELECT * FROM `kala`
WHERE (select1 = '{$_POST['select1']}')
AND (field1 = '{$_POST['field1']}')

OR (gheimat > '{$_POST['min_gheimat']}'
AND gheimat < '{$_POST['max_gheimat']}')

OR (metr > '{$_POST['min_metr']}'
AND metr < '{$_POST['max_metr']}')

OR (masahat > '{$_POST['min_masahat']}'
AND masahat < '{$_POST['max_masahat']}')

OR (vazn > '{$_POST['min_vazn']}'
AND vazn < '{$_POST['max_vazn']}')
");

MMSHFE
جمعه 23 فروردین 1392, 22:59 عصر
فلسفه وجود OR رو توی شرطها نمیدونم چون معمولاً در جستجوی پیشرفته، وقتی یک عامل مشخص میشه، یعنی باید درکنار سایر عوامل وجود داشته باشه و این یعنی AND نه OR و بر همین اساس، کد زیر کار شما رو راه میندازه:


<?php
$query = "SELECT * FROM `kala` WHERE ('1'='1'";
if(isset($_POST['select1'])) {
$query .= " AND `select1` = '{$_POST['select1']}'";
}
if(isset($_POST['field1'])) {
$query .= " AND `field1` = '{$_POST['field1']}'";
}
if(isset($_POST['min_gheimat'])) {
$query .= " AND `gheimat` >= '{$_POST['min_gheimat']}'";
}
if(isset($_POST['max_gheimat'])) {
$query .= " AND `gheimat` <= '{$_POST['max_gheimat']}'";
}
if(isset($_POST['min_masahat'])) {
$query .= " AND `masahat` >= '{$_POST['min_masahat']}'";
}
if(isset($_POST['max_masahat'])) {
$query .= " AND `masahat` <= '{$_POST['max_masahat']}'";
}
if(isset($_POST['min_vazn'])) {
$query .= " AND `vazn` >= '{$_POST['min_vazn']}'";
}
if(isset($_POST['max_vazn'])) {
$query .= " AND `vazn` <= '{$_POST['max_vazn']}'";
}
$query .= ")";
mysql_query($query);
?>