由于固定值的原因,我做了一些数据库规范化,并为producttype表创建了一个外部producttype表,现在遇到了一些php表单问题。
我试图使工作:添加一个产品,并做出一个producttype选项(产品类型从下拉列表),并只存储产品的产品记录。
我的桌子:
产品(产品名称,产品类型)
producttype (producttypeid,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>发布于 2013-11-04 16:04:00
在您的<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");
}https://stackoverflow.com/questions/19771673
复制相似问题