😺
[php] チェックボックス
view
<!doctype html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>sample21</title>
</head>
<body>
<form action="submit.php" method="post">
<h2>ご予約希望日</h2>
<ul>
<li>
<label>
<input type="checkbox" name="reserve[]" value="1/1">1月1日
</label>
</li>
<li>
<label>
<input type="checkbox" name="reserve[]" value="1/2">1月2日
</label>
</li>
<li>
<label>
<input type="checkbox" name="reserve[]" value="1/3">1月3日
</label>
</li>
</ul>
<input type="submit" value="送信する">
</form>
</body>
</html>
<body>
<h2>ご予約日</h2>
<?php echo $_REQUEST['reserve']; ?>
<ul>
<li>1/2</li>
<li>1/3</li>
</ul>
</body>
Warning: Array to string conversion in
上記のままだとarrat→配列ですよっていうエラーが出現する
つまり今回ではこの$_REQUESTのreserveというのが配列ですよっていうことを注意されている。
このままではechoを行うことができない。
<body>
<h2>ご予約日</h2>
<?php $reserves = $_REQUEST['reserve']; ?>
<!-- いったんここで配列としてreservesを作りその中に配列として代入 -->
<ul>
<?php foreach ($reserves as $reserve): ?>
<li><?php echo htmlspecialchars($reserve,ENT_QUOTES); ?></li>
<!--formから受け取ってる値になるのでここにもhtmlspecialcharsを入れる -->
<?php endforeach; ?>
</ul>
</body>
空白で送信されるときのエラーを防ぐ
<body>
<h2>ご予約日</h2>
<?php if (!empty($_REQUEST['reserve'])) : ?>
<?php $reserves = $_REQUEST['reserve']; ?>
<ul>
<?php foreach ($reserves as $reserve): ?>
<li><?php echo htmlspecialchars($reserve,ENT_QUOTES); ?></li>
<?php endforeach; ?>
</ul>
<?php else: ?>
<P>ご予約はありません</P>
<?php endif; ?>
</body>
Discussion