表单未发布所有值

时间:2020-01-30 08:52:03

标签: php html post

我写了一个带有表单的html页面; <form action="" method="post">。如您所见,此表单应发布到与表单相同的网址。我正在使用PHP捕获帖子;

if(isset($_POST['submit'])) {
    // do stuff
}

在表单中,具有正确名称属性的提交按钮<button type="submit" name="submit">Send</button>。如果我记录了post变量,我将从表单中获取所有命名字段,但我没有得到的是这些字段的正确值。

我将添加一个简短缩写的表格:

<form action="" method="post">
  <table class="table my-5" id="table">
    <?php foreach($parameters as $key => $value): ?>
      <tr>
        <td>
          <h6><?= $key ?></h6>
        </td>
        <td>
        <?php 
          switch($key){
            case 'Origin':
              echo '<select class="param" name="Origin">';
              foreach($ports as $port){
                echo '<option>' . $port . '</option>';
              }
              echo '</select>';
              break;
            case 'OriginDepartureDate':
              echo '<input class="param" name="OriginDepartureDate" type="text" value="' . $value . '">';
              break;
            case 'Limit':
              echo '<input class="param" data-key="Limit" name="Limit" type="text" placeholder="' . $value . '">';
              break;
            default:
              echo '<span class="param">'. $value . '</span>';
              break;
          } ?>
        </td>
      </tr>
    <?php endforeach ?>
  </table>
  <button type="submit" name="submit">Send</button>
</form>

以及用于构建表单的参数:

$parameters['Origin'] = null;
$parameters['OriginDepartureDate'] = null;

$orderbyArr = ['DRS','GRQ','LGG',...];

奇怪的是某些值确实通过了,但其他值没有通过,Origin值也通过了,Limit值也通过了,但是(不是“ DestinationDepartureDate”,而是:) OriginDepartureDate没有。

我已经看了几天代码,但是在逻辑上我找不到任何明显错误的地方。如果一些新鲜的眼睛可以看到我看不到的东西,那就太好了。

3 个答案:

答案 0 :(得分:2)

当您注入PHP代码以在HTML中显示某些值时,您必须echo值本身,因此:

代替:

<input class="param" name="OriginDepartureDate" type="text" value="<?php $value ?>">

您需要:

<input class="param" name="OriginDepartureDate" type="text" value="<?php echo $value ?>">

答案 1 :(得分:0)

我相信您忘记设置选项值。您可以在这里Using $_POST to get select option value from HTML

了解更多信息
// options need to have a value
<option value="<?=$orderby?>"><?= $orderby ?></option>

答案 2 :(得分:0)

此处:If isset $_POST

此处:Avoid using isset ...

您可以阅读更多内容。简单地说,测试变量的内容更安全。 我可以建议使用

 <input type="submit" name="sent" value="send/OK" />

这给您isset()的预期行为。