LoginSignup
1
1

More than 3 years have passed since last update.

PHPの基本操作③ 「入力欄、ラジオボタン、チェックボックス」

Last updated at Posted at 2021-04-23

参考書籍

よくわかるPHPの教科書 PHP7対応版

他記事リンク

フォームに入力した内容を取得する

以下は「submit.php」宛に送信するフォームです。

フォームのHTML
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
  </head>
  <body>
    <form action="submit.php" method="get">
      <label for="my_name">お名前:</label>
      <input type="text" name="my_name" maxlength="255">
      <input type="submit" value="送信する">
    </form>
  </body>
</html>

送信されてきたデータを受け取るときには、name属性を指定して取得します。例えば名前の入力欄の値を取得するときには、以下のように記述します。

$_GET['my_name'];

※上記のformのmethodがGETのため。POSTの時には$_POSTを使う

しかし入力欄に「<」と「>」で囲まれた値がある場合、それをHTMLとして受け取ってしまい、画面に正しく表示されません。
そのため、うけとった値のHTMLタグの効果を打ち消すためにhtmlspecialchars関数を使います。

htmlspecialchars($_GET['my_name'], ENT_QUOTES);

実際に取得して出力するには以下のように記述します。

submit.php
お名前: <?php print(htmlspecialchars($_REQUEST['my_name'], ENT_QUOTES)); ?>

ラジオボタンの値を取得する

以下は「submit.php」宛に送信するフォームです。

フォームのHTML
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
  </head>
  <body>
    <form action="submit.php" method="post">
      <p>性別:
        <input type="radio" name="gender" value="male">男性/
        <input type="radio" name="gender" value="female">女性
      </p>
      <input type="submit" value="送信する">
    </form>
  </body>
</html>

ラジオボタンの場合も同様に、name属性を指定して取得をします。

submit.php
性別:
<?php
  print(htmlspecialchars($_POST['gender'], ENT_QUOTES));
?>

※しかし、取得されるのはタグに囲まれている値ではなく、valueの値なので注意が必要です。

チェックボックスの値を取得する

以下は「submit.php」宛に送信するフォームです。
複数選択可能なチェックボックスなどをformで作成する場合には、必ず「[]」という記号をname属性に付与してください。そうすることで、PHP側で取得した時に取得した値を配列として扱うことができ、複数の値を扱えます。

フォームのHTML
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
  </head>
  <body>
    <form action="submit.php" method="post">
      <p>ご予約希望日(複数選択可)</p>
      <p>
        <input type="checkbox" name="reserve[]" value="1/1">1月1日<br>
        <input type="checkbox" name="reserve[]" value="1/2">1月2日<br>
        <input type="checkbox" name="reserve[]" value="1/3">1月3日<br>
      </p>
      <input type="submit" value="送信する">
    </form>
  </body>
</html>

name属性を取得する時には、「[]」は省略します。
取得した値は自動的に配列になります。

submit.php
ご予約日:
<?php
  foreach($_POST['reserve'] as $reserve) {
    print(htmlspecialchars($reserve, ENT_QUOTES) . ' ');
  }
?>
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1