使用 PHP 从 MySQL DB 更新 HTML 组合框
Posted
技术标签:
【中文标题】使用 PHP 从 MySQL DB 更新 HTML 组合框【英文标题】:Updating an HTML combo box from MySQL DB using PHP 【发布时间】:2013-07-10 17:10:09 【问题描述】:在这里需要一些帮助。这是我正在开发的一个非常简单的网络应用程序,但只是需要一些帮助。
这是设置。我有一个带有一个组合框的 html 表单。我只需要使用名为“supplier”的 mysql 表中的条目来更新此组合框。此表“供应商”的输入是通过我已经设置的我网站上的另一个表单。我需要帮助从表“供应商”自动更新此组合框。请让我知道它的php代码。我也包含了我的代码。提前致谢!我也包含了 html 表单。
【问题讨论】:
这段代码有什么问题吗?在while循环之前放置 提示:更改您的数据库连接到此:$con = mysql_connect("localhost","user","pass") or die('Could not connect: ' . mysql_error()); mysql_select_db("rtgs", $con) or die('Could not select database');
然后将此代码放在一个单独的文件(connect.php)中,并将其包含在您需要连接到数据库的每个页面的顶部与include('connect.php');
【参考方案1】:
替换你的代码
$result = mysql_query("SELECT supplier FROM supplier");
while($row = mysql_fetch_array($result))
/*echo '<form action="">';*/
echo "<select name='supplier'>";
echo "<option value = '$row[supplier]'>""</option>";
echo "</select>";
与
$result = mysql_query("SELECT supplier FROM supplier");
echo "<select name='supplier'>";
while($row = mysql_fetch_assoc($result))
echo "<option value = '".$row[supplier]."'>".$row[supplier]."</option>";
echo "</select>";
【讨论】:
我一直不明白为什么我们使用以下代码:echo "" ;我理解了第一部分,即 echo "。但是为什么我们要包含额外的 .$row[supplier]. @vjrngn,额外的 $row[supplier] 用于显示给用户的 SELECT 框中的文本。如果您不写第二个,则 SELECT 框显示为空白 代替我页面上的组合框,这就是 get : "; while($row = mysql_fetch_assoc($result)) echo ""; echo ""; ?> 我已经编辑了我的原始帖子并添加了我在编辑代码后得到的输出。看看 这是你发给我的代码。我刚刚更新了它.. 但仍然没有运气:”; while($row = mysql_fetch_assoc($result)) echo ""; 回声“”; ?>【参考方案2】:所以,
有什么问题?当在另一个屏幕上输入供应商的新条目时,您的脚本是否不起作用,或者您是否希望更新一个屏幕上的活动组合框?
好的,一些提示:
-
“选择”标签应放在循环之外。
将列名放入“
为选项添加显示值
所以,不用检查:
/*echo '<form action="">';*/
echo "<select name='supplier'>";
while($row = mysql_fetch_array($result))
echo "<option value = '".$row["supplier"]."'>".$row["supplier"]."</option>";
echo "</select>";
【讨论】:
我只想在另一个屏幕上输入供应商的新条目时更新一个活动组合框。 :) 真的吗?那将是奇怪的 AJAX 东西!【参考方案3】:你的问题在这里:
$result = mysql_query("SELECT supplier FROM supplier");
while($row = mysql_fetch_array($result))
/*echo '<form action="">';*/
echo "<select name='supplier'>";
echo "<option value = '$row[supplier]'>""</option>";
echo "</select>";
您正在 mysql 数据循环内创建下拉框(Select
)。正如@Hitesh 所解释的那样。您需要在循环之外创建它,并且只回显其中的数据结果。例如:
$result = mysql_query("SELECT supplier FROM supplier");
echo "<select name='supplier'>";
while($row = mysql_fetch_array($result))
echo "<option value=".$row['supplier'].">".$row['supplier']."</option>";
echo "</select>";
这将输出您的下拉框,其中包含您的所有供应商名称作为值和显示的文本选项。
如果您尝试执行以下操作:
$result = mysql_query("SELECT supplier FROM supplier");
while($row = mysql_fetch_array($result))
/*echo '<form action="">';*/
echo "<select name='supplier'>";
echo "<option value = '$row[supplier]'>""</option>";
echo "</select>";
您最终会得到与数据库中的供应商一样多的下拉框。这是因为您正在为找到的每条记录创建一个新的 Select
框。
此外,如果不指定 option
标记之间的第二个 $row['supplier']
,您最终会得到一个空白(空)下拉框。
希望这会有所帮助。
【讨论】:
是的,我知道了@LokiSinclair :) 谢谢.. 但我仍然没有得到我想要的。我正在发布正在发生的事情的屏幕截图。【参考方案4】:这里是完整的代码:
PHP 代码:
<?php
// select box open tag
$selectBoxOpen = "<select name='supplier'>";
// select box close tag
$selectBoxClose = "</select>";
// select box option tag
$selectBoxOption = '';
// connect mysql server
$con = mysql_connect("localhost","user","pass");
if (!$con)
die('Could not connect: ' . mysql_error());
// select database
mysql_select_db("rtgs", $con);
// fire mysql query
$result = mysql_query("SELECT supplier FROM supplier");
// play with return result array
while($row = mysql_fetch_array($result))
$selectBoxOption .="<option value = '".$row['supplier']."'>".$row['supplier']."</option>";
// create select box tag with mysql result
$selectBox = $selectBoxOpen.$selectBoxOption.$selectBoxClose;
?>
HTML 代码:
<form action="ntxn.php" method="post">
<table>
<tr>
<td>Supplier Name:</td>
<td>
<?php echo $selectBox;?>
</td>
</tr>
<tr>
<td>Bill No. :</td>
<td><input type ="text" name="billno"/></td>
</tr>
<tr>
<td>Bill Date : </td>
<td><input type="date" name="billdate"/></td>
</tr>
<tr>
<td>Bill Amount : </td>
<td><input type="text" name="billamt"/></td>
</tr>
<tr>
<td>NEFT / RTGS No. :</td>
<td><input type="text" name="rtgs"/></td>
</tr>
<tr>
<td><input type="submit" name="Save"/></td>
</tr>
</table>
</form>
【讨论】:
以上是关于使用 PHP 从 MySQL DB 更新 HTML 组合框的主要内容,如果未能解决你的问题,请参考以下文章
AJAX 使用从 PHP 生成的 HTML 调用的函数更新 MYSQL 数据库
使用 php 从 SQL DB 获取值并在 HTML5 中使用