[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: как создать поиск по бд по отмеченным флажкам...
Brajt
как надо создавать поиск по бд если одни флажки могут быть отмечены, другие нет? могут быть отмечены все или вообще ни одного... для каждого случая писать отдельный запрос в базу - будет очень много кода и при увеличении числа флажков, такой код возрастет многократно... как такая задача решается?



Спустя 11 минут, 44 секунды (10.10.2011 - 13:30) killer8080 написал(а):
что то типа такого
$checkboxes = array('check1', 'chek2', 'check3'); // массив имен чекбоксов
$checked = array();
$sql = "SELECT * FROM `table`";
foreach($checkboxes as $checkbox){
if(!empty($_POST[$checkbox]))
$checked[] = '`'.$checkbox.'`=1';
}
if($checked)
$sql.= ' WHERE '.implode(' && ', $checked);


PS исправил, была ошибка

Спустя 18 минут, 14 секунд (10.10.2011 - 13:48) Brajt написал(а):
пока не очень понимаю код, пойду тренироваться)

Спустя 3 минуты, 20 секунд (10.10.2011 - 13:51) killer8080 написал(а):
а чё там понимать. В цикле проверяем существование переменных в посте и динамических генерим sql запрос. В итоге получиться запрос вида
SELECT * FROM `table`  WHERE `check1`=1 && `check2`=1 && `check3`=1

Спустя 21 минута, 11 секунд (10.10.2011 - 14:13) Brajt написал(а):
$result = mysql_query("SELECT `id`, `login`, `avatars` FROM `users` WHERE `pol`='$pol'");

if (isset($_POST['s_foto'])){
$result.= AND `avatars`>'0';
}
if (isset($_POST['v_online'])){
$result.= AND `online_now`>'0';
}


- как-нибудь так можно сделать? если да, то как написать правильно?

Спустя 18 минут, 36 секунд (10.10.2011 - 14:31) killer8080 написал(а):
можно так
$sql = "SELECT `id`, `login`, `avatars` FROM `users` WHERE `pol`='".$pol."'";
if (isset($_POST['s_foto'])){
$sql.= " AND `avatars`>'0'";
}
if (isset($_POST['v_online'])){
$sql.= " AND `online_now`>'0'";
}
$result = mysql_query($sql);

Спустя 31 минута, 36 секунд (10.10.2011 - 15:03) Brajt написал(а):
все понял, спасибо) работает)) сначала создается строка запроса и только потом делать сам запрос к базе... сижу в шоке. целый год делал запрос одновременно с построением строки запроса. сколько кода можно было писать проще... спасибо большое:)

Спустя 9 минут, 14 секунд (10.10.2011 - 15:12) killer8080 написал(а):
Цитата (Brajt @ 10.10.2011 - 15:03)
все понял, спасибо) работает)) сначала создается строка запроса и только потом делать сам запрос к базе...

А что можно иначе? blink.gif

Спустя 9 минут, 37 секунд (10.10.2011 - 15:22) Brajt написал(а):
на видео уроках Попова научился работать с бд в виде
$result = mysql_query("SELECT `id`, `login`, `avatars` FROM `users` WHERE `pol`='$pol'"); 

- часто из-за этого делал по несколько запросов, когда можно было обойтись одним...

теперь понимаю что правильно как ты написал, легче...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.