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>

如果只有一条评论,则会以 html 格式输出:

Geschreven op 2012-12-09 door 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 回答