PHP スクリプトを機能させるのに問題があります。このコードは、製品をデータベースに追加するフォームを処理します。
コードで考えられる問題を探してみましたが、完全に迷っています。コードを書き直そうとしましたが、何らかの理由で何も機能していないようです。私は間違いなく何かが欠けています。
コードは次のとおりです。
<form action="" method="post">
<table width="436" border="0px">
<tr class="even">
<td width="132"><label for="title">title</label></td>
<td width="333"><input type="text" size="40px" name="title" value="" /></td>
</tr>
<tr class="odd">
<td><label style=" text-align:top" for="icon_description">short description</label></td>
<td><textarea name="icon_description" rows="2" cols="30"></textarea></td>
</tr>
<tr class="even">
<td height="95"><label for="full_description">full description</label></td>
<td><textarea name="full_description" cols="30" rows="6"></textarea></td>
</tr>
<tr class="odd">
<td><label for="category">category</label></td>
<td><select name="category" >
<?php
foreach(get_categories() as $category)
{
?>
<option value="<?php echo $category['id']; ?>"> <?php echo $category['category_name']; ?> </option>
<?php
}
?>
</select></td>
</tr>
<tr class="even">
<td><label for="price">price (<em>BsF</em>)</label></td><td><textarea name="price" rows="1" cols="20"></textarea></td>
</tr>
<tr class="odd">
<td><label for="stock">stock</label></td><td><textarea name="stock" rows="1" cols="20"></textarea></td>
</tr>
<tr class="even">
<td></td>
<td style="margin-top:30px"><p style="text-align:left; margin-left:20px;"><input type="submit" value="Add Product" /></p></td>
</tr>
</table>
</form>
</div>
同じページのドキュメントの上部に、フォームからのデータを処理し、それをデータベースに追加する実際の関数に送信する次のコードがあります。
<?php
include_once('init.php');
include_once('store.php');
$products = get_all_available_products();
if( isset($_POST['title'], $_POST['icon_description'], $_POST['category'], $_POST['price'], $_POST['stock']) )
{
$title = $_POST['title'];
$icon_description = $_POST['icon_description'];
$category = $_POST['category'];
$price = $_POST['price'];
$stock = $_POST['stock'];
$errors = array();
if( empty($title) )
{
$errors[] = 'You need to add a title.';
}
else if( strlen($title) > 125 )
{
$errors[] = 'Title cannot be longer than 255 characters.';
}
if( empty($icon_description))
{
$errors[] = 'Short description is empty.';
}
if( empty($price))
{
$errors[] = 'You need to specify a price.';
}
if( empty($stock))
{
$errors[] = 'You need to ad stock amount.';
}
add_product($title, $category, $icon_description, $price, $stock);
header('Location: products.php');
die();
}
add_product() 関数があるコード:
include_once('init.php');
function add_product($title, $category_id, $description, $price, $stock)
{
$title = mysql_real_escape_string($title);
$category_id = (int)($category_id);
$description = mysql_real_escape_string($description);
$price = doubleval($price);
$stock = (int)$stock;
$mysql_query("INSERT INTO `products` SET
`product_name` = '{$title}',
`product_description` = '{$description}',
`category_id` = {$category_id},
`price` = {$price},
`stock` = {$stock}");
}
製品をデータベースに表示するための他のすべてのコードが機能しているため、接続と構成は問題ありません (と思います)。問題は、製品を追加しようとすると、ボタンをクリックして Web サイトを送信すると、サーバー エラーが発生することです。