我需要使用复选框中的数据在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')";
答案 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;