我有一个过去一直在使用的HTML表单的PHP处理脚本。我们已经广泛使用了这个表格,一切都进入了DB就好了。现在我再次使用它(在同一页面上,它到目前为止一直处于非活动状态)并且我在处理复选框时遇到了一些麻烦。
我一直在玩弄它,试着看看我搞砸了,我收集到的,我必须错误地处理PHP中的复选框。这就是我目前所拥有的:
HTML:
<label for="race" style="padding-right: 15px;">Race:</label>
White <input type="checkbox" name="raceWhite" value="White" />
Black <input type="checkbox" name="raceBlack" value="Black" />
Asian/Pacific Islander <input type="checkbox" name="raceAsian" value="Asian/Pacific Islander" />
Hispanic/Latino <input type="checkbox" name="raceHispanic" value="Hispanic/Latino" />
Other <input type="checkbox" id="race" name="raceOther" value="Other" />
这是我的PHP:
if (isset($_POST['raceWhite']))
$white = true;
else echo "wtf is going on";
if (isset($_POST['raceBlack']))
$black = true;
if (isset($_POST['raceAsian']))
$asian = true;
if (isset($_POST['raceHispanic']))
$hispanic = true;
if (isset($_POST['raceOther']))
$otherRace = true;
我很担心,因为我正在回应“wtf正在进行”,如果我理解正确,那是因为当我确实检查它时,不检查raceWhite的复选框。此外,使用此方法,我的数据库将这些反映为NULL - 即未选中复选框。
但是,使用我的旧代码,数据库将所有值翻转为1,表示要检查的所有复选框。我的旧代码是这样的:
HTML:
<label for="race" style="padding-right: 15px;">Race:</label>
White <input type="checkbox" name="race[]" value="White" />
Black <input type="checkbox" name="race[]" value="Black" />
Asian/Pacific Islander <input type="checkbox" name="race[]" value="Asian/Pacific Islander" />
Hispanic/Latino <input type="checkbox" name="race[]" value="Hispanic/Latino" />
Other <input type="checkbox" id="race" name="race[]" value="Other" />
PHP:
$raceList = $_POST["race"];
$n = count($raceList);
for($i = 0; $i < $n; $i++){
switch($raceList[$i]){
case "White":
$white = 1;
case "Black":
$black = 1;
case "Asian/Pacific Islander":
$asian = 1;
case "Hispanic/Latino":
$hispanic = 1;
case "Other":
$otherRace = 1;
}
}
非常感谢任何帮助。我确定我只是遗漏了一些简单的东西。这是我第一次在这里提问,所以如果我遗漏了将来应该包含的任何内容,请告诉我。
答案 0 :(得分:1)
你可以写为
$white = (isset($_POST['raceWhite']) && $_POST['raceWhite']=='White') ? 1 : 0;
$black = (isset($_POST['raceBlack']) && $_POST['raceBlack']=='Black') ? 1 : 0;
$asian = (isset($_POST['raceAsian']) && $_POST['raceAsian']=='Asian/Pacific Islander') ? 1 : 0;
$hispanic = (isset($_POST['raceHispanic']) && $_POST['raceHispanic']=='Hispanic/Latino') ? 1 : 0;
$otherRace = (isset($_POST['raceOther']) && $_POST['raceOther']=='Other') ? 1 : 0;