|
|
|
| Здравствуйте. У меня возникла следующая проблема: при разработке алгоритма поиска в БД MySQL необходимо учесть все возможные сочетания из 18 критериев поиска. Писать для каждого сочетания, к примеру 0-ый, 5-ый и 9-ый, отдельный IF достаточно муторно, и я решил все строки для IF генерить в зависимости от заданного в форме поиска сочетания критериев.
for ($i=0;$i<=17;$i++)
{
if (($a[$i]!="Не важно")&($a[$i]!="no"))
{
$c[$i]="(\$b[".$i."]==\$a[".$i."])";
}
elseif (($a[$i]=="Не важно")or($a[$i]=="no"))
{
$c[$i]="(\$b[".$i."]!=\$a[".$i."])";
}
}
$s="( ";
for ($i=0;$i<=17;$i++)
{
if ($c[$i]!="")
{
if ($i==17) $s.=$c[$i];
elseif ($i<17) $s.=$c[$i]." & ";
}
}
$s.=" )";
if (($s)==true) include("search3.php");
|
Вся строчка условий собирается в переменной $s и имеет вид:
( ($b[0]==$metro1) & ($b[1]!=$type1) & ($b[2]!=$street) & ($b[3]!=$name) & ($b[4]!=$phone) & ($b[5]!=$house) & ($b[6]!=$korp) & ($b[7]!=$beer) & ($b[8]!=$kofe) & ($b[9]!=$second) & ($b[10]!=$vine) & ($b[11]!=$icecream) & ($b[12]!=$vhod) & ($b[13]!=$page) & ($b[14]!=$kitchen) & ($b[15]!=$show1) & ($b[16]!=$dop) & ($b[17]!=$smoke) )
|
Видно, что из формы передается в скрипт один критерий - 0-ой. По нему и происходит сравнение значений для записи из БД, заранее записанных в массив $b[], и значений переменных, полученных из формы.
Но вот не задача...
if ($s===true) include("search3.php");
| не срабатывает. Подскажите как мне строку такого вида передать в виде аргумента в IF. | |
|
|
|
|
|
|
|
для: Uncle
(25.12.2005 в 21:17)
| | Так не пройдёт - вам необходимо выполнить код, а для этого лучше воспользоваться функцией eval()
<?php
eval("<?php
if ($s) include("search3.php");
?>");
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(26.12.2005 в 02:00)
| | Спасибо за подсказку, только не заработало.
eval("if ($s) require(\"search3.php\");");
|
| |
|
|
|
|
|
|
|
для: Uncle
(26.12.2005 в 02:39)
| | А... у нас же символы $ не экранированы в $s - прогоните содержимое перемнной через функцию str_replace()
<?php
$s = str_replace("$","\\$",$s);
eval("if ($s) require(\"search3.php\");");
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(26.12.2005 в 13:33)
| | Огромное спасибо. Очень помог. Все теперь работает. Не досмотрел я за экранированием. | |
|
|
|