【问题标题】:Form validation by checkbox using php使用php通过复选框进行表单验证
【发布时间】:2013-05-08 14:10:48
【问题描述】:
<?
$val="";
if(isset($_POST['save']))   
{
    if(isset($_POST['color']))
    {
        $color=$_POST['color'];
        foreach($color as $val)
        {
            echo $val."<br>";
        }
    }
}

?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<form method="post">
<input type="checkbox" name="color[]" value="blue" <? if($val=='blue'){ echo "checked"; }?> />Blue
<input type="checkbox" name="color[]" value="red"<? if($val=='red'){ echo "checked"; }?> />Red
<input type="checkbox" name="color[]" value="green"<? if($val=='green'){ echo "checked"; }?>/>Green
<input type="checkbox" name="color[]" value="yellow"<? if($val=='yellow'){ echo "checked"; }?>/>Yellow
<input type="checkbox" name="color[]" value="white"<? if($val=='white'){ echo "checked"; }?>/>White

<input type="submit" name="save">
</form>
</body>
</html>

当我选择一个复选框时,然后单击“保存”,复选框被选中并且颜色在顶部可见。
但是,当我选择多个复选框时,然后单击“保存”,仅选中一个复选框,但颜色在顶部可见。

所以我需要我的代码来保持选中复选框并使颜色保持不变。例如。当我选中红色、绿色、黄色复选框时,点击“保存”后,它应该是“已检查”。

【问题讨论】:

    标签: php validation checkbox


    【解决方案1】:

    那是因为您在每次循环执行时都会覆盖 $val 的值,所以它只会包含最后一个。您需要将它们分配给一个数组 - 例如:

    $selected = array();
    ...
    foreach($color as $val)
    {
        $selected[] = $val;
        echo $val."<br>";
    }
    ...
    <input type="checkbox" name="color[]" value="blue" <? if(in_array('blue',$selected)) echo "checked"; ?> />Blue
    // and so on
    

    【讨论】:

      猜你喜欢
      • 2013-03-09
      • 2014-08-27
      • 2018-10-26
      • 2012-10-01
      • 1970-01-01
      • 2015-04-06
      • 1970-01-01
      • 2023-03-30
      • 2012-10-12
      相关资源
      最近更新 更多