クロピグログ

職業訓練で学んだことまとめ

【PHP授業六日目】値の送受信(続き2)

値の送受信(続き2)

●入力系のパーツは「var_dump」で表示するとき未入力でも空文字入る

array(4) {
["myname"]=>
string(0) ""
["mail"]=>
string(0) ""
["comment"]=>
string(0) ""
["age"]=>
string(0) ""
}

 

HTML

●最初からやり直す(打ち込んだデータ消す場合)

<a href="form.html">
    再度ご入力ください
</a>

 

●戻るボタンの挙動(打ち込んだデータ残す場合)

 
 
<a href="javascript:void(0)" onclick="history.back();">
    再度ご入力ください
</a>

 

 

複数の値を送受信

f:id:chromiumpig:20200910160135p:plain

送信

<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>

受信

  //値が届いているか確認
  if (isset($_GET['hobby'])) {
    $getHobby = $_GET['hobby'];
    //配列かどうか確認
    if (is_array($getHobby)) {
      //配列が5個以下
      if (count($getHobby) <= 5) {
        foreach ($getHobby as $value) {
          if (ctype_digit($value)) {
            //整数の時
            if ($value < 1 || $value > 5) {
              //範囲外の時
              echo 'エラー:値が不正です';
            } else {
              //範囲内の時
              echo $hobbyList[$value. '<br>';
            }
            //整数ではない時
          } else {
            echo  'エラー:値が不正です';
          }
        }
//配列が5個以上
      } else {
        echo 'エラー:値が不正です';
      }
  //配列じゃない時
    } else {
      echo 'エラー:配列ではありません';
    }
 //値が届いていない時
  } else {
    echo '趣味を選択していません';
  }

・選択パーツの確認

・★値が届いているか?:isset命令

・値のデータ型の確認:ctype_digit関数

・値の範囲:比較演算子

 

●is_array

・変数が配列かどうかを検査する

 

●配列のクエリ文字の注意

・「%5B」は「 [ 」

・「%5D」は「 ] 」

 

hobby%5B%5D=3

↓置き換えると

hobby=3