php - 如何从使用 foreach 循环创建的表单中检索 _POST 数据?

标签 php post foreach

我有一个包含 20 个名称的关联数组,格式如下:

$operationCodeName = array(
    "Overlord" => 44,
    "Rolling Thunder" => 68,
    "Desert Storm" => 91,
    "Phantom Fury" => 04,
...);

...并使用以下 foreach 循环生成一个表(嵌套在一个表单中),该表显示每个名称和一个整数年份:

foreach($operationCodeName as $operation => $year) {
    echo "<tr>
          <td>" . $operation . "</td>
          <td align='center'>" . $year . "</td>";
    echo "<td><input name='comment" . $operation . "' size='50' type='text' placeholder='Comment here'></td>
    </tr>";
    }

我通过将“评论”一词与 $operation 连接起来来命名变量文本输入的名称属性中的变量。

这部分工作正常,但如果有更聪明的方法来做到这一点,我会洗耳恭听!

当用户单击“提交”按钮时,我需要将这些评论显示在摘要页面上。该表应显示相同的 $operation$year数组元素就像在第一页上一样,但随后显示用户在上一页中的评论。

我尝试使用两部分解决方案来解决问题:

首先,我的想法是使用之前的关联数组来创建每个级联变量,用它来调用_POST方法:

foreach($operationCodeName as $key => $value){
    ${"comment" . $key} = $_POST[${"comment" . $key}];
}

...然后通过回显串联变量来遍历注释列中的每个变量,就像我在上一页的第三列中设置它们一样:

foreach($operationCodeName as $operation => $year) {
        echo "<tr>
                <td>" . $operation . "</td>
                <td align='center'>" . $year . "</td>";
        echo "<td>" . ${"comment" . $operation} . "</td>
            </tr>";
    }

当我运行这段代码时,该表正确显示前两列,但生成空的 <td></td>第三列的标签。 var_dump(_$POST);显示:

array(21) { ["commentOverlord"]=> string(9) "Comment 1" ...

“评论 1”是在上一页中输入的评论,所以数据在这里,我只是没有正确调用它以在表格中显示......这实际上是令人鼓舞的!

我假设我没有正确声明变量,但我不确定我的错误传达发生在哪里。

如何正确地从第一页检索评论,并将它们显示在这个动态生成的表格的第三列中?

<我> 感谢您的任何和所有建议!虽然我已经使用 Java 编程大约一年,但我只使用 PHP 大约 2 周。也就是说,请原谅我的任何菜鸟错误!

最佳答案

在上面的代码中,您尝试为每个评论创建动态变量。这不是创建动态变量的方式。您已经拥有数组形式的 POST 请求中的数据,因此您可以通过在与 operationCode 编号连接的表单评论中创建的键访问每个评论。试试这个!

foreach($operationCodeName as $operation => $year) {
        // replace space in operation key with _
        $operation = preg_replace('/\s+/', '_', $operation);
        $commentKey = "comment" . $operation;
        $comment = $_POST[$commentKey];
        echo "<tr>
                <td>" . $operation . "</td>
                <td align='center'>" . $year . "</td>";
        echo "<td>" . $comment . "</td>
            </tr>";
}

关于php - 如何从使用 foreach 循环创建的表单中检索 _POST 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54598012/

相关文章:

python - Django 如何验证 POST 参数

php - 从 Mailgun 表单 Post PHP 中检索附件

javascript - javascript forEach() 函数如何在 mongodb shell 中迭代文档?

C# MySQL 多行结果到组合框

javascript - JQuery AJAX 调用本地更新脚本在 Safari 中失败,在 Chrome 和 FF 中有效

php - 允许 htmlpurifier 中的某些标签

php - Laravel Sail 无法运行 artisan migrate

javascript - XMLHttpRequest 发送 JS 对象

php - 使用从 MySQL TIME 字段检索的值计算时间差

angularjs - 在 tr 中嵌套 ng-repeat