【问题标题】:echo statement with php array带有 php 数组的 echo 语句
【发布时间】:2016-09-23 01:07:05
【问题描述】:

我只是刚刚进入 PHP 编码。我知道我可能拥有的不是最佳实践,但我的问题是

如何在 echo 语句中创建表单的选择部分。

我正在尝试使用 mysqli_fetch_array 从数据库中选择行。

我想遍历数据库的每一行并创建表单的选择部分,以便每个选择都有一个与 vendor_id 对应的值,并且我希望选择打印出供应商的名称供用户使用选择。

最后,我希望获得类似于我发布的图片的内容,而无需对供应商信息进行硬编码。

<HTML>
<?php 

# keep the sensitive information in a separated PHP file.
include 'dbinfo.php';

$con=mysqli_connect($server,$user,$pass,$dbname)
     or die("<br>Cannot connect to DB\n");

session_start();
$row = $_SESSION['row'];

$query = " SELECT * FROM VENDOR group by vendor_id";
$result = mysqli_query($con,$query);



echo "<a href=\"CPS5920_employee_login.php\">Employee logout</a>";
echo "<br>";
echo "<font size=4><b>Add products</b></font>";
echo "<br>";


echo "<form name='input' action='CPS5920_product_insert.php' method='post' >
<br> Product Name: <input type='text' name='product_name' required='required'>
<br> description: <input type='text' name='description' required='required'>
<br> Cost: <input type='text' name='cost' required='required'>
<br> Sell Price: <input type='text' name='sell_price' required='required'>
<br> Quantity: <input type='text' name='quantity' required='required'><br>";

while($venrow = mysqli_fetch_array($result, MYSQLI_ASSOC)){
   echo " Select vendor: <SELECT>
   <option value = $venrow['vendor_id']> $venrow['name']</option>
   </SELECT>";
}

#ignore this echo. it is hardcoded at the moment
echo "<br><input type='hidden' name='employee_id' value= '2'>
<br><input type='submit' value='Submit'>
</form>";


mysqi_close($con);

?>
</HTML>

【问题讨论】:

  • 您希望在更改选择框时动态填充表单?您可能需要为此使用 xmlhttprequest。
  • 创建页面时,我希望能够引用数据库,检查我的供应商,并使这些供应商可选择选项。如果数据库发生变化,我希望页面是动态的,因为下次我打开它时,它将包含新的供应商作为选项。
  • 您不必回显所有 HTML。您可以简单地编写它并将任何 PHP 放在 PHP 标记中,即

标签: php mysql echo


【解决方案1】:

我认为这个问题很简单。 OP 只想用来自数据库的供应商填充&lt;select&gt;&lt;/select&gt; 字段。并且当添加新供应商并且用户访问表单时,供应商字段将更新为新添加的供应商。


只是想指出:

  • 将 &lt;select&gt;&lt;/select&gt; 放在您的 while 循环之外。
  • 还要确保您正确连接到数据库。
  • Concat妥妥的
  • 您在运行提供的代码时是否收到任何错误?
  • 你的表名真的都是大写的吗? VENDOR?请记住,MySQL 是case sensitive。

<select name="vendor">

    <?php

        $query = "SELECT * FROM VENDOR group by vendor_id";
        $result = mysqli_query($con, $query);

        while($venrow = mysqli_fetch_array($result)){
            echo '<option value="'.$venrow['vendor_id'].'">'.$venrow['name'].'</option>';
        }

    ?>

</select>

【讨论】:

  • 非常明确的答案。实际上昨晚想出了解决方案,但忘了编辑。我的问题是 concat 和 select 标签。目前连接到一个不是我自己的数据库,所以我没有权限编辑名称等。表名都是大写的,是的。无论如何,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-22
  • 2011-11-24
相关资源
最近更新 更多