Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте.
Подскажите пожалуйста реализацию выборки по разным параметрам.
Вот часть кода, работает корректно если выбраны оба селекта.
Как сделать что бы работал только второй фильтр(host_type) если первый(host_name) не выбран?
send_data.php
Отредактированно cro (15.02.2013 05:55:15)
Неактивен
Можно собирать строку $q1 "по кусочкам".
то есть сначала $q1 = "SELECT * FROM main_data";
А потом уже, если $_POST[host_name] не пустой, то добавляйте к $q1 соотв. условие WHERE.
Неактивен
Будьте добры, напишите пример.
Неактивен
$query = "SELECT * FROM `main_data` WHERE TRUE ";
if ( isset($_POST['host_type']) ) {
$query .= " AND `host_type` LIKE '" . mysql_real_escape_string($_POST['host_type']) . "' ";
}
if ( isset($_POST['host_name']) ) {
$query .= " AND `host_name` LIKE '" . mysql_real_escape_string($_POST['host_name']) . "' ";
}
Неактивен
Данные php скрипту передаются через ajax -
Неактивен
Не-не-не, Дэвид Блейн...
Не
$q1=mysql_query("SELECT * FROM `main_data` WHERE TRUE ");
а
$q1 = "SELECT * FROM `main_data` WHERE TRUE ";
Потом дополняем $q1 условиями, если в $_POST есть данные нужные.
И только потом уже делаете mysql_query($q1);
и так далее.
Еще, кстати, насчет:
$q1 .= " AND `host_type` LIKE '$_POST[host_type]' ";
Массив $_POST является ассоциаитвным, я бы понял, если бы Вы туда обращались $_POST['host_type']
или
$host_type = 'ЧТО_НИБУДЬ_В_ДУХЕ_ХОСТ_ТАЙП';
$_POST[$host_type]
А Ваша запись - не уверен, что она корректна.
Так что пишите лучше
$q1 .= " AND `host_type` LIKE '" . $_POST['host_type'] "'";
Ну а еще лучше, конечно, оборачивать строковые переменные, передаваемые базе в mysql_real_escape_string
Неактивен
Спасибо за помощь, вот так работает.
Отредактированно cro (16.02.2013 00:10:48)
Неактивен