はじめに
PHPでWebページを作っていて、 チェックボックスを設置することがありました。
チェックボックスを設置出来たのはいいものの、ページを表示したときに チェックボックスの1番目にチェックが自動で入っていませんでした。
さらに、「送信ボタン」を押すと チェックボックスのチェックがクリアされてしまいます。
この2つの問題を解決したのでまとめておきます。
修正前
修正前のコードは下のような感じです。
ただチェックボックスを3つ設置しただけのものです。
<form method="POST" action="checkbox.php">
<label><input type="checkbox" name="chkbx[]" value="1">Check Box 1</label>
<br>
<label><input type="checkbox" name="chkbx[]" value="2">Check Box 2</label>
<br>
<label><input type="checkbox" name="chkbx[]" value="3">Check Box 3</label>
<br>
<input type="submit" value="update">
</form>
画面上では下のように表示されます。
上ではHTMLなので「update」ボタンは機能していませんが、初期状態でチェックが入っていないのが分かります。
PHPのコードを修正して、初期状態でチェックが入っていないことと送信後にチェックが外れてしまうことを解決しました。
修正後
修正後のコードは下の通りです。
<form method="POST" action="checkbox.php">
<label><input type="checkbox" name="chkbx[]" value="1" <?php if(empty($_POST['chkbx'])||in_array("1",$_POST['chkbx'])) echo 'checked'?>>Check Box 1</label>
<br>
<label><input type="checkbox" name="chkbx[]" value="2" <?php if(isset($_POST['chkbx'])&&in_array("2",$_POST['chkbx'])) echo 'checked'?>>Check Box 2</label>
<br>
<label><input type="checkbox" name="chkbx[]" value="3" <?php if(isset($_POST['chkbx'])&&in_array("3",$_POST['chkbx'])) echo 'checked'?>>Check Box 3</label>
<br>
<input type="submit" value="update">
</form>
画面上の表示は下のようになります。
少しコードは複雑になりましたが、初期状態でチェックが入っているようになり、送信をしてもチェックが外れなくなりました。
コメント