0

对于这里的业余问题,我很抱歉,但我已经创建了一个表单,在我的一生中,我无法调试它为什么不会将更新提交到数据库中的原因。

一个例子在这里: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}'");
     }

}
4

3 回答 3

2

由于您的表单发布到同一页面,因此会发生这种情况......

$edit = mysql_real_escape_string($_GET['editid']); // THIS IS NULL FOR POSTS

...

if($edit != "") {   // THIS WON'T BE TRUE FOR POSTS

因此,它永远不会进入脚本的 POST 过程。重新组织您的脚本 - 您的 POST 处理代码可能应该在顶部(如果您继续使用这个单一脚本业务......您不应该这样做)。

于 2013-07-17T00:38:18.350 回答
1

你没有 $_POST['submit'];

var_dump($_POST);

将名称添加到您的提交按钮。这会创建您缺少的 post 变量。

<input type="submit" name="submit" value="Edit!">

你的表会更新。但是,您需要刷新页面,因为您在调用 update 之前很久就调用了 select。

于 2013-07-16T20:26:10.810 回答
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}'");
     }
于 2013-07-16T19:25:48.970 回答