1

最近の投稿を考えすぎて削除しました。うまくいけば、このバージョンはもう少し明確です。

データベーステーブルをフィルタリングできるようにしたい複数選択ドロップダウンがあります。

したがって、次のドロップダウンがあり、約 70 のエントリがあるとします。

<select multiple="multiple" id="filter" name="filter">
  <optgroup label="category1"> <!--jquery ui plugin allows for grouping -->
    <option value="sub1">Subcategory 1</option>
    <option value="sub2">Subcategory 2</option>
    <option value="sub3">Subcategory 3</option>
  </optgroup>
  <optgroup label="category2">
    <option value="sub4">Subcategory 4</option>
    <option value="sub5">Subcategory 5</option>
    <option value="sub6">Subcategory 6</option>

...

そして、SQLステートメントで検索する必要がある6つのカテゴリがあります。これまでのところ、次のとおりです。

<?php
    include ("connect.php");

    $filter = $_POST["filter"];

        $result = mysql_query("SELECT * FROM edt_images
                                WHERE category1= '$filter'
                                OR category2= '$filter'
                                OR category3 = '$filter'
                                OR category4 = '$filter'
                                OR category5 = '$filter'
                                OR category6 = '$filter'")
            or die(mysql_error());
        while ($row = mysql_fetch_array($result)) {
            echo "<img src='files/small/thumb0_".$row['item_name'].".".$row['file_extension']."' border='0'/>"; 
        }
?>

現在、ドロップダウンから項目を 1 つだけ選択すると機能します。これは、そのエントリの 6 つの列を検索するためです。私の質問は、これらの 6 つの列で複数のエントリを検索するにはどうすればよいかということです。

前もって感謝します

4

2 に答える 2

2

filter が選択したカテゴリの配列である場合IN、クエリで使用できます。

$filterIn = implode("','",$filter);

SELECT * FROM edt_images
        WHERE category1 IN ('$filterIn')
        OR category2 IN ('$filterIn')
        OR category3 IN ('$filterIn')
        OR category4 IN ('$filterIn')
        OR category5 IN ('$filterIn')
        OR category6 IN ('$filterIn')

ただし、SQL クエリでサニタイズされていないユーザー入力を使用しないでください。

于 2013-01-08T03:49:15.447 に答える
0

まず、複数選択から複数の値を返すことを許可する必要があります。これを行うには、次のように name 属性に括弧を追加する必要があります。

<select multiple="multiple" id="filter" name="filter[]">
于 2013-01-08T04:00:27.380 に答える