0

私は本当に理解していない $_POST に問題があります...私は非表示の入力を持つフォームを持っています。非表示の入力の値はデータベースから来ています。

私はこれをやっています:

echo "<input type=\"hidden\" name=\"reactie\" value=\"$naam\" />";

$naam は以前に割り当てられた変数です: 注: サブ配列にはユーザーの反応からのデータが含まれています。

foreach($gegevens as $sub_array) {
     $naam = $sub_array['naam'];
}

$naam をエコーするだけで、必要な値が得られます。

非表示の入力の値を取得したい場合は、単に「striptag」を出力します。HTMLコードを見ると、隠された入力の値は本来あるべきものであり、「striptag」ではありません。

html での出力:

<input type="hidden" name="reactie" value="school" /> 

これを使用して、非表示の入力の値を取得します。

if (isset($_POST['submitted'])) {
    echo $_POST['reactie'];
}

非表示の入力の値にテキストを入力すると、機能します。文字列変数を入れられないのはなぜですか?

フォームを投稿するときに取得する必要があるのは「学校」ですが、取得するのは「striptag」です。

このフォームの目的 (最後に): すべてのユーザー コメントを一覧表示します。ボタンを押すと、反応が削除されます。私の全体のフォーム:

<form action = "guestadmin.php" method = "post">

<?php



include ('conData.php');
$sql = new ConData();
$sql->maakConnectie(); 
$gegevens = $sql->haalGegevensOp("select * from gastenboek");

foreach($gegevens as $sub_array) {
    $naam = $sub_array['naam'];
    $email = $sub_array['email'];
    $tekst = $sub_array['tekst'];
    $datum = $sub_array['datum'];

    echo "<div class = \"com\"> 
        <fieldset class= \"field\"> 
        <legend >Geschreven op $datum door $naam </legend>";

    echo "$tekst</fieldset>
        <input name = \"submitted\" type=\"submit\" 
            value = \"verwijder deze reactie\" /></div>";
    echo "<input type=\"hidden\" name=\"reactie\" value=\"$naam\" />";
    echo "<br \>";
}
?>

</form>

コメントが 1 つしかない場合、これは html で出力されます。

Geschreven op 2012-12-09 ドア Arnout dit is een test

本当にわからない

4

1 に答える 1

1

2 つの大きな問題があります。

  1. すべてのエントリは同じフォームに入力します。つまり、同じ名前のフォーム フィールドが複数あり、すべてが互いに上書きされます。フォームタグをループに配置して、すべてのエントリが独自のフォームを持つようにすることで、これを解決できます。
  2. html への出力用にデータを準備していません。これは<>データ内の 、 などの記号が html を壊す可能性があることを意味します。(すべてのデータフィールドに対して): を使用して解決できます$naam = htmlspecialchars($sub_array['naam']);
于 2012-12-10T16:04:19.030 に答える