0

我有一个过去一直在工作的 HTML 表单的 PHP 处理脚本。我们已经广泛使用了该表格,并且一切都很好地进入了数据库。现在我再次使用它(在同一页面上,它直到现在才处于非活动状态)并且我的复选框处理遇到了一些麻烦。

我一直在玩弄它,试图看看我在哪里搞砸了,我收集到我一定是错误地处理了 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 is going on”,如果我理解正确,那是因为我在测试时确实检查了 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;
    }
}

任何帮助将不胜感激。我确定我只是缺少一些简单的东西。这是我第一次在这里提出问题,所以如果我遗漏了将来应该包括的任何内容,请告诉我。

4

1 回答 1

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;
于 2012-07-19T02:55:36.487 回答