【问题标题】:How to submit checkbox values with PHP post method如何使用 PHP post 方法提交复选框值
【发布时间】:2011-01-19 13:39:53
【问题描述】:
<input type="checkbox" class='form' name="checkbox_1" />

<input type="checkbox" class='form' name="checkbox_2" />

<input type="checkbox" class='form' name="checkbox_3" />

.........

<input type="checkbox" class='form' name="checkbox_10" />

发件人已使用“POST”方法提交。确定哪个复选框并按升序写出它们的编号。用空格(不是换行符)分隔所有数字,并且不使用任何 HTML 格式。

例如:

如果选中复选框 3、5 和 10。

输出将是:

3 5 10

【问题讨论】:

  • 那么,这里有什么问题?
  • 那么问题是什么?详细说明您希望拥有什么。
  • 你有什么理由不接受这里的答案吗?

标签: php


【解决方案1】:

遍历$_POST数组并使用preg_match()提取以“checkbox_”开头的数字:

$checked = array();
foreach ($_POST as $k => $v) {
  if (preg_match('|^checkbox_(\d+)$!', $k, $matches) {
    $checked[] = $matches[1];
  }
}
echo implode(' ', $matches);

【讨论】:

  • vsr 说的似乎更贴切,这样你就不必使用正则表达式搜索字段了。
【解决方案2】:

将标记更改为类似

<input type="checkbox" class='form' value="1" name="checkbox[]" />
<input type="checkbox" class='form' value="2"  name="checkbox[]" />
<input type="checkbox" class='form' value="3"  name="checkbox[]" />

要获取提交的值,请使用简单的循环

foreach($_POST['checkbox'] as $checkbox){
    echo $checkbox . ' ';
}

【讨论】:

  • if (isset($_POST['checkbox']) && is_array($_POST['checkbox'])) { echo implode(' ', $_POST['checkbox']); }
  • 你如何在简单的 HTML 表单中使用 php 变量 checkbox[]?
【解决方案3】:
<?php
$checked = array();

foreach ($_POST as $k => $v) {
$subject = $k;
$pattern = '/^checkbox_(\d+)$/';
  if (preg_match($pattern, $subject, $matches)) 
  {
    $checked[] = $matches[1];
  }
}

asort($checked);

foreach ($checked as $key=>$value)
echo $value .' ';
?>

【讨论】:

    【解决方案4】:

    对于您的每个复选框值检索,您可以使用以下方法从复选框中获取值是否被选中......

    在我的表单页面中(周一至周日)

     <input type="checkbox" name="checked[]" class="onoffswitch-checkbox" id="mononoffswitch" value="Mon" checked>
    

    在我的 PHP 代码中

    function IsChecked($chkname,$value)
    {
        if(!empty($_POST[$chkname]))
        {
            foreach($_POST[$chkname] as $chkval)
            {
                if($chkval == $value)
                {
                    return true;
                }
            }
        }
        return false;
    }
    
    if(IsChecked('checked','Mon'))
    {
        $checkedMon = "Y";
    
    }else {
        $checkedMon = "N";
    
    }
    
    if(IsChecked('checked','Tue'))
    {
        $checkedTue = "Y";
    
    }else {
        $checkedTue = "N";
    
    }
    
    if(IsChecked('checked','Wed'))
    {
        $checkedWed = "Y";
    
    }else {
        $checkedWed = "N";
    
    }
    
    if(IsChecked('checked','Thur'))
    {
        $checkedThur = "Y";
    
    }else {
        $checkedThur = "N";
    
    }
    
    if(IsChecked('checked','Fri'))
    {
        $checkedFri = "Y";
    
    }else {
        $checkedFri = "N";
    
    }
    
    if(IsChecked('checked','Sat'))
    {
        $checkedSat = "Y";
    
    }else {
        $checkedSat = "N";
    
    }
    
    if(IsChecked('checked','Sun'))
    {
        $checkedSun = "Y";
    
    }else {
        $checkedSun = "N";
    
    }
    

    现在您可以获取这些变量值并将其用于您的 Insert Into 语句...

    这样

    $addweekdays = mysqli_query($conn, "INSERT INTO weekdays(id,monday,tuesday,wednesday,thursday,friday,saturday,sunday) VALUES('$Id', '$checkedMon', '$checkedTue', '$checkedWed', '$checkedThur','$checkedFri','$checkedSat','$checkedSun')") ...
    

    【讨论】:

      【解决方案5】:

      HTML 代码::

        <input type="checkbox" name="arrayValue[]"  value="value1" > value1 <br />
        <input type="checkbox" name="arrayValue[]"  value="value2" > value2 <br />
        <input type="checkbox" name="arrayValue[]"  value="value3" > value3 <br />
        <input type="checkbox" name="arrayValue[]"  value="value4" > value4 <br />
      

      php代码::

       $checkBoxValue = join(", ", $_POST['arrayValue']);  // here first (,) is user-define
                                                         // means, you can change it whatever
                                                      // you want, even if it can be (space) or others
      

      现在您可以在一个变量中获得“复选框”的全部值

      【讨论】:

      • 帮我大忙!我试图在提交时通过电子邮件 $message 发送复选框数组。有了接受的答案,它只会读取最后一个值,而不是全部。这个答案很完美,我认为应该是正确的答案!谢谢!
      【解决方案6】:
      $checked = array();
      
      foreach ($_POST as $k => $v) {
      $subject = $k;
      $pattern = '/^checkbox_(\d+)$/';
        if (preg_match($pattern, $subject, $matches)) 
        {
          $checked[] = $matches[1];
        }
      }
      
      asort($checked);
      
      foreach ($checked as $key=>$value)
      echo $value .' ';
      

      【讨论】:

        【解决方案7】:

        将您的复选框名称作为name="checkbox[]" 的数组,并为您的所有复选框使用相同的名称。 提交表单后,使用以下代码接收选中复选框的值:

        <?php
        $chk="";
        foreach($_POST['checkbox'] as $checkbox)
        {
        $chk=$chk.$checkbox;
        }
        echo $chk;
        ?>
        

        【讨论】:

          猜你喜欢
          • 2014-11-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-01-12
          • 1970-01-01
          • 2013-08-04
          相关资源
          最近更新 更多