PHP复选框为布尔值

时间:2015-11-29 17:14:34

标签: php checkbox

我需要使用复选框中的数据在SQL中创建Preferences表。那就是Pool,Jacuzzi,Backyard,Smart House是Preferences中的列,它们是TINYINTS来表示布尔值T或F.当用户选中一个框时,我希望值为1,否则它保持为0.所以说用户想要一个游泳池和一个后院,检查这两个盒子。我的$ _POST [preferences]将是一个[1,0,1,0]。

的数组
<input type="checkbox" name="preferences[]" value="Pool"> Pool<br>
<input type="checkbox" name="preferences[]" value="Jacuzzi"> Jacuzzi<br>
<input type="checkbox" name="preferences[]" value="Backyard"> Backyard<br>
<input type="checkbox" name="preferences[]" value="Smart"> Smart House<br>

更新: 好的,这很接近。这就是我所拥有的与此类似的东西,但是我无法判断它是否实际上给出的值为1或0.如果它为1,它会显示在数组中,但如果未检查则不会。所以它最终成为[Pool,Jacuzzi]。我不确定它们的值是否为1而其他值的值是0,或者只是暗示它。

foreach ($preferences as $key => $val) {
if(isset($key)){
$val=1;
}
else{
$val = 0;
}
}

UPDATE2:解决方案我发现其工作方式类似于@ chris85

 ** I found out that keeping hidden checkboxes would work for defaulting values to zero if they arent checked.

 <input type="hidden" name="pool" value="0"/>
 <input type="checkbox" id="pool" name="pool" value="1">Pool<br>

 $low= $_POST['low'];
 $high =$_POST['high'];
 $pool = $_POST['pool'];
 $jacuzzi= $_POST['jacuzzi'];
 $backyard= $_POST['backyard'];
 $smart= $_POST['smart'];
 $addPreferences = "INSERT INTO Preferences(Pool,Jacuzzi,Backyard,Smart)
 VALUES ('$pool','$jacuzzi','$backyard','$smart')";

2 个答案:

答案 0 :(得分:1)

您可以执行以下操作,为每个首选项指定值。

$magic['pool'] = 0;
$magic['smart'] = 0;
$magic['jacuzzi'] = 0;
$magic['backyard'] = 0;
if(!empty($preferences)){
    foreach($preferences as $preference) {
        $magic[$preference] = 1;
    }
}
print_r($magic);

输出:

Array
(
    [pool] => 0
    [smart] => 0
    [jacuzzi] => 0
    [backyard] => 0
)

答案 1 :(得分:0)

试试这个

$val = count($_POST['preferences']) ? 1 : 0;