对不起这里的业余问题,但是我已经创建了一个表单,在我的生命中,我无法调试为什么它不能将更新提交到数据库中的原因。
一个例子是:www.dominicharrison.co.uk/projects/Portfolio/admin
代码:
<?php
require_once('../_inc/glob.php');
$query = mysql_query("SELECT * FROM `pages`");
echo "<table border=\"1\"><tr><td>ID</td><td>Name</td><td>Location</td><td>Edit</td><td>Delete</td></tr>";
while($array = mysql_fetch_assoc($query)) {
echo "<tr><td>" . $array['id'] . "</td><td>" . $array['name'] . "</td><td>" . $array['location'];
echo "</td><td><a href=\"?editid={$array['id']}\">Edit</a></td>";
echo "<td><a href=\"?delete={$array['id']}\">Delete</a></td></tr>";
}
echo "</table>";
// Defines the edit and delete functions
$edit = mysql_real_escape_string($_GET['editid']);
$delete = mysql_real_escape_string($_GET['delete']);
// Edit function!
$query2 = mysql_query("SELECT * FROM `pages` WHERE `id` = '{$edit}'");
$array2 = mysql_fetch_assoc($query2);
if($edit != "") {
?>
<p>
<form method="POST" action="">
<input name="name" value="<?php echo $array2['name']; ?>" type="text"><br />
<input name="location" value="<?php echo $array2['location']; ?>" type="text"><br />
<input type="submit" value="Edit!">
</form></p>
<?php
if($_POST['submit'])
{
$name = mysql_real_escape_string($_POST['name']);
$location = mysql_real_escape_string($_POST['location']);
mysql_query("UPDATE `pages` SET id = '{$edit}', name = '{$name}', location = '{$location}' WHERE id = '{$edit}'");
}
}
答案 0 :(得分:2)
由于您的表单发布到同一页面,这就是...
$edit = mysql_real_escape_string($_GET['editid']); // THIS IS NULL FOR POSTS
...
if($edit != "") { // THIS WON'T BE TRUE FOR POSTS
因此,它永远不会进入你的脚本的POST过程。重新组织你的脚本 - 你的POST处理代码应该位于顶部(如果你继续使用这个单脚本业务......你不应该这样做。)
答案 1 :(得分:1)
你没有$ _POST ['submit'];
var_dump($_POST);
为您的提交按钮添加名称。这会创建您缺少的post变量。
<input type="submit" name="submit" value="Edit!">
你的桌子会更新。但是,您需要刷新页面,因为您在调用update之前调用了select。
答案 2 :(得分:0)
您的表单未提交ID,因此您的SQL无法匹配WHERE id=
子句中的任何内容。
1)。在表单中添加一个隐藏字段,以提交您从$ _GET数组中获取的editID:
<form method="POST" action="">
<input type="hidden" name="id" value="<?php echo $edit; ?>" />
<input name="name" value="<?php echo $array2['name']; ?>" type="text"><br />
<input name="location" value="<?php echo $array2['location']; ?>" type="text"><br />
<input type="submit" value="Edit!">
</form>
2)。在提交逻辑中捕获编辑ID:
if($_POST['submit'])
{
$name = mysql_real_escape_string($_POST['name']);
$location = mysql_real_escape_string($_POST['location']);
$edit = mysql_real_escape_string($_POST['id']);
mysql_query("UPDATE `pages` SET id = '{$edit}', name = '{$name}', location = '{$location}' WHERE id = '{$edit}'");
}