0

由于固定值,我已经完成了一些数据库规范化并为产品表制作了一个外国产品类型表。现在我遇到了一些 php 表单问题。

我正在尝试工作:添加产品并制作产品类型选项(下拉列表中的产品类型)并仅将产品类型 ID 存储到产品记录中。

我的桌子:

产品(产品名称、产品类型)

产品类型(产品类型id,产品类型

  • 谢谢你支持我!我仍然无法让下拉项目在表单中工作,并且当仅给出并提交产品名称时,我收到消息“1 record addedError: No database selected”这导致新记录的产品类型为空白。

producttype 表数据库中有两条记录应显示在下拉菜单中。我更新的代码如下

<?php
// connection with database
include('connect.php');

// check page request
if (isset($_POST["submit"])){

// query insert to product
$sql="INSERT INTO product (productname, producttype)
VALUES('$_POST[productname]','$_POST[producttype]')";

if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo "1 record added";

// query select from producttype
$query="SELECT producttypeid, producttype FROM producttype";
$result = mysql_query($query) or die ("Error: " . mysql_error());

// store options in array
$product_types = array();
while (list($id, $name,) = mysql_fetch_row($result))
{
$product_types[$id] = $name;
}
// safety against cross-site scripting 
function h($str)
{
return htmlentities($str, ENT_QUOTES, "UTF-8");
}
}?>

<!-- html input form !-->
<html>
<body>
<form action="addproduct.php" method="post">
<input type="hidden" name="submit" value="1">
Productname: <input type="text" name="productname"></br>
Producttype: <select>
<?php foreach($product_types as $id => $label): ?>
<option value="<?php echo h($id); ?>"><?php echo h($label); ?></option>
<?php endforeach; ?>
</select></br>
<input type="submit">
</form>
</body>
</html>
4

1 回答 1

0

<option><select>. 要在选择菜单中显示所有产品类型,您需要将选项存储在一个数组中:

$product_types = array();
while (list($id, $name,) = mysql_fetch_row($result))
{
    $product_types[$id] = $name;
}

然后显示选项:

<select>
    <?php foreach($product_types as $id => $label): ?>
        <option value="<?php echo h($id); ?>"><?php echo h($label); ?></option>
    <?php endforeach; ?>
</select>

h函数用于转义输出,以便您的代码不会受到跨站点脚本的攻击:

function h($str)
{
    return htmlentities($str, ENT_QUOTES, "UTF-8");
}
于 2013-11-04T16:04:00.933 回答