【问题标题】:getting the value of not posted input in php在php中获取未发布输入的值
【发布时间】:2014-06-19 09:55:59
【问题描述】:

对我们来说很常见的是用数据来获取post输入类型的值。但现在我想知道复选框是选中还是未选中。 这是我的代码:

while (!$listof_artist->EOF) {
    $id = $listof_artist->fields['id'];
    $arr_id[] = $id;

    echo "<tr><td><input type='checkbox' value='".$id."' name='chkid[]' id='chkid[]' /></td>";
}

if(isset($_POST['submit'])){
    foreach($_POST['chkid'] as $checkbox){
        //code for add
    }

这是我的算法: 如果 submit 是 post 则

for each checbox is check
    //add

foreach checbox not check
        //code for not check

请帮忙。谢谢

【问题讨论】:

  • 将所有复选框设置为未选中,然后将 $_POST['chkid'] 中的所有复选框设置为选中

标签: php arrays post checkbox isset


【解决方案1】:

与其他答案已经指出的类似,这是一种方法:

while (!$listof_artist->EOF) {
    $id = $listof_artist->fields['id'];
    $arr_id[] = $id;

    echo "<tr><td><input type='checkbox' value='$id' name='$id' id='$id' /></td>";
}

if(isset($_POST['submit'])){
    foreach($arr_id as $checkbox){
        if (isset($_POST[$checkbox])) {
            // Checkbox is checked
            echo 'Artist id ' . $checkbox . ' is checked <br/>';
        }
        else {
            // Checkbox is NOT checked
            echo 'Artist id ' . $checkbox . ' is NOT checked <br/>';
        }
}

【讨论】:

    【解决方案2】:

    正如其他人所说,您无法获取尚未发送的表单元素的名称/值,但是在您提交表单之前,使用一点 JavaScript,您可以找出哪些复选框尚未发送检查,收集他们的名字/值并手动将其附加到您的表单数据并将其发送到服务器。

    作为提示,此代码收集表单中的 unchecked 复选框,然后您可以将其发送到服务器,例如,通过 Ajax 请求中的 hidden 输入字段或参数。

    $("input:checkbox:not(:checked)")
    

    【讨论】:

      【解决方案3】:

      每当提交表单时,只有那些被选中的复选框可以通过$_POST[var]获得 所以检查它就像你的问题本身一样简单:

      foreach($_POST['chkid'] as $checkbox){
        //code for add
      }
      

      但对于未检查的,如果检查与否,则必须运行循环以从数据库中匹配。

      或者这里有更好的出路。

      而不是

      <input type='checkbox' value='".$id."' name='chkid[]' id='chkid[]' />
      

      使用

      <input type='checkbox' value='$id' name='$id' id='$id' />
      

      现在您可以通过它们的名称轻松地检查它们

      if(isset($_POST[$id])){
      //this is checked
      }
      else{
      //its not checked
      }
      

      注意: 如果$id 包含空格或太大,最好指定一些计数变量作为名称。

      这是一个小测试代码,运行它,它会让你更好地理解。

      <?php
      if(!empty($_POST['c']))
          print_r($_POST['c']);
      ?>
      <form action="" method="post">
          <input type="checkbox" name="c[]" value="1" />
          <input type="checkbox" name="c[]" value="2" />
          <input type="checkbox" name="c[]" value="3" />
          <input type="checkbox" name="c[]" value="4" />
          <input type="checkbox" name="c[]" value="5" />
          <input type="submit">
      </form>
      

      【讨论】:

      • 即使这段代码也不会发布未选中复选框的名称
      • 显然他们不会,它只会发布已检查的。
      • 短语or here is a better way out.暗示它会
      • 但是通过if(isset($_POST[$id])){//its checked}检查它是否检查会更容易
      【解决方案4】:

      获取未发布到您的网址的值就像询问所有尚未发现的行星的名称。

      您正在做的事情有一个简单的解决方法,假设您有 10 个复选框。您知道名称并且知道值,因为您创建了它们。转到您处理表单提交的页面并将所有名称告诉您的代码。然后代码检查哪个在$_POST 中有值,哪个没有。这会给你答案。

      使用简单的 HTML 不会将未选中复选框的值发送到您的表单处理 url。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-26
        • 1970-01-01
        • 1970-01-01
        • 2016-11-02
        • 1970-01-01
        相关资源
        最近更新 更多