【问题标题】:Get value from MySQL database and populate dropdown box从 MySQL 数据库中获取值并填充下拉框
【发布时间】:2017-09-26 09:00:09
【问题描述】:

我希望有人可以帮助我解决这个问题,因为我是 PHP 和 MySQL 的新手。但基本上,我要做的是从数据库中提取数据并填充下拉框和文本框,这样我就可以更新文本框中的值。

这是表结构:

id | hf_name | hf_price
------------------------
AI | test 1  | 123
AI | test 2  | 123

假设我想更新“测试 1”的价格,我会在下拉选择中选择“测试 1”并更新教科书中的价格。

这是我的代码:

<form class='data_form' action='data/food_update.inc.php' method='post'>
    <select>
        <?php while ($row = mysqli_fetch_array($result)):; ?>
            <option><?php echo $row[1];?></option>
        <?php endwhile;?>
    </select>
    <input type='number' name='hf_price' placeholder='$'>
    <button type='submit'>UPDATE</button>
</form>

包括:

<?php

    //CONNECTION TO MySQL   
    include '../dbh.php';

    //VARIABLES
    $hf_name = $_POST['hf_name'];
    $hf_price = $_POST['hf_price'];
    $by_user = $_SESSION['Fname'];
    $up_date = date('Y-m-d'); 

        $sql = "SELECT hf_name FROM hotfoods";
        $result = mysql_query($conn, $sql);

?>

谢谢!

【问题讨论】:

  • 停止使用已弃用的mysql_* API。使用mysqli_* 或PDO
  • 在您的include 中有mysql_query(),在您的实际代码中有mysqli_fetch_array()。我很确定它们不能一起使用,也许你打错了,意思是 mysql_fetch_array() 没有 i。但正如 Jens 所说,你应该停止使用 mysql_* 函数并切换到 PDO 或 mysqli 之类的东西。
  • 也尝试使用从 0 开始的&lt;?php echo $row['hf_name'];?&gt; PHP 数组,您正试图从索引 1 获取结果,我认为您的 SQL 查询中不存在该结果。
  • 我不想回答包含“想要”这个词的问题。只是'说'。
  • 是的,谢谢您指出这一点。这是一个错字,但即使我使用 mysqli,它仍然给我一个空的下拉框。

标签: php mysql arrays fetch dropdown


【解决方案1】:

尝试将选项更改为

<option value="<?php echo $row[2];?>"><?php echo $row[1];?></option>

我假设 $row[2] 变量包含 hf_price 值。

【讨论】:

  • 我试过这个,但下拉菜单还是空的。我不确定我在这里真正缺少什么。第一列是 id,第二列是 hf_name,第三列是 hf_price。
  • 你的意思是下拉菜单还是空的?
  • 检查代码是否进入while($row = mysqli_fetch_assoc($result){循环。
【解决方案2】:
     $query = "select * from tablename";
       $result = mysqli_query($query);

         <select>
              <?php 
                while($row = mysqli_fetch_assoc($result){
                  ?>
              <option value='<?php echo $row['hf_name']; ?>'><?php echo $row['hf_name']; ?></option>
        <?php
         }
          ?>
       </select>

【讨论】:

    【解决方案3】:

    但为此您需要将 id 数据类型更改为 int,

     $query = "select * from tablename";
       $result = mysqli_query();
    
         <select id="nameID" name="hf_name">
              <?php 
                while($row = mysqli_fetch_assoc($result){
                  ?>
              <option value='<?php echo $row['id']; ?>'><?php echo $row['hf_name']; ?></option>
        <?php
         }
          ?>
       </select>
    

    当您获取详细信息时这会很好,但它不会更新任何值,因为为此您需要使用 Ajax 或 Jquery 来更新 Select,让我尝试一下。

    阿贾克斯

    $("#nameID").onchange(function(){
        var id = $("#id").val();
        $.ajax(
            url: "update.php",
            type: "POST",
            data: {'id'=id},                   
            success: function(){
                   alert("ok");                                    
             });
    });
    

    试试这个可能有用。

    【讨论】:

    • 在我正在处理的网页中,我希望有一个由食物名称(hf_name)填充的下拉框和一个由价格填充的文本框(hf_price),具体取决于名称选择的食物。假设我想更新特定食物的价格,我会从下拉框中选择食物的名称,然后从文本框中更改价格。希望这很清楚吗?谢谢。
    • 更新数据库列?
    • 是的。更新数据库列中的价格(hf_price)。
    • 我已更新答案检查并尝试一下。但必须根据您的要求进行更改。
    【解决方案4】:

    您应该在选择元素上分配一个名称属性值(在本例中为 hf_name),以便它在 $_POST 数组中可用。

    <form class='data_form' action='data/food_update.inc.php' method='post'>
        <select name="hf_name">
            <?php while ($row = mysqli_fetch_array($result)):; ?>
                <option value="<?php echo $row['hf_name']?>"><?php echo $row['hf_name'];?></option>
            <?php endwhile;?>
        </select>
        <input type='number' name='hf_price' placeholder='$'>
        <button type='submit'>UPDATE</button>
    </form>
    

    现在这是提交表单的地方。哪里可以通过$_POST数组获取用户提交的数据。

    <?php
    
        //CONNECTION TO MySQL   
        include '../dbh.php';
    
        //VARIABLES
        $hf_name = $_POST['hf_name'];
        $hf_price = $_POST['hf_price'];
    
        $query = sprintf("UPDATE hotfoods SET hf_price='%d' WHERE hf_name='%s'",
            mysql_real_escape_string($hf_price),
            mysql_real_escape_string($hf_name));
    
        $result = mysql_query($conn, $query);
        if ($result) {
            echo 'Price updated!';
        } else {
            echo 'Problem while updating price';
        }
    
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-08
      • 2015-07-04
      • 1970-01-01
      • 1970-01-01
      • 2012-07-15
      • 1970-01-01
      相关资源
      最近更新 更多