-1

以前に質問しましたが、投稿が不明確だったため閉鎖されました。とにかく、今は明確な方法で質問しようとしています。

私は自動車サービス会社を持っているので、タイヤも販売しています。ウェブサイトでフィルタリング可能な検索方法を作成したいと考えています。たとえば、顧客はすべてのメーカーを検索するように、オプションから特定の値を検索しますが、夏用タイヤが必要です。 、幅150、プロファイルは40、直径は16で、残りはすべてのオプションを選択します。等々...

htmlコード:

<label for="manufacturer"><strong>manufacturer:</strong></label>
                                <select id="manufacturer">
                                    <option selected="selected">All</option>
                                    <option value="option1">BF Goodrich</option>
                                    <option value="option2">Continental</option>
                                    <option value="option3">Michelin</option>
                                    <option value="option4">Pirelli</option>
                                </select>
                            </li>
                            <li>
                                <label for="model"><strong>tyretype:</strong></label>
                                <select id="model">
                                    <option selected="selected">All</option>
                                    <option value="option1">Summer tyre</option>
                                    <option value="option2">winter tyre</option>
                                    <option value="option3">winter tyre 2</option>
                                </select>
                            </li>
                            <li class="select-two">
                                <div>
                                    <label for="min-price"><strong>width:</strong></label>
                                    <select id="min-price">
                                        <option selected="selected">All</option>
                                        <option value="option1">145</option>
                                        <option value="option2">150</option>
                                        <option value="option3">155</option>
                                        <option value="option3">160</option>
                                    </select>
                                </div>
                                <div>
                                    <label for="max-price"><strong>Profil:</strong></label>
                                    <select id="max-price">
                                        <option selected="selected">All</option>
                                        <option value="option1">30</option>
                                        <option value="option2">35</option>
                                        <option value="option3">40</option>
                                        <option value="option3">45</option
                                    </select>                   
                                </div>
                            </li>
                            <li class="select-two">
                                <div>
                                    <label for="min-price"><strong>Diameter:</strong></label>
                                    <select id="min-price">
                                        <option selected="selected">All</option>
                                        <option value="option1">13"</option>
                                        <option value="option2">14"</option>
                                        <option value="option3">15"</option>
                                        <option value="option3">16"</option>
                                        <option value="option3">17"</option>
                                        <option value="option3">18"</option>
                                        <option value="option3">19"</option>
                                    </select>
                                </div>
                                <div>
                                    <label for="max-price"><strong>Maximum load:</strong></label>
                                    <select id="max-price">
                                        <option selected="selected">All</option>
                                        <option value="option1">75</option>
                                        <option value="option2">76</option>
                                        <option value="option3">77</option>
                                        <option value="option3">78</option>
                                        <option value="option3">79</option>
                                        <option value="option3">80</option>
                                        <option value="option3">81</option>
                                        <option value="option3">82</option>
                                        <option value="option3">83</option>
                                        <option value="option3">84</option>
                                    </select>                   
                                </div>
                            </li>

                            <li>
                                <label for="engine"><strong>Maximum speed:</strong></label>
                                <select id="engine">
                                    <option selected="selected">All</option>
                                    <option value="option1">Q = max 160 km/h</option>
                                    <option value="option2">R = max 170 km/h</option>
                                    <option value="option3">S = max 180 km/h</option>
                                    <option value="option3">T = max 190 km/h</option>
                                    <option value="option3">H = max 210 km/h</option>
                                </select>
                            </li>

mysqlデータベースには、次の列を含むtiresというテーブルがあります。

メーカー、タイヤタイプ、幅、長さ、プロファイル、直径、最大荷重、最大速度、タイヤ価格。

上記のすべての検索オプションを含み、mysqlデータベースから情報を正しくフェッチする優れた検索クエリを思い付くことができません。

4

2 に答える 2

0
$sql = "SELECT * FROM tyres WHERE 1==1";

if ($_POST['manufacturer'] != 'ALL'){
   $sql = $sql . ' AND manufacturer==' . $_POST['manufacturer'];
}
if ($_POST['model'] != 'ALL'){
   $sql = $sql . ' AND model==' . $_POST['model'];
}
 //etc etc

したがって、基本的には、必要に応じて WHERE に AND 句のみを追加します。これは、「ALL」以外が選択された場合にのみ発生します。

次のように、デフォルトのすべての選択メニューに値を追加する必要があります。

<select id="manufacturer">
   <option value ="ALL" selected="selected">All</option>
   <option value="option1">BF Goodrich</option>
   <option value="option2">Continental</option>
</select>
于 2013-03-18T23:50:05.210 に答える
-1
$query = mysql_query("SELECT * FROM tyres WHERE manufacturer='".$_POST['manufacturer']."' AND tyretype='".$_POST['tyretype']."' AND ...etc..");

詳細: http://dev.mysql.com/doc/refman/5.0/en/where-optimizations.html 問題がある場合は、ここにいます :)

彼がすべてのオプションを選択した場合、次のような if を作成します。

<?
if ($_POST['tyretype'] == "all") 
{  // then do the same query you can see above without this part "AND tyretype='".$_POST['tyretype']."'"
}
?>
于 2013-03-18T23:46:00.517 に答える