【问题标题】:drop down menu php with condition带有条件的下拉菜单php
【发布时间】:2020-05-19 07:48:30
【问题描述】:

我有一个代码,它有一个输入表面积的表格。 db_connect.php 连接数据库。我正在尝试填充一个下拉列表,条件是表面积大于输入到文本字段中的值的所有值都将显示在文本字段中。但是当我尝试运行代码时,我得到了所有的值。我该如何解决这个问题?提前谢谢!

<html>
    <head>
        <title>hi</title>
    </head>
        <body>

        <form>
            <p> surface area : <input name = "sa" type = "text"> </p>
        <br>
        </form>


        <select name="areas">
                <?php 
                $sa = $_POST['sa'];
               include "db_connect.php";
               $displayArea = "SELECT area FROM details where area > '".$sa."'" ;
               $sql = mysqli_query($link, $displayArea);
               echo "<option> Select </option>";
               while ($row =  mysqli_fetch_assoc($sql))
               {  
                echo "<option value=\"areas\">" . $row['area'] . "</option>";
               }
               ?>
        </select>
 </body>
 </html>

【问题讨论】:

  • 当sa 输入被填写后,您将需要使用ajax 来填充select 列表。
  • 警告:当使用mysqli 时,您应该使用parameterized queries 和bind_param 将任何数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了严重的SQL injection bug。 切勿将$_POST、$_GET或任何类型的数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。
  • 注意:object-oriented interface to mysqli 明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql_query 接口混淆,因为缺少单个i 会导致麻烦。示例:$db = new mysqli(…) 和 $db-&gt;prepare("…") 程序接口是 PHP 4 时代的产物,不应在新代码中使用。
  • 此 PHP 代码在服务器呈现 HTML 时立即运行。 $_POST['sa'] 不存在,直到有内容发布到此页面。正如GluePear所说,使用AJAX解决这个问题,在渲染初始页面后进行二次请求,每次更改sa时,发出新请求。

标签: php html mysql database


【解决方案1】:

首先您需要在表单中添加一个提交按钮。

<input type="submit" value="Submit">

那么如果你使用 POST,你必须将它指定为 Form 方法:

<form method="post">

然后添加:

$sa = $_POST['sa'];
echo("[".$sa."]");

查看是否填充了“sa”。

如果您添加一个值并单击“提交”,您将看到结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多