PHP学習 フォームの受け渡し(2) チェックボックスなど
前回に引き続きPHPのフォームについてまとめていきます!
チェックボックスでのフォームの受け渡し
チェックボックスの場合は前回の記述の仕方でと上手く取得することができません!
まず、前回同様にhtmlを書いていきます。
今回は仮に好きな都市を選択するチェックボックスがあったていで作成してみます!
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form action="submit.php" method="post">
<h2>好きな都市</h2>
<ul>
<li>
<label>
<input type="checkbox" name="city[]" value="北海道">北海道
</label>
</li>
<li>
<label>
<input type="checkbox" name="city[]" value="東京">東京
</label>
</li>
<li>
<label>
<input type="checkbox" name="city[]" value="大阪">大阪
</label>
</li>
<li>
<label>
<input type="checkbox" name="city[]" value="沖縄">沖縄
</label>
</li>
</ul>
<input type="submit" value="送信する">
</form>
</body>
</html>
ここで注意する箇所としては、
・同じチェックボックスの種類は、同じname属性にする。(ここではcityとしています)
・name属性の後に必ず[]カッコをつける。チェックボックスは配列で取得するので、配列を示す[]を付与します。
submit.phpの内容
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h2>好きな都市</h2>
<?php if (!empty($_POST['city'])): ?>
<?php $citys = $_POST['city']; ?>
<ul>
<?php foreach($citys as $city): ?>
<li><?php echo htmlspecialchars($city, ENT_QUOTES); ?></li>
<?php endforeach; ?>
</ul>
<?php else: ?>
<p>選択されておりません!!</p>
<?php endif; ?>
</body>
</html>
submit.phpは以上の記述で設定いたします。
<?php if (!empty($_POST['city'])): ?>
<?php $citys = $_POST['city']; ?>
<ul>
<?php foreach($citys as $city): ?>
<li><?php echo htmlspecialchars($city, ENT_QUOTES); ?></li>
<?php endforeach; ?>
</ul>
<?php else: ?>
<p>選択されておりません!!</p>
<?php endif; ?>
<?php if (!empty($_POST['city'])): ?>
もし、name属性のcityが空欄でなければ、
<?php $citys = $_POST['city']; ?>
cityの配列を$citysという変数に格納します。
※配列で取得されるので、一旦変数に入れてforeachで繰り返しにします。
<ul>
<?php foreach($citys as $city): ?>
<li><?php echo htmlspecialchars($city, ENT_QUOTES); ?></li>
<?php endforeach; ?>
</ul>
foreach構文で選択された箇所をforeachで回し、選択された箇所だけ表示する。
<?php else: ?>
<p>選択されておりません!!</p>
<?php endif; ?>
それ以外なら、
<p>選択されておりません!!</p>を表示させる。
if構文を終了させる。
と言った具合でしょうか?
因みに、
北海道、東京を選択すると、
選択された箇所のみ取得することができました!!