2013-04-13 2 views
0

У меня есть комбинация поиска текстовых полей и выпадающего меню. Как это сделать, если ничего не выбрано (первые параметры) Команда mysql select не выбирает это как значение и не фильтрует что-либо вниз этим значением?drop down not selected - dont filter mysql php

select * from table where A like '$A' AND B='$B' AND C='$C' 
+0

как насчет построения вашего sql, включая только значения, которые нужно искать/сравнивать? – Twisted1919

ответ

1
$query="select * from table where 1"; 

if(isset($A)&&!empty($A)) 
$query.=" AND A='".$A."'"; 

if(isset($B)&&!empty($B)) 
$query.=" AND B='".$B."'"; 

if(isset($C)&&!empty($C)) 
$query.=" AND C='".$C."'"; 

mysql_query($query); 
+1

Это работало для меня как шарм. Просто нужно немного редактирования, например: после 'A =; B =; C =;' вам нужно положить '' ', так что это похоже на A = '" 'И вместо! Empty ($ A) я использовал $ A! == "firstoption" – Cypho

+0

да хороший улов, отредактировал мой ответ –

0

Простой:

$b = isset($_POST['b']) ? mysql_real_escape_string($_POST['b']) : 'b'; 

Если выпадающий был выбран и не по умолчанию, а затем использовать это значение в запросе. Если нет, то просто сделайте запрос B=B, который всегда будет правдой.

+0

Насколько я понимаю, я просто определяю $ b как это и оставляю мой запрос один, и он будет делать то, что мне нужно? Если это так, тогда хорошо, но я получил erro 'Parse error: синтаксическая ошибка, неожиданная ';'' в полосе, где я помещаю ваш код – Cypho

+0

woops. Прости. опечатка. окончательный '?' должен быть ':'. –

0

Прежде всего: обратите внимание на свою грамматику немного больше, задавая вопросы, поскольку я лично нахожу ваш вопрос немного нечетким и трудным для понимания.

Но если я правильно понимаю ваш вопрос и что, на мой взгляд, самое чистое и читаемое, просто проверьте, не выбрано ли что-либо в вашем javascript или PHP-коде и используйте два оператора select вместо одного ,

Первый быть только простой

SELECT * FROM table; 

и второй из которых является оператор выбора, который делает фильтр.