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 処理コードが一番上にあるはずです (この 1 つのスクリプトのビジネスを続けている場合は....そうすべきではありません)。

于 2013-07-17T00:38:18.350 に答える
1

$_POST['submit']; がありません。

var_dump($_POST);

送信ボタンに名前を追加します。これにより、欠落している投稿変数が作成されます。

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

そして、テーブルが更新されます。ただし、update を呼び出すずっと前に select を呼び出しているため、ページを更新する必要があります。

于 2013-07-16T20:26:10.810 に答える