我需要使用复选框中的数据在SQL中创建首选项表。也就是说,游泳池、按摩浴缸、后院、智能住宅是首选项中的列,它们是TINYINTS来表示布尔值T或F。当用户选中一个框时,我希望值为1,否则保持为0。假设用户想要一个游泳池和一个后院,并选中这两个框。我的$_POSTpreferences应该是一个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')";发布于 2015-11-30 01:26:49
您可以这样做,为每个首选项赋值。
$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
)发布于 2015-11-30 01:15:50
试着这样做
$val = count($_POST['preferences']) ? 1 : 0;https://stackoverflow.com/questions/33985573
复制相似问题