1

何らかの理由で、if ステートメントが期待どおりに機能しません。

$query = "SELECT title FROM blog";
$result = mysql_query($query);
$rows = mysql_num_rows($result);

for ($j = 0; $j < $rows; ++$j)
{
    if (isset($_POST['$j']))
    {
        $id  = mysql_real_escape_string($_POST['id']);
        $query = "DELETE FROM blog WHERE id='$id'";
        mysql_query($query);
        echo 'Deleted post.. ';
        echo '<a href="blog.php">Click here</a>';
    }
    else
    {
        echo 'Failed!';
    }
}

何が起こるかというと、「削除された投稿..」と「リンク」が、テーブルのブログにある行の数をエコーすることです。テーブルの 1 行だけが削除されますが、これが必要です。毎回1つのボタンが押されるので、「削除された投稿..」と「失敗しました!」が1回だけエコーされるべきではありません。残りの時間?ありがとう =)

注: 私はまだプログラミングに慣れていないので、質問がばかげている場合は申し訳ありません。

注 2: 別のページに多くのボタンがあります..「1、2、3」などの番号が付けられています。

4

5 に答える 5

2

変化する:

$_POST['$j'] // here, due to the single quotes you're
             // always testing for the literal `$j`, and not
             // the value of current loop iteration.

に:

$_POST[$j]
于 2012-08-22T07:18:46.550 に答える
1

変数は一重引用符で解析されないため、二重引用符を使用する必要があります。isset($_POST["$j"]

また、ループ内で同じレコードを何度も削除しようとしています。 $_POST["$j"]設定されているかどうかを確認していますが、使用しています$_POST['id']

于 2012-08-22T07:18:39.203 に答える
0

これを試して

<?php
    $query = "SELECT title FROM blog";
    $result = mysql_query($query);
    $rows = mysql_num_rows($result);

    for ($j = 0; $j < $rows; ++$j)
    {
        if (isset($_POST[$j]))
        {
            $id  = mysql_real_escape_string($_POST['id']);
            $query = "DELETE FROM blog WHERE id='" .$id ."'";
            mysql_query($query);
            echo 'Deleted post.. ';
            echo '<a href="blog.php">Click here</a>';
        }
        else
        {
            echo 'Failed!';
        }
    }

?>
于 2012-08-22T07:21:36.207 に答える
0

問題は、$_POST[0] から $_POST[Whatever] までループしていることですが、ID = $_POST['id'] の場所だけを削除していることです。$_POST['id'] は変更されません。何度もループしているにもかかわらず、ループごとに同じ行を削除しようとしています

于 2012-08-22T07:26:11.420 に答える
0

POST、GET、または REQUEST は、前のページから現在のページに投稿されたものしか取得しないため、機能しません。

いくつかの変数をいくつかのページに POST する必要がある場合は、$_POST['j']. POST 内の現在のページで変数を使用することはできません

他のページから投稿している場合はj、そのように使用する代わりにこの条件を使用できると思います

$j = $_POST['j'];

if(isset($_POST['j'])){
for($j = 0; $j < $rows; ++$j){
//your code
}
}

お役に立てれば

于 2012-08-22T07:29:21.353 に答える