過去に機能していた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のチェックボックスがチェックされていないためです。また、この方法では、私のDBはこれらをNULLとして反映します。つまり、チェックボックスがチェックされていません。
ただし、私の古いコードでは、DBはすべての値を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;
}
}
どんな助けでも大歓迎です。単純なものが欠けていると確信しています。ここで質問するのは初めてですので、今後含めるべきものを省略した場合はお知らせください。