多个Checkbox在提交后未检查

时间:2013-04-30 05:49:11

标签: php validation checkbox

$color="";<br>
$sel4="";<br>
$suc="";<br>
if(isset($_POST['save']))   <br>
{<br>
$e="0";<br>
if(isset($_POST['color']))<br>
{<br>
    $color=$_POST['color'];<br>
}<br>
else<br>
{<br>
    $sel4="<--Check Any Color";<br>
    $e="1";<br>
}<br>
if($e==0)<br>
{<br>
$suc="Success";<br>
}<br>
}<br>
?><br><br><br>
~~body~~<br>
~~form method="POST"~~<br>
~~table~~<br>
~~tr~~<br>
~~td~~<br>
color<br>
~~/td~~<br>
~~td~~<br>
~~input type="checkbox" name="color" value="blue" ~~? if($color=='blue'){ echo "checked";  }?>  /><br>Blue<br>
~~input type="checkbox" name="color" value="red" ~~? if($color=='red'){ echo "checked"; }?>  /><br>Red<br>
~~input type="checkbox" name="color" value="green" ~~? if($color=='green'){ echo "checked";  }?>  />Green<br>
~~input type="checkbox" name="color" value="yellow" ~~? if($color=='yellow'){ echo "checked";   }?>  />Yellow<br>
~~/td~~<br>
~~td~~?=$sel4;?~~<br>
~~/tr~~<br>
~~tr~~<br>
~~td colspan="3"~~<br>
~~input type="submit" name="save"~~<br>
~~/td~~<br>
~~?=$suc?~~<br>
~~/tr~~<br>
~~/table~~<br>
~~/form~~<br>
~~/body~~<br>

<br><br><br>

注意: html标记&lt;&gt;这里没用过。所以我用"~~"代替"<>"

主题:此程序运行正常..但是当我提交超过一个复选框时,选中的项目不在CHECKED
在提交表格后,只检查了一个项目。<br><br>

For Example:
当我检查“蓝色”和“红色”颜色时,它在提交后仅选中“红色”颜色。所以我需要这个错误的解决方案。帮助我!

2 个答案:

答案 0 :(得分:1)

您应该将复选框声明为数组

<input type='checkbox' name='color_list[]' value="red">
<input type='checkbox' name='color_list[]' value="blue">
<input type='checkbox' name='color_list[]' value="green">

这样一旦你得到它$_POST['color_list'],你就会选择一系列颜色。你可以这样做:

$colors_selected = $_POST['color_list'];

然后只使用像implode()这样的函数。我希望这会有所帮助。

答案 1 :(得分:0)

如果您$color内容为绿色

,则选中正确的代码来检查您的复选框
<input type="checkbox" name="color" value="green" <? if($color=='green'){ echo "checked"; }?> />

我认为你在php标签之前使用~~已经关闭了输入标签