0

データベースの正規化を行い、固定値のため、product テーブルを外部の producttype テーブルにしました。今、いくつかのphpフォームの問題に遭遇しました。

私は仕事をしようとしています: 製品を追加し、producttype オプション (プルダウン リストからの producttypes) を作成し、producttypeid のみを製品レコードに保存します。

私のテーブル:

製品(製品名、製品タイプ)

producttype (producttypeid、producttype

  • 私をサポートしてくれてありがとう!それでもフォームでプルダウン項目を機能させることができず、製品名のみを指定して送信すると、「1 レコードが追加されましたエラー: データベースが選択されていません」というメッセージが表示され、製品タイプが空白の新しいレコードが作成されます。

producttype テーブル データベースには、プルダウンに表示されるはずの 2 つのレコードがあります。私の更新されたコードは次のとおりです

<?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