【问题标题】:Issue getting $_POST from multiple checkboxes从多个复选框获取 $_POST 的问题
【发布时间】:2015-08-25 18:04:19
【问题描述】:

我做了一个表格,里面有多个复选框,如下:

<form action="" method="post">   
    <div class="row">
        <div class="col-sm-9">
            <div class="form-group">
                <label>Choose rooms:</label>
                <ul id="scegli_camere">
                    <li><input type="checkbox" name="rooms[]" value="101" > Camera 101</li>
                    <li><input type="checkbox" name="rooms[]" value="102" > Camera 102</li>
                </ul>
            </div>
        </div>
    </div><!-- /.row -->
    <div class="row">
        <div class="col-lg-6">                          
            <button type="submit" class="btn btn-primary" id="btn_submit"><i class="fa fa-save"></i> Modify</button>
        </div>
    </div>
</form>

提交表单后,如果没有选中任何一个复选框,我会得到一个空数组,而如果选中一个,我会得到如下的 POST:

Array(
    [rooms] => 
)

为什么 $_POST['rooms'] 总是空的?

【问题讨论】:

  • 我想看看你完整的表单生成脚本。 enctype 表示还有更多内容可看(文件上传:p)。也许其他输入字段之一正在触发错误。
  • 我在代码中没有看到对camere 的任何引用!
  • @PeterBlue 对不起,我写错了问题,现在可以了
  • @LaVomit 这是完整的代码:
  • 您好,我复制并粘贴了您问题中的代码,在我的机器上运行良好。

标签: php html forms checkbox


【解决方案1】:

我已经检查了您的代码。这在我的环境中运行良好,我得到了检查的值。你可以调试两件事-

  1. 提交表单时是否选中复选框
  2. print_r($_POST) 这将打印完整的帖子数组。

希望这会奏效。

【讨论】:

    【解决方案2】:

    检查采集过程,有问题。尝试

    <?php
    var_dump($_POST);
    ?>
    

    或尝试将“文本”的“复选框”更改为仅查看是否为空。

    【讨论】:

      【解决方案3】:

      逐步调试您的代码。在控制台中检查您的值,或打印它们:

      foreach($room_numbers as $room_number){
          echo '<input type="checkbox" name="rooms[]" value="'.$room_number.'">' . $room_number;
      }
      

      如果一切正常,使用 var_dump 检查 $_POST 变量

      【讨论】:

      • 我已经按照报告简化了代码,但问题仍然存在。这里是 var_dump($_POST) array(1) { ["rooms"]=> string(0) "" }
      【解决方案4】:

      问题在于您的enctype="multipart/form-data"。如果您没有文件上传,只需将其删除,您就可以像以前一样定义您的表单。

      【讨论】:

      • 即使没有它我也有同样的问题
      • 查看this fiddle。 textarea 向您显示将发送到您的服务器的内容。你确定你没有在表单验证之前编辑你的$_POST-global 吗?
      【解决方案5】:
      <form action="" method="post" enctype="multipart/form-data">   
          <div class="row">
              <div class="col-sm-9">
                  <div class="form-group">
                      <label>Choose rooms:</label>
                      <ul id="scegli_camere">
                          <li><input type="checkbox" name="rooms[]" value="101" > Camera 101</li>
                          <li><input type="checkbox" name="rooms[]" value="102" > Camera 102</li>
                      </ul>
                  </div>
              </div>
          </div><!-- /.row -->
          <div class="row">
              <div class="col-lg-6">                          
                  <button type="submit" class="btn btn-primary" id="btn_submit"><i class="fa fa-save"></i> Modify</button>
              </div>
          </div>
      </form>
      <?php
      if(isset($_POST['rooms']))
      {
          $data=$_POST['rooms'];
      foreach($data as $t)
      {
          echo "<br />".$t;
      }
      }
      ?>
      

      试试这个

      【讨论】:

        【解决方案6】:

        这是相当粗略的,但它应该工作。在表格上:-

        <input type="checkbox" name="room101" value="1">Camera 101
        <input type="checkbox" name="room102" value="1">Camera 102
        

        在 PHP 代码中:-

        $room101 = (int) $_POST['room101'];
        $room102 = (int) $_POST['room102'];
        

        这两个变量将具有 1(已选择)或 0(未选择)

        如果有很多摄像头,您可以将这两个变量设为数组。

        【讨论】:

          【解决方案7】:

          好的,发现问题。 在代码的前一部分中,包含一个配置文件,其中以下代码会产生问题:

          if (!get_magic_quotes_gpc()) {
              if (isset($_POST)) {
                  foreach ($_POST as $key => $value) {
                          $_POST[$key] =  trim(addslashes($value));
                      }
                  }
          
              if (isset($_GET)) {
                  foreach ($_GET as $key => $value) {
                      $_GET[$key] = trim(addslashes($value));
                  }
              }   
          }
          

          删除它,表单有效!

          【讨论】:

            猜你喜欢
            • 2011-06-27
            • 1970-01-01
            • 2016-06-28
            • 1970-01-01
            • 2011-10-04
            • 1970-01-01
            • 2013-03-27
            • 1970-01-01
            相关资源
            最近更新 更多