Формирование SQL запроса

voland

Guest
Формирование SQL запроса

Делаю поиск по БД и столкнулся проблемой, никак правильно не составить запрос. Проблема в следующем...

Есть форма с чекбоксами их всего 10 штук, каждому чекбоксу соответствует поле в БД, где в зависимости от помещения оно принимает значения 0 или 1. Человек как то расставил галочки и нажал искать... Далее скрипт получает массив из 0 и 1 Мне надо вставить в запрос только те, у которых значения равны 1

.... AND (test = '1' AND test1 = '1' AND test2 = '1')...

А я никак не могу сделать так, чтобы остались только с 1 и грамотно расставить AND она все время ставиться и в конце или по 2 три раза между!
 

GD

Guest
Ежели мне память не отшибает, то по сабмиту формы тебе приходят только отмеченные чекбоксы...
вот и смотри какие пришли...
 

voland

Guest
Вот именно в этом и проболема...
У меня два массива, в одном имена полей БД , а в другом выбор из чекбокса... В массиве приходят только 1 и пустые значения...
Я делаю проверку на наличие значения переменной и дописываю ее, но я не понимаю как проверить последняя ли это единица!
Ведь если она последняя, то осле неё не надо ставить AND, а если нет то надо!
 

Long

Новичок
измени алгоритм. проверяй перед добавлением - надо ставить and или нет. а вообще способов решения множество...
 

voland

Guest
Именно это я сейчас делаю... как сделаю отпишусь.. :)
 

voland

Guest
Посчитал кол-во единиц и после добавления AND отнимаю 1 .... :) Все решилось просто :))
 

Long

Новичок
все можно было сделать в пределах одного цикла foreach, без предварительного подсчета единиц.
 

Grog

Guest
Вроде такого:

while(что-то)
{
$arr[] = "test(какой-то)=1";
}

$sql = implode(" AND ", $arr);
 

Long

Новичок
Grog, а смысл? не уверен, что так будет быстрее работать...
 

eNik

Guest
Замерить скорость обработки скрипта можно так:

function getMicroTime(){
$mtime = microtime();
$mtime = explode(" ", $mtime);
$mtime = $mtime[1] + $mtime[0];
return ($mtime);
}
$StartTime = getMicroTime();
...........

...........
$EndTime = getMicroTime();
$TotalTime = $EndTime - $StartTime;
echo "Total time: <b>$TotalTime</b>";
 
Сверху