0

ご覧のとおり、すべてのコメントにボタンがありますが、ボタンをクリックするとすべてのコメントが削除されます。私はそれが属するコメントを削除したいだけです。comment_idクエリから列内のすべての変数を削除するため、すべてを削除する理由がわかるかもしれませんが、$sql_result2修正方法がわかりません。を変更する必要があり$sql_result2ますか? ここで何が間違っていますか?

$sql_result2 = $mysqli2->query("SELECT * FROM comments WHERE thread_id = '".$thread_id."'");
    while ($comments = mysqli_fetch_assoc($sql_result2)) {

        echo " <div id='comments' >{$comments['comment']}</br>";
        echo "<div id='name_and_date'><a href=profile.php?comment_username={$comments['username']}>{$comments['username']}</a></br>";
        echo "{$comments['date_made']}</div></div>";
        echo <<<EOT
            <table style='margin-left:42% ;'>
            <form action="?" method="post">
            <td><input name="delete_comment" type="submit" value="delete"></td>
            <table> 
EOT;
    if ( isset( $_POST['delete_comment'] ) ) { 
        $sqldeletecomment=$mysqli2->query("delete from comments WHERE comment_id = '".$comments['comment_id']."'");
        header("Location: thread.php");
    }


    }
4

3 に答える 3

0

これは、これの前に何かがエコーされ、while ループに入れるとヘッダー関数が機能しないために発生します。そのため、条件 isset( $_POST['delete_comment'] ) が true になると、ループ内のすべてのレコードに対して true になります。したがって、すべてのレコードを削除します。

if ( isset( $_POST['delete_comment'] ) ) { 
        $sqldeletecomment=$mysqli2->query("delete from comments WHERE comment_id = '".$comments['comment_id']."'");
        header("Location: thread.php");
    }

一度だけレコードを削除するというロジックにも問題があるようです。削除する特定の comment_id ではなく、一般的なフラグを設定しているだけです

于 2013-11-13T09:40:46.903 に答える
0

ここで何をしようとしているのかは実際にはわかりませんが、ポストメソッドを使用して変数を渡し、変数をフィルターとして使用してデータを削除するようです...

post メソッドで変数を渡すことができる input 要素または任意の要素を作成する必要があります。

 <table style='margin-left:42% ;'>
            <form action="?" method="post">
            <td><input name="delete_comment" type="submit" value="<?php echo $comments['comment_id']; ?>"></td>
            <table> 

このように...送信ボタンを使用しました。これは、既にクリックされているかどうかを確認する以外に用途がないためです..

于 2013-11-13T09:32:26.150 に答える