-1

私はこのドロップダウンを持っています:

<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」のようなものが必要です

乾杯!

4

1 に答える 1

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);
于 2015-09-24T15:28:22.870 に答える