如何获取两个或多个选中的复选框值?

时间:2014-05-13 13:06:37

标签: php session select checkbox

我有一份业务经理职位候选人名单。选民需要选择至少两名候选人。我使用了复选框,以便选民可以做多个选择。当选民点击下一个按钮继续投票到其他职位时,应该携带两个选定的业务经理。问题是我可以得到两个但名称相同的。

例如:选择了选民

        John Smith and Harry Potter

获取值时的结果仅是最后选择的人。我注意到在我的收件箱中我只使用了一个名字=" choice"所以不可能得到两个....当我的列表是静态的时,我可以为每个支票收件箱指定不同的名称,但在我的情况下,我使用dyanmic方式将它们放在checkbox的数组中,这意味着它们具有相同的名称="选择" ...我希望你理解我的观点...请帮助我......这是我的代码实现..

  1. 填充复选框列表的结果:

        $result = mysql_query($QUERY);
                        while($row = mysql_fetch_object($result)){
                            $Name = $row->Name;
                            $PLName = $row->PLName;
                            $CID = $row->CID;
                            echo '<tr><td>';
                            echo '<img src="fetchImage.php?CID=' . $CID . ' " alt="Candidate photo" width="150px" height="135px" style="border:2px solid silver;">';
                            echo '</td>';
                            echo '<td><div class="contact_info_title">' . $Name . '</div><br>';
                            echo  $PLName . '<br><br>';
                            if(isset($_SESSION['VLPCCBusManager'])){
                                if($_SESSION['VLPCCBusManager'] == $CID){
                                    echo '<input type="checkbox" name="Choice" value=' . $CID . ' Checked>Select </td></tr>';
                                }else{
                                    echo '<input type="checkbox" name="Choice" value=' . $CID . '>Select </td></tr>';
                                }
                            }else{
                                echo '<input type="checkbox" name="Choice" value=' . $CID . '>Select </td></tr>';
                            }
                        }
                    echo '';
    
  2. 点击提交时获取所选内容,转到另一种形式:

    if(isset($_POST['submit'])){
    if(isset($_POST['Choice'])){
        if(empty($_POST['Choice'])){ $errors='Choice'; }
        if(empty($errors)){ 
            $Choice = $_POST['Choice'];
            $_SESSION['VLPCCBusManager'] = $Choice;
            $_SESSION['VLPCCBusManager2'] = $Choice;
            header("Location: VLPCCSgtArms.php?ChoiceCat=$ChoiceCat");
        }
    }else{
        $_SESSION['VLPCCBusManager'] = '0';
        $_SESSION['VLPCCBusManager2'] = '0';
        header("Location: VLPCCSgtArms.php?ChoiceCat=$ChoiceCat");
    }
    

    }

4 个答案:

答案 0 :(得分:3)

您需要将复选框的名称指定为:

<input type="checkbox" name="choice[]" />

而不是简单

<input type="checkbox" name="choice" />.

现在,例如,你在HTML中有这个:

<input type="checkbox" name="choice[]" value="choice1"> Choice1
<input type="checkbox" name="choice[]" value="choice2"> Choice2
<input type="checkbox" name="choice[]" value="choice3"> Choice3

让我们说,勾选第一个和第三个复选框,

在PHP中,您可以选中选中的复选框:

<?php

print_r($_POST['choice']);

?>

输出将是:

Array('0' => 'choice1',
      '1' => 'choice3')

我希望这能解释你的怀疑。

答案 1 :(得分:1)

您需要将复选框的名称指定为数组:

然后你得到数组中的值,然后你可以保存在数据库中

你可以用不同的方式提到复选框名称,例如1,2,3,4,5,6 ..然后使用表单发布值并将其作为数组获取 例如

$values[0]=$_POST['1'];
    $values[1]=$_POST['2'];
    $values[2]=$_POST['3'];
    $values[3]=$_POST['4'];
    $values[4]=$_POST['5'];
    $values[5]=$_POST['6'];
    $values[6]=$_POST['7'];
    $values[7]=$_POST['8'];
    $values[8]=$_POST['9'];
    $values[9]=$_POST['10'];

    and then u can implode it to a variable and save it in the database 

    $skill_set = implode(",", $values);

答案 2 :(得分:1)

您必须将代码更改为

name="choice[]"

答案 3 :(得分:0)

从复选框

获取多个值
  1. 您需要将复选框的名称更改为这样的数组
  2. <input type="checkbox" name="Choice[]" />
    
    1. 在阅读复选框的帖子值时读到这样的
    2.   

      $_POST['Choice'][0],$_POST['Choice'][1],...

      示例

       <input type="checkbox" name="Choice[]" value=" Checkbox 1"/> Checkbox 1<br>
       <input type="checkbox" name="Choice[]" value=" Checkbox 2"/> Checkbox 2<br>
       <input type="checkbox" name="Choice[]" value=" Checkbox 3"/> Checkbox 3<br>
      

      如果您只选中了复选框1和3,那么您可以获得这样的值

      $_POST['Choice'][0] =&gt;具有已检查的第一个复选框的值。

      因此$_POST['Choice'][0]的值为Checkbox 1

      $_POST['Choice'][1] =&gt;具有已检查的第二个复选框的值。

      因此$_POST['Choice'][1]的值为Checkbox 3