我有一份业务经理职位候选人名单。选民需要选择至少两名候选人。我使用了复选框,以便选民可以做多个选择。当选民点击下一个按钮继续投票到其他职位时,应该携带两个选定的业务经理。问题是我可以得到两个但名称相同的。
例如:选择了选民
John Smith and Harry Potter
获取值时的结果仅是最后选择的人。我注意到在我的收件箱中我只使用了一个名字=" choice"所以不可能得到两个....当我的列表是静态的时,我可以为每个支票收件箱指定不同的名称,但在我的情况下,我使用dyanmic方式将它们放在checkbox的数组中,这意味着它们具有相同的名称="选择" ...我希望你理解我的观点...请帮助我......这是我的代码实现..
填充复选框列表的结果:
$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 '';
点击提交时获取所选内容,转到另一种形式:
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");
}
}
答案 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)
从复选框
获取多个值<input type="checkbox" name="Choice[]" />
$_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