😺

[php] チェックボックス

2024/03/25に公開

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