クロピグログ

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

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

値の送受信(続き)

f:id:chromiumpig:20200909103037p:plain

●おさらいGET1

f:id:chromiumpig:20200909105025p:plain

●GETで受け取った値を出力(必須)

echo '<pre>';
var_dump($_GET);
echo '</pre>';

 

●エラーメッセージを管理する配列

$error = ;
1.値が届いているか?:isset命令
if (isset($_GET['id'])) {
  値が届いている時の処理
  $id = $_GET['id']; 使いやすい変数名に代入
  if (ctype_digit($id)) {
    整数に変換できる時の処理
    if ($id < 0 || $id > 2) {
      $error = '3.不正な値です';
    }
    整数に変換できなかった時の処理
  } else {
    $error = '2.不正な値です';
  } 値が届いていない時の処理
else {
  $error = '1.値が届いていません';
}

f:id:chromiumpig:20200909120536p:plain

 

●ctype_digit

var_dump(ctype_digit('10')); true
var_dump(ctype_digit('10a')); false
var_dump(ctype_digit('0.5')); false
var_dump(ctype_digit('abc')); false
var_dump(ctype_digit(10)); false
var_dump(ctype_digit(0.5)); false

文字列が数字かどうかを調べる

・文字のすべてが数字かどうか確認するので、「0.1」などは「.」が文字列になるのでfalseになる

重要な知識:PHPはHTMLから文字列型に変換して持ってくるので数値型でくることはない

 

●表示するためのHTML&PHP

 $error関数が0のときキャラ表示
<?php if (count($error) === 0) : ?>
   <h1>キャラクター</h1>
   <div class="name">
     名前:<?php echo $enemyList[$id]['name'?>
   </div>
   <div class="life">
     ライフ:<?php echo $enemyList[$id]['life'?>
   </div>
   <div class="img">
     <img src="<?php echo $enemyList[$id]['aliveImg'?>">
   </div>
$error関数が0じゃないときエラーメッセージ表示
 <?php else : ?>
   <h1>エラー</h1>
   <ul class="error">
     <?php foreach ($error as $val) : ?>
       <li><?php echo $val?></li>
     <?php endforeach?>
   </ul>
 <?php endif?>

 

●フォームで囲むとき

<form action="page.php" method="get">
 フォームの内容
<form>

・この場所は最悪<boby>のすぐ下でもOK(状況に応じて変えるのがなおよい)

 

●値の送受信を作成手順

1.ページ遷移図

・どのページ間で値のやり取りがあるのか

・値を何に使うのか

 ・値の名前

 ・値の内容:例)数値の場合の範囲など

2.送信側の作成

 ・フォームパーツを作成

3.受信側の作成

 ・受け取った値を確認

  ・$_GETや$_POSTをvar_dumpする

 ・値のチェック

 ・値を使った必要な処理を作成

  ・正しい値の時の処理

   例)情報の表示など

  ・不正な値の時の処理

   例)エラーメッセージの表示など

 ・正しい結果が得られるか確認

 

●おさらいGET2
      <ul>
        <li>
          <a href="page.php?id=0">バラモス</a>
        </li>
        <li>
          <a href="page.php?id=1">ゾーマ</a>
        </li>
        <li>
          <a href="page.php?id=2">デスピサロ</a>
        </li>
      </ul>