Добрый день, Всем! Есть вопрос: У меня есть база номеров. Для поиска нужного номера я использую несколько полей с помощью формы: Поле номер телефона, город, страна и т.д. То есть допустим, меня интересуют все номера телефонов какого-то города После ввода города, методом POST я все передаю на обработку. Как правильно теперь сделать запрос к БД, чтобы учитывались пустые поля? То есть, у меня остались пустые поля, страна, номер телефона. Если я буду писать следующий запрос: $res = mysql_query (“SELECT tel, country, city FROM my_db WHERE tel = ‘$tel’ and country = ‘$country’ and city = ‘$city’ ”,$db) Я получу пустой результат. Подскажите, пожалуйста, как правильно учитывать пустые значения и в запросе их как-то упускать? Заранее спасибо Всем!
Наверное, правильней было бы спросить: Как правильно проверять присвоено ли значение всем переменным данной формы, и как на основание этого построить потом запрос к БД?
PHP: WHERE tel = '$tel' OR country = '$country' OR city ='$city' http://php.ru/manual/function.empty.html http://php.ru/manual/function.isset.html
Если поле не заполнено, в массиве $_POST его не будет. Обычно проверяют так: PHP: if(isset($_POST['поле'])) { ... И если поле пришло, дописывай что-нибудь в строку запроса.
Но тут есть одно, но в таком запросе, Если я укажу, например какой-то номер, он все равно мне выведет весь список, так как используется логическое или.
Спасибо всем. Да действительно эта конструкция в данном случае самая оптимальная. Но мне пришлось использовать ее вот таким образом: Присваиваю обычной переменой запрос к БД. $res = "SELECT tel, country, city FROM my_db”; А дальше идет проверка, если был ли введен номер телефона: if (isset($tel) && $tel<>"none") { ($res = "$res and tel like '$tel'"); } Была ли выбрана страна: if (isset($country) && $country<>"none") { ($res = "$res and op.country like '$country'"); Что самое интересное, без этого условия работать не будет «&& $хххх<>"none"», так как переменная $tel или $country существуют и при проверки isset всегда принимают значение 1. Спасибо за помощь.