PHP: <? $sql = "SELECT nazvanie from uchastok_dorogi"; $rs = mysql_query($sql); while($row = mysql_fetch_object($rs)) { $uchastok_dorogi .= '<option value="' . $row->nazvanie . '">' . $row->nazvanie . '</option>'; } ?> <? $sql = "SELECT n_brigada from brigada"; $rs = mysql_query($sql); while($row = mysql_fetch_object($rs)) { $brigada .= '<option value="' . $row->n_brigada . '">' . $row->n_brigada . '</option>'; } ?> <table> <form action="qwer.php" method="POST"> <td>На участке ж/д:</td> <td><select name="uchastok_dorogi"> <option value="FALSE"></option> <?= $uchastok_dorogi; ?> </select></td> </tr> <tr> <td>Предрейсовый обход выполняла бригада:</td> <td><select name="brigada"> <option value="FALSE"></option> <?= $brigada; ?> </select></td> </tr> <tr> <td colspan="2"><input type="submit" value="Занести в базу" name="submit" ></td> </tr> </form> </table> PHP: <?php include("connect.php");?> <? $a=$_POST['uchastok_dorogi']; $b=$_POST['brigada']; $sql = mysql_query("SELECT * FROM otkaz WHERE `uchastok_dorogi`='$a' AND `brigada`='$b'" ,$db); echo ("<table border ='1'>"); echo ("<tr><td>На участке ж/д</td><td>Предрейсовый обход выполняла бригада</td></tr>"); while ($tablerows = mysql_fetch_row($sql)) { echo(" <tr> <td>$tablerows[1]</td> <td>$tablerows[2]</td> </tr> "); } echo "</table>"; mysql_close($db); ?> Возожно ли такое? Т.е. если я выбираю 1 и 2 ом списках значения то выборка пойдет, а вот если я выбиру только в 1 списке, а во втором не будет выбранно ничего, то что присоиться второму??? по моему мнению $b=FALSE, тогда как будет вести себя запрос??? Он просто не будет брать 2 значение в конструкции WHERE `uchastok_dorogi`='$a' AND `brigada`='$b' или же он приствоит WHERE `uchastok_dorogi`='qwerty' AND `brigada`='FALSE', и соответсвенно в запросе не найдет строки со значениями |uchastok_dorogi | brigada | ----------------------------------- | qwerty | FALSE | и не выведит ничего. Можно ли создать такой сложный поиск? когда присутствую множество выпадающих списков, и не всегда их значения полностью выбраны?
Думаю такая проверка тебе поможет PHP: <?php if($b == 'FALSE') { $brigada_sql = ''; } else { $brigada_sql = ' AND brigada='.$b; } $sql = "SELECT * FROM otkaz WHERE `uchastok_dorogi`='$a'".$brigada_sql; ?> для первого списка - аналогично только AND понадобится при 2-х выбранных значениях, значит для нее тоже отдельную переменную.
PHP: <?include ("connect.php");?> <? $sql = "SELECT nomer from elektrovoz"; $rs = mysql_query($sql); while($row = mysql_fetch_object($rs)) { $elektrovoz .= '<option value="' . $row->nomer. '">' . $row->nomer. '</option>'; } ?> <? $sql = "SELECT name1,name2 from OU_names "; $rs = mysql_query($sql); while($row = mysql_fetch_object($rs)) { $names .= '<option value="' . $row->name1 . '">' . $row->name2 . '</option>'; } ?> <? $sql = "SELECT nazvanie from depo"; $rs = mysql_query($sql); while($row = mysql_fetch_object($rs)) { $depo .= '<option value="' . $row->nazvanie . '">' . $row->nazvanie . '</option>'; } ?> <? $sql = "SELECT nazvanie from uchastok_dorogi"; $rs = mysql_query($sql); while($row = mysql_fetch_object($rs)) { $uchastok_dorogi .= '<option value="' . $row->nazvanie . '">' . $row->nazvanie . '</option>'; } ?> <? $sql = "SELECT n_brigada from brigada"; $rs = mysql_query($sql); while($row = mysql_fetch_object($rs)) { $brigada .= '<option value="' . $row->n_brigada . '">' . $row->n_brigada . '</option>'; } ?> <? $sql = "SELECT n_smena from smena"; $rs = mysql_query($sql); while($row = mysql_fetch_object($rs)) { $smena .= '<option value="' . $row->n_smena . '">' . $row->n_smena . '</option>'; } ?> <table> <form action="sql.php" method="POST"> <tr> <td>Электровоз:</td> <td><select name="as"> <option value="FALSE"></option> <?= $elektrovoz; ?> </select></td> </tr> <tr> <td>Тип:</td> <td><input type="tip" name="bs"></td> </tr> <tr> <td>Отказавший узел:</td> <td><select name="cs"> <option value="FALSE"></option> <?= $names; ?> </select></td> </tr> <tr> <td>Допушен в рейс из депо:</td> <td><select name="ds"> <option value="FALSE"></option> <?= $depo; ?> </select></td> </tr> <tr> <td>На участке ж/д:</td> <td><select name="es"> <option value="FALSE"></option> <?= $uchastok_dorogi; ?> </select></td> </tr> <tr> <td>Предрейсовый обход выполняла бригада:</td> <td><select name="fs"> <option value="FALSE"></option> <?= $brigada; ?> </select></td> </tr> <tr> <td>Во время отказа эксплуатировала бригада:</td> <td><select name="gs"> <option value="FALSE"></option> <?= $smena; ?> </select></td> </tr> <tr> <td colspan="2"><input type="submit" value="Вывести" name="submit" ></td> </tr> </form> </table> <? $a=$_POST['as']; $b=$_POST['bs']; $c=$_POST['cs']; $d=$_POST['ds']; $e=$_POST['es']; $f=$_POST['fs']; $g=$_POST['gs']; if($a == 'FALSE') {$electro_sql = ''; } else {$electro_sql = ' AND `elektrovoz`='.$a; }; if($b == 'FALSE') {$tip_sql = ''; } else {$tip_sql = ' AND `tip`='.$b; } if($c == 'FALSE') {$ou_sql = ''; } else {$ou_sql = ' AND `otkazavshyi_uzel`='.$c; } if($d == 'FALSE') {$depo_sql = ''; } else {$depo_sql = ' AND `depo`='.$d; } if($e == 'FALSE') {$uch_sql = ''; } else {$uch_sql = ' AND uchastok_dorogi='.$e; } if($f == 'FALSE') {$brigada_sql = ''; } else {$brigada_sql = ' AND brigada='.$f; } if($g == 'FALSE') {$smena_sql = ''; } else {$smena_sql = ' AND smena='.$g; } $sql = mysql_query("SELECT * FROM otkaz WHERE `sql`='NULL' ".$electro_sql.$tip_sql .$ou_sql .$depo_sql .$uch_sql .$brigada_sql .$smena_sql, $db); echo ("<table border ='1'>"); echo ("<tr><td>Параметр 1</td><td>Параметр 2</td><td>Параметр 3</td><td>Параметр 4</td><td>Параметр 5</td><td>Параметр 6</td><td>Параметр 7</td></tr>"); while ($tablerows = mysql_fetch_row($sql)) { echo(" <tr> <td>$tablerows[1]</td> <td>$tablerows[2]</td> <td>$tablerows[3]</td> <td>$tablerows[4]</td> <td>$tablerows[5]</td> <td>$tablerows[6]</td> <td>$tablerows[7]</td> </tr> "); } echo "</table>"; mysql_close($db); ?> Как парвильно объявить запрос? PHP: $sql = mysql_query("SELECT * FROM otkaz WHERE `sql`='NULL' ".$electro_sql.$tip_sql .$ou_sql .$depo_sql .$uch_sql .$brigada_sql .$smena_sql, $db); вот так вот написаол, но не работает!
Выведи PHP: <?php echo $sql и посмотри. Не забывай, что между условиями (если их >=2) должны обязательно стоять логические операторы, отделенные от условий пробелами. и после WHERE не должно идти никакого логического оператора. [/b]
Для отладки делай так. PHP: <?php $sql = "SELECT * FROM otkaz WHERE `sql`='NULL' ".$electro_sql.$tip_sql .$ou_sql .$depo_sql .$uch_sql .$brigada_sql .$smena_sql; var_dump($sql); $result = mysql_query($sql) || die(mysql_error());
с запросом вроде бы разобрался! Вот встала такая проблема, некоторые поля у меня содержут - или _ или пробелы! В запросе не беруться, т.е. мне надо написть включение как то так PHP: where `tip`='asd-asd' сейчас же у меня такая ситуация PHP: where `tip`=asd-asd PHP: if($b == 'FALSE') {$tip_sql = ''; } else {$tip_sql = ' AND `tip`='.$b; } как это правильно подправить, а то у меня он хватает PHP: if($b == 'FALSE') {$tip_sql = ''; } else {$tip_sql = ' AND `tip`=''.$b'; } как ошибку!