Я пытаюсь настроить базовый поиск MySQL LIKE, используя два поля поиска. Я не хочу иметь это, так что это несколько необязательных полей поиска, например if(isset($_POST['city']) || isset($_POST['name']))
Я не уверен, как это сделать с помощью HTML <select name=""><option value="">...
видя, поскольку вы не можете определить имя для каждого поля <select>
. Итак, сначала … Как вы создаете MySQL <select>
search, где каждый дает свой собственный результат? Затем, как правильно запросить несколько вариантов поиска? Ниже я использую «текстовое поле» + <select>
search.
<input type="text" name="type" /> <select name="location"> <option value="Chicago">Chicago</option> <option value="New York">New York</option> </select> <input type="submit" value="Search" />
MySQL:
$query = "SELECT name, type, description, location, zip_code, phone_number FROM search WHERE type LIKE '%$type%' OR location LIKE 'Chicago' OR location LIKE 'New York' ";
Я знаю, что я делаю что-то неправильно в предложениях OR. Я не совсем уверен, как правильно выполнить поисковый запрос тега <option> / <select>
HTML-формы.
HTML
<select multiple name="location[]" size="2">
PHP
$w = array(); $where = ''; foreach ($_POST['location'] as $loc){ $loc = mysql_real_escape_string($loc); $w[] = "location = '$loc'"; } if (!empty($_POST['type'])){ $w[] = "type LIKE '%".mysql_real_escape_string($_POST['type'])."%'"; } if ($w) $where = implode(' OR ',$w);
Я не уверен, что вы хотите, но попробуйте это:
PHP:
// mysql escape $locations = array_map("mysql_real_escape_string", $_POST['location']); // add locations to query string $locations = implode("','",$location); $query = "SELECT name, type, description, location, zip_code, phone_number FROM search WHERE location IN ('$locations') "; if (isset($_POST['type']) && !empty($_POST['type'])){ $query .= " or type LIKE '%".mysql_real_escape_string($_POST['type'])."%'"; }