PHPとmysqlで簡単な製品ページ(ログインなどはありません)を作成しようとしています。これまでのところ、すべてが製品ページに問題なく表示されており、管理ページから問題なく削除/追加できます。そこから、編集機能を作成する方法を見つけようとしています。そこで、便宜上、productid (edit2.php?id=X) に基づいて mysql テーブルからデータを入力するフォームを作成しました。このフォームは、edit.php に投稿し、うまくいけばデータベースを更新します。これまでのところ、古いコードの再利用は機能していません。どういうわけか、それが簡単になることを望んでいました。
これは私の追加製品です(動作します):
<?php
session_start();
if(isset($_POST) && isset($_POST['hp']) && empty($_POST['hp'])) {
if(
isset($_SESSION['token']) &&
$_SESSION['token'] == $_POST['token']
) {
mysql_connect('localhost', 'test_admin', 'test');
mysql_select_db('test_product');
$data = array_map('mysql_real_escape_string', $_POST);
$query = "
INSERT INTO products (
product_name, price, description, image
) VALUES (
'{$data['product_name']}',
'{$data['price']}',
'{$data['description']}',
'{$data['image']}'
)
";
if(mysql_query($query)) {
echo '<p>Your information was successfully saved.</p>';
unset($_SESSION['token']);
} else {
echo '<p>There was an error storing your data, please try again later.</p>';
}
} else {
echo '<p>Your data has already been saved.</p>';
}
} else {
echo '<p>Error.<br />Please try again later.</p>';
}
?>
これは私の更新です(構文エラーまたは「データの保存エラー」をスローするだけです:
<?php
mysql_connect('localhost', 'test_admin', 'test');
mysql_select_db('lbriedis_product');
$data = array_map('mysql_real_escape_string', $_POST);
$query = "UPDATE products WHERE id = ".$pageid." (
product_name, price, description, image
) VALUES (
'{$data['product_name']}',
'{$data['price']}',
'{$data['description']}',
'{$data['image']}'
)
";
if(mysql_query($query)) {
echo '<p>Your information was successfully saved.</p>';
unset($_SESSION['token']);
} else {
echo '<p>There was an error storing your data, please try again later.</p>';
echo mysql_error(); //Used for development and testing only
}
?>
セッション検証を使用しようとすると、おそらくセッション エラーが発生します。おそらく、管理ページでセッションを開始したためです (製品フォームの追加は admin.php にあり、編集と削除はリンクです)。それにもかかわらず、更新部分でさらに苦労しているため、当面はセッション チェックを削除しました。
また、'update where id = $pageid. 値を含む隠しフィールドがあります (編集フォームを参照)。これを正しく参照するにはどうすればよいですか?
編集フォーム (値が正しく表示されるため、id = $pageid はここで機能します:
<?php
$dol = "$";
$pageid = (int)$_GET['id'];
mysql_connect('localhost', 'lbriedis_admin', 'xxxxxx123');
mysql_select_db('lbriedis_product');
$result = mysql_query("SELECT * FROM products WHERE id = ".$pageid."");
if($result){
$data = mysql_fetch_assoc($result);
}
?>
<form id="inputForm" method="post" action="edit.php">
<fieldset>
<label>Pool name:</label>
<?php
echo '<input type="text" name="product_name" value="'.$data['pool_name'].'" />';
?>
<label>Price:</label> <br>
<?php
echo '$ <input type="text" name="price" value="'.$data['price'].'" />';
?> <br />
<label>Description:</label>
<?php
echo '<textarea name="description">'.$data['description'].'</textarea>';
?>
<label>Image:</label></label>
<?php
echo '<input type="text" name="image" value="'.$data['image'].'" />';
?>
<input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>" />
<input type="text" id="hp" name="hp" />
<?php
echo '$ <input type="hidden" name="$pageid" value="'.$pageid.'" />';
?>
<br>
<input type="submit" name="submit" value="Update" />
</fieldset>
</form>