alienHRNの訓練日記

IT業界初心者で勉強中。

20200910 授業メモ おさらい問題演習  PHP 複数の値の取得と表示(チェックボックス)

授業内容

$error=[ ];の意味

<?php ?>と<body>を分けて記述する際に必要な配列

※<body>の中に<?php ?>を記述している場合は必要なし。

 

f:id:alienHRN:20200910134006p:plain

おさらい問題2

f:id:alienHRN:20200910133938p:plain

おさらい問題

 

〇osarai_get04
-----------------------送信側------------------------

<!DOCTYPE html>
<html lang="ja">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <form action="confirm.php" method="get">
    <fieldset>
      <legend>
        <h1>口コミ</h1>
      </legend>
      <h2>名前</h2>
      <input type="text" name="myname" placeholder="例)ゆーほ"><br>
      <h2>メールアドレス</h2>
      <!-- <input type="text" name="mail" placeholder="例)example@~" required><br> -->

      <h2>評価</h2>
      <dl>
        <dd>
          <label><input type="radio" name="rating" value="0"> 1</label>
          <label><input type="radio" name="rating" value="1"> 2</label>
          <label><input type="radio" name="rating" value="2"> 3</label>
          <label><input type="radio" name="rating" value="3"> 4</label>
          <label><input type="radio" name="rating" value="4"> 5</label>
        </dd>
      </dl>
    </fieldset>
    <fieldset>

      <h2>コメント</h2>
      <textarea name="comment" cols="30" rows="10"></textarea><br>


      <legend>
        <h1>アンケート</h1>
      </legend>
      <h2>性別</h2>
      <dl>
        <dd>
          <label><input type="radio" name="gender" value="0"> 男性</label>
          <label><input type="radio" name="gender" value="1"> 女性</label>
        </dd>
      </dl>


      <h2>年代</h2>
      <select name="age" required>
        <option value="">選択してください</option>
        <option value="1">10代</option>
        <option value="2">20代</option>
        <option value="3">30代</option>
        <option value="4">40代</option>
        <option value="5">50代以上</option>
      </select><br>
      <h2>OS</h2>
      <form action="confirm.php" method="get">
        <dl>
          <dd>
            <label><input type="checkbox" name="os" value="1">Windows</label>
            <label><input type="checkbox" name="os" value="2">Mac</label>
            <label><input type="checkbox" name="os" value="3">Linux</label>
          </dd>
        </dl>
      </form>
      <input type="submit" value="発射!">
  </form>
  </fieldset>
</body>

</html>

-------------------受信側--------------------------

