MySQL — выпадающее меню для фильтрации результатов в PHP получить все результаты из SQL

У меня есть это выпадающее меню:

<select class="w-select filterdropdown" id="Tipo-de-cocina" name="tipofiltro" data-name="Tipo de cocina">
<?php
if (isset($_GET['tipofiltro'])) {
echo '<option value="' .$filtrocuisine.  '"> '  .$filtrocuisine. "</option>";

} else {
echo '<option value="Todos los tipos">Todos los tipos</option>';
}

?>


<option value="Japonesa">Japonesa</option>
<option value="Mexicana">Mexicana</option>
<option value="India">India</option>
<option value="Mediterranea">Mediterranea</option>
<option value="Italiana">Italiana</option>
<option value="Americana">Americana</option>
<option value="Asiatica">Asiatica</option>
<option value="Thai">Thai</option>
<option value="China">China</option>
<option value="Francesa">Francesa</option>
<option value="Turca">Turca</option>
<option value="Latina">Latina</option>
<option value="Africana">Africana</option>
<option value="Griega">Griega</option>
<option value="Arabe">Arabe</option>


</select>

Как я могу сделать это, когда пользователь выбирает поле «Todos los tipos», мой sql-запрос возвращает все типы? Это sql позади:

if (isset($_GET['preciofiltro']) OR isset($_GET['preciofiltro'])) {
$filtroprecio = $_GET['preciofiltro'];
$filtrocuisine = $_GET['tipofiltro'];

$sql = "SELECT Meals.Meal_ID, Meals.Name, Price, Cooks.Cook_ID
FROM Meals
INNER JOIN Cooks ON Cooks.Cook_ID = Meals.Cook_ID
WHERE Cooks.Area = '$area'
AND Meals.Capacity > 0
AND Meals.Price < '$filtroprecio'
AND Meals.Type = '$filtrocuisine'";

$result = mysqli_query($conn, $sql);

По сути, мне нужно что-то вроде «AND Meals.Type = any»

Ура!

-1

Решение

Ну, есть более простые методы, но без переписывания всего, простой ответ заключается в том, что если пользователь выбирает Todos los tipos из выпадающего списка, что вы действительно хотите сделать, это удалить этот критерий выбора AND Meals.Type = '$filtrocuisine' из запроса полностью, т. е. вы больше не ограничиваете запрос этими критериями.

Так что измените ваш сценарий так:

Я, конечно, предполагаю, что вы взяли данные из $_GET массив, проверил его и очистил, прежде чем мы перейдем к этому коду.

if (isset($_GET['preciofiltro']) OR isset($_GET['preciofiltro'])) {
$filtroprecio = $_GET['preciofiltro'];
$filtrocuisine = $_GET['tipofiltro'];

$sql = "SELECT Meals.Meal_ID, Meals.Name, Price, Cooks.Cook_ID
FROM Meals
INNER JOIN Cooks ON Cooks.Cook_ID = Meals.Cook_ID
WHERE Cooks.Area = '$area'
AND Meals.Capacity > 0
AND Meals.Price < '$filtroprecio'";

if ( isset($filtrocuisine) && $filtrocuisine == 'Todos los tipos' ) {
$sql .= " AND Meals.Type = '$filtrocuisine'";
}

$result = mysqli_query($conn, $sql);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]