0

我正在创建一个肉类包装搜索表单,用户可以使用多个表单和下拉框搜索不同的包装。我有很多问题,但现在大部分都已排序,我只需要为下拉框创建“任何”搜索以及显示所有结果的空文本框的问题。

目前,当用户发送搜索时,他们可能已经在其他一些文本框中输入了内容,但是当其中一个表单为空时,会自动显示所有结果。我想要它,所以当发送搜索并且框为空时,代码会忽略该表单并仅检查其中包含信息的表单。

这是我的测试代码(不是我当前的最终表单代码):

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

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

$descrip = mysql_real_escape_string($_POST['descrip']);

$sql = "SELECT * FROM delyn WHERE description LIKE '%" . $descrip . "%'";

$r_query = mysql_query($sql);

if ($descrip === "")
{
    echo 'Null value';
}

while ($row = mysql_fetch_array($r_query))
{
    echo '<br /> Description: ' . $row['description'];
}

?>
</body>

有人对如何阻止这种情况有任何想法吗?

编辑:对不起,这是我的带有搜索框的 HTML。上面的 php 只是发送值的地方。

<body>
    <form action="form5null.php" method="post">
        <label for="description">Description:</label> <input type="text" name="descrip">
        <br>
        <label for="trayheight">Trayheight:</label> <input type="text" name="height">
        <br>
        <label for="traywidth">Traywidth:</label> <input type="text" name="width">
        <br>
        <label for="traydepth">Traydepth:</label> <input type="text" name="depth">
        <br>
        <label for="trayrange">Trayrange:</label> <select name="trayrange">
            <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="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 &amp; 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="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>
4

2 回答 2

0

您是否尝试通过仅检查值是否为空白/空(适用于 PHP)来限制您的 SQL 查询,如果没有填写则不运行查询?

例如(伪代码)

if(box1.HasText || box2.HasText || box3.HasText)
{
    RunTheSqlForForm1();
}
于 2012-10-09T10:25:32.883 回答
0

将以下内容作为第一个选项添加到所有下拉列表中:

<option value="*">All</option> 

然后使用我在您的重复问题中提供的 SQL:

如果在下拉列表中单击,使 SQL 忽略特定的搜索值?

Dirk Nachbar 也给出了很好的答案。

于 2012-10-09T13:53:55.380 回答