【问题标题】:An "Any" option for HTML dropdown forms that can search a SQL database?可以搜索 SQL 数据库的 HTML 下拉表单的“任何”选项?
【发布时间】:2012-10-09 07:20:58
【问题描述】:

我正在创建一个搜索表单,该表单使用多个表单从包含肉类包装信息的数据库中获取匹配结果。我最终希望用户能够使用表单来搜索包裹的宽度、长度、类型、形状和描述。仅显示匹配结果。

目前我有 3 个下拉框,所有的工作都可以找到匹配的结果。不幸的是,它们似乎完全覆盖了其他表单术语(另一个问题),但我想添加一个“任何”功能,这样用户就可以搜索任何内容,而不必每次都对所有下拉框进行特定搜索,从而限制结果的数量那将会出现。

HTML 代码:

    <body>


    <form action="form3.php" method="post"> 
    <label for ="toolcode">Toolcode: </label> 
    <input type="text" name="term" /><br />
    <label for ="delyncode">Delyn code: </label>
    <input type="text" name="term" /><br />
    <label for ="description">Description: </label>
    <input type="text" name="term" /><br />
    <label for ="traysize">Traysize: </label>
    <input type="text" name="term" /> <br />
    <label for ="trayheight">Trayheight: </label>
    <input type="text" name="term" /> <br /> 
    <label for ="traywidth">Traywidth: </label>
    <input type="text" name="term" /> <br />
    <label for ="traydepth">Traydepth: </label>
    <input type="text" name="term" /> <br />

         <label for="trayrange">Trayrange: </label>
                <select name="trayrange">
                    <option value="Other">--Any--</option>
                    <option value="BBQ">BBQ</option>
                    <option value="Dessert">Dessert</option>
                    <option value="Display">Display</option>
                    <option value="Meat">Meat</option>   
                    <option value="Microwave">Microwave</option>
                    <option value="Party">Party</option>
                    <option value="Salad/Wet Pasta">Salad/Wet Pasta</option>
                    <option value="Snacks">Snacks</option>
                    <option value="Standard">Standard</option>
                </select>

        <label for ="traytype">Traytype: </label> 
                <select name="traytype">
                    <option value="Other">--Any--</option>
                    <option value="Open">Open</option>
                    <option value="Cavitised">Cavitised</option>
                    <option value="Lid">Lid</option>
                    <option value="Tray">Tray</option>
                    <option value="Coallition">Coallition</option>
                    <option value="Bowl">Bowl</option>
                    <option value="Hinge pack">Open</option>
                    <option value="Pot">Pot</option>
                    <option value="Base & Lid">Base and Lid</option>
                    <option value="Rectangular">Rectangular</option>
                    <option value="Specalist">Specialist</option>
                </select><br />

        <label for="trayshape">Trayshape: </label>
                <select name="trayshape">
                    <option value="Other">--Any--</option>
                    <option value="Rectangular">Rectangular</option>
                    <option value="Oval">Oval</option>
                    <option value="Square">Square</option>
                    <option value="Insert">Insert</option>
                    <option value="Round">Round</option>
                    <option value="Open">Open</option>
                </select><br />
        <input type="submit" value="Submit" /> 
    </form> 

      </body>

我上面的当前“任何”选项只是一个测试。它不起作用,没有结果显示。

PHP 代码:

       <body>

        <?php
            $con = mysql_connect ("localhost", "root", "");
                   mysql_select_db ("delyn_db", $con);

            if (!$con)
                { 
                    die ("Could not connect: " . mysql_error());
                }

            $varRange = $_POST['trayrange'];
            $varType = $_POST['traytype'];
            $varShape = $_POST['trayshape'];
            $term = mysql_real_escape_string($_POST['term']);    

    $sql = "SELECT * FROM delyn WHERE toolcode LIKE '%".$term."%' AND delyncode LIKE
                   '%".$term."%' AND description LIKE '%".$term."%' AND traysize LIKE
                   '%".$term."%' AND trayheight LIKE '%".$term."%' AND traywidth LIKE
                   '%".$term."%' AND traydepth LIKE '%".$term."%' AND trayrange LIKE
                   '%".$varRange."%' AND traytype LIKE '%".$varType."%' AND trayshape LIKE
                   '%".$varShape."%' ";


            $r_query = mysql_query($sql);


        while ($row = mysql_fetch_array($r_query))
                    { 
               echo '<br /> Delyn code:  ' .$row['delyncode']; 
           echo '<br /> Tool Code:   '.$row['toolcode'];
           echo '<br /> Description: '.$row['description']; 
           echo '<br /> Tray range   '.$row['trayrange']; 
           echo '<br /> Tray type:   '.$row['traytype'];
           echo '<br /> Tray size:   '.$row['traysize']; 
           echo '<br /> Tray height: '.$row['trayheight']; 
           echo '<br /> Tray width:  '.$row['traywidth']; 
           echo '<br /> Tray depth:  '.$row['traydepth'];
           echo '<br /> Tray shape:  '.$row['trayshape'] . '<br />' . '<br />'; ;  
                    }


        ?>
            </body>

我需要添加什么以允许用户搜索允许任何“托盘范围”、“托盘形状”和“托盘类型”。这在理论上应该显示与输入信息的表单相匹配的结果。

提前感谢任何可以提供帮助的人。

【问题讨论】:

    标签: php sql


    【解决方案1】:

    为不同的文本字段使用不同的名称,否则它们将被覆盖,即最后一个文本在服务器端得到首选,您将获得托盘宽度,因为它是最后一个名称为 term

    【讨论】:

    • 我已经设法解决了覆盖问题,现在搜索返回与用户选择相关的结果。我不太清楚如何使下拉菜单上的“任何”搜索起作用,我设法做到了,这样当用户单击“任何”时,它只返回使用其他表单中的关键字进行的搜索。但这返回了所有结果:(
    • 而不是 AND 在查询中使用 OR 将检查用户的任何选项
    • 我对它们中的每一个都进行了试验,但我不能完全正确,它只是让整个数据库显示出来。
    • 当用户在托盘形状选择框中选择任何内容时,我无法获得它,它应该通过考虑剩余的所有选择来显示所有类型的托盘,用户是否必须输入所有文本框选项
    • 总体而言,搜索应该能够处理用户的搜索非常详细,并且只显示少量结果。或者它应该处理非常广泛的搜索,这些搜索会显示大量结果(例如在 Dropbox 中进行任何搜索)。
    猜你喜欢
    • 2013-06-02
    • 2013-01-24
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 1970-01-01
    相关资源
    最近更新 更多