PDA

View Full Version : مشکل با خالی بودن یکی از فیلد ها موقع جستجو



saeed-71
دوشنبه 09 تیر 1393, 19:33 عصر
سلام.
دوستان اگر فیلد اول من یعنی $name خالی باشه مو قع جستجو کویری سلکت من با


AND `mobile` = ':mobile' AND `email` = ':email'

شروع میشه.منطورم اینکه اگه یکی از فیلد ها خالی باشه این and مشکل ساز میشه.چیکارش کنم؟
این کویری من


$check = '';
$name = check_Post($_POST['name']);
$mobile = check_Post($_POST['mobile']);
$email = check_Post($_POST['email']);
$ostan = check_Post($_POST['ostan']);
$shahr = check_Post($_POST['shahr']);


if(!empty($name)) {
$check=" AND `name` LIKE '%:name%' ";
}
if(!empty($mobile)) {
$check.=" AND `mobile` = ':mobile' ";
}
if(!empty($email)) {
$check.=" AND `email` = ':email' ";
}
if(!empty($shahr)) {
$check.=" AND `shahr` = ':shahr' ";
}
if($ostan!='0') {
$check.=" AND `ostan`=':ostan'";
}


$sql = $connect->prepare("SELECT * FROM `user` WHERE($check) ORDER BY `id`");
$sql->execute(array(
":name"=>$name,
":mobile"=>$mobile,
":email"=>$email,
":ostan"=>$ostan,
":shahr"=>$shahr,
));

2undercover
دوشنبه 09 تیر 1393, 19:36 عصر
متغیر check رو به یک آرایه تغییر بده و اون AND هارو از اول اون کوئری ها رو بردار و هر بار اون شرط رو به آرایه اضافه کن و در نهایت با استفاده تابع implode و با استفاده از کلمه ی AND همه ی اون شرط ها رو به هم بچسبون.

engmmrj
دوشنبه 09 تیر 1393, 22:47 عصر
query که نوشتی from نداره !

shpegah
سه شنبه 10 تیر 1393, 08:33 صبح
مقدار اولیه check رو 1 بذارید بجای ''

saeed-71
سه شنبه 10 تیر 1393, 09:31 صبح
مقدار اولیه check رو 1 بذارید بجای ''
ممنون جواب داد.اما این یک چیکار میکنه که درست میشه؟!!

2undercover
سه شنبه 10 تیر 1393, 09:38 صبح
ممنون جواب داد.اما این یک چیکار میکنه که درست میشه؟!!

خوب وقتی شما یک شرط رو می نویسید یا درست هست که میشه true یا 1 یا اینکه غلط هست و میشه false یا 0. وقتی اون 1 رو اول کوئری میزارید یعنی اون قسمت از شرط همیشه درست هست.