戻る

複数のチェックボックスの状態を変数名で調べる

$_POST、$_GET、for

同類の選択を複数のチェックボックスで行う場合でも、それぞれのチェックボックスには異なるname属性を設定しなければなりません。そのような場合、name属性に一連の番号を含む名前を設定することにより、ループ処理で個々のチェックの有無を調べることができます。

この例では、まずHTML文において、各チェックボックスのname属性を「inputdata」で始まる1~4の連番で設定しています。受け取り側のPHPスクリプトでは「$_POST["inputdata"]」という表記の変数で、$iの部分を1~4のループで変化させて、個々の状態を調べています。例えば$iの値が「2」の時は、「$_POST["inputdata2"]という変数の内容を調べることになります。

なお、「inputdata」と「1~4」を結合して1つの変数名として扱われるよう、前後に「"」を付けなければならないことに注意してください。

最初の画面で、チェックボックスにチェックを入れて「送信」ボタンをクリックすると、各チェックボックスのチェックの有無が表示されます。

<?php
header("Content-type: text/html; charset=utf-8");

if(isset($_POST["btnExec"])){
	for($i = 1; $i <= 4; $i++){
		if(isset($_POST["inputdata$i"])){
			echo "{$i}ケめのチェックボックスはON<br>";
		}
		else{
			echo "{$i}ケめのチェックボックスはOFF<br>";
		}
	}
	echo "<br><br>";
}
?>
<!DOCTYPE HTML>
<html lang="ja-JP">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
開発経験のある言語にチェックをつけて「送信」ボタンをクリックしてください(複数選択可)。
<form action="<?=$_SERVER["PHP_SELF"]?>" method="POST">
	<input type="checkbox" name="inputdata1">PHP<br>
	<input type="checkbox" name="inputdata2">Java<br>
	<input type="checkbox" name="inputdata3">CGI<br>
	<input type="checkbox" name="inputdata4">C++<br>
	<input type="submit" name="btnExec" value="送信">
</form>
</body>
</html>

inserted by FC2 system