<!DOCTYPE html>
<html lang="ja">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <?php

  echo '<h2>ばーだんぷ表示</h2>';
  echo '<pre>';
  var_dump($_GET['os']);
  echo '</pre>';



  echo '<h1>クチコミの結果</h1>';
  echo '<h2>問1 名前の表示</h2>';

  if (isset($_GET['myname'])) {

    if (($_GET['myname']) == "") {
      echo '名前が入力されていません';
    };
    if (mb_strlen($_GET['myname']) > 20) {

      echo '20文字以内で入力してください';
    } else {

      echo ($_GET['myname']);
    };
  } else {
    echo '名前の値が届いていません';
  };


  echo '<h2>アドレスの表示</h2>';
  echo ($_GET['mail']);


  echo '<h2>問2 評価の表示</h2>';



  if (isset($_GET['rating'])) {
    $ratNum = $_GET['rating'];
    $ratList = [
      "☆",
      "☆☆",
      "☆☆☆",
      "☆☆☆☆",
      "☆☆☆☆☆",
    ];
    if (ctype_digit($_GET['rating'])) {
      echo $ratList[$ratNum];
    } else {
      echo '評価の値が不正です';
    };
  } else {

    echo '評価選択し忘れ。';
  };



  echo '<h2>問3 コメントの表示</h2>';



  if (isset($_GET['comment'])) {
    $cMnt = $_GET['comment'];

    if (($_GET['comment']) == "") {
      echo 'コメントが入力されていません';
    };
    if (mb_strlen($_GET['comment']) > 50) {

      echo '50文字以内で入力してください';
    } else {

      echo nl2br($cMnt);
    };
  } else {
    echo 'コメントの値が届いていません';
  };



  echo '<h1>アンケートの結果</h1>';
  echo '<h2>問4 性別の表示</h2>';


  if (isset($_GET['gender'])) {
    $genderNum = $_GET['gender'];
    $genderList = [
      '男性',
      '女性',
    ];
    if (ctype_digit($_GET['gender']) && $_GET['gender'] < 2) {
      echo $genderList[$genderNum];
    } else {
      echo "不正すんな";
    }
  } else {
    echo "男女どっち?";
  };




  echo '<h2>年齢の表示</h2>';
  //  echo $_GET['age'];確認用
  $ageNum = $_GET['age'];

  $ageList = [
    "",
    "10代",
    "20代",
    "30代",
    "40代",
    "50代以上",
  ];
  echo $ageList[$ageNum];


  echo '<h2>問5 OSの表示</h2>';
  ※〇複数の値を取得し、表示させる方法の応用

  $osList = [
    "1" => "Windows",
    "2" => "Mac",
    "3" => "Linux",
  ];

  if (isset($_GET['os'])) {

    $osNum = $_GET['os'];

    if (is_array($osNum)) {


      foreach ($osNum as $value) {
        if (ctype_digit($value)) {
          if ($value < 1 || 3 < $value) {
            echo '範囲外';
          } else {
            echo $osList[$value. "<br>";
          }
        } else {
          echo '整数じゃないし!!';
        }
      }
    } else {

      echo '配列じゃない';
    }
  } else {
    echo 'OSが選択されていません';
  };

  ?>

</body>

</html>

 

 

〇複数の値を取得し、表示させる方法
--------------------送信側--------------------
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>複数の値を送信</title>
</head>
<body>
  <h1>複数の値を送信</h1>
  <form action="03-2_array_confirm.php" method="get">
    <h2>趣味は?</h2>
    <label><input type="checkbox" name="hobby" value="1">音楽鑑賞</label>
    <label><input type="checkbox" name="hobby" value="2">映画鑑賞</label>
    <label><input type="checkbox" name="hobby" value="3">ドライブ</label>
    <label><input type="checkbox" name="hobby" value="4">旅行</label>
    <label><input type="checkbox" name="hobby" value="5">その他</label>

    <p>
      <input type="submit" value="投票する">
    </p>
  </form>
</body>
</html>


--------------------受信側--------------------
<!DOCTYPE html>
<html lang="ja">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>複数の値を取得</title>
</head>

<body>



  <h1>複数の値を取得</h1>
  <?php




  echo '<h2>1回目の出力</h2>';
  echo '<pre>';
  var_dump($_GET);
  echo '</pre>';

  echo '<h2>趣味の出力</h2>';
  // 選択系パーツの確認
  // 値が届いているかのチェック isset命令
  // 値のデータ型の確認:ctype_digit関数
  // 値の範囲:比較演算子


  if (isset($_GET['hobby'])) {
    $getHobby = $_GET['hobby'];


    echo "<pre>";
    var_dump($getHobby);
    echo "</pre>";


    $movieList = [
      "音楽鑑賞",
      "映画鑑賞",
      "ドライブ",
      "旅行",
      "その他",
    ];

    if (is_array($getHobby)) {
      foreach ($getHobby as $value) {
        if (ctype_digit($value)) {

          if ($value < 1 || 5 < $value) {
            echo "不正だぞ";
          } else {
            echo
              $movieList[$value. "<br>";
          }
        } else {
          echo "不正だって";
        }
      }
    }
  } else {
    echo "選択しろ";
  };

  echo '<h2>2回目の出力</h2>';
  if (isset($_GET['hobby'])) {
    $getHobby = $_GET['hobby'];
    if (is_array($getHobby)) {
      foreach ($getHobby as $value) {
        echo $value . '<br>';
      }
    } else {
      echo 'エラー:配列ではありません';
    }
  } else {
    echo '趣味を選択していません';
  }
  ?>
  <p>
    <a href="03-1_array_form.html">フォームに戻る</a>
  </p>
</body>

</html>