考え、感じる、Web制作。

Web制作の学習や情報についての記事が中心です。

百人一首クイズ4

百人一首クイズ 仕上げ

今回は出題ページと回答ページ間の往復処理に関するセッションデータの記述を主に進める。


出題ページにも現在の正解数を表示させる

回答ページ(answer.php)で「x問中y問正解」という記述を入れたので、出題(index.php)ページにも出したい。ただし、最初の1問目では表示させる必要がないので、その処理を書き加える。まず、answer.phpで$_SESSION['shokai']という変数を+1させ、index.phpで判別させることで実現させた。index.phpの$code=$mondai['1'];を削除し、下記を追記する。

if(isset($_SESSION['shokai'])&&$_SESSION['shokai']===1){
  $monme2=$_SESSION['monme'];
  $monme2--;
  $monme=$_SESSION['monme'];
  $code=$_SESSION['seikai']['code'];
  $kami=$_SESSION['seikai']['kami'];
  $shimo=$_SESSION['seikai']['shimo'];
  $poet=$_SESSION['seikai']['poet'];
  $ok_count=$_SESSION['seikai']['ok_count'];
  $_SESSION['shokai']=0;
}else{
  $monme=1;
  $_SESSION['monme']=1;
  $_SESSION['seikai']['ok_count']=0;
  $_SESSION['shokai']=0;
}

$_SESSION['shokai']が空でなく、かつ1である場合にはセッションからデータを受け取る。$monme2は「x問中y問正解」のxに当たる変数である。この記述により、ブラウザ表示部の最下段に下記を追記する。

  if($monme>1){
    echo"<p>現在、".$monme2."問中".$ok_count."問正解しています</p>";
  }

一方、answer.phpに追記するのは$_SESSION['shokai']++;のみである。


回答ページリダイレクト修正

上記の修正により、answer.phpのリダイレクト条件に$_SESSION['shokai']>0が追加される。

if(!isset($_POST)||$_SESSION['shokai']>0){
  header(ROOT_URL.'index.php');
}

感想

cssの仕上げまで含めると、およそ7時間半の時間を要した。セッションデータとして何が必要かを事前に把握できていなかったため、手探り状態でのコーディングとなった。処理フローを把握し、各ページの変数一覧やセッションデータ一覧があればどれほど工数が削減できただろうか、と反省する。
しかし、現状の自分のスキルでは事前にそういった仕様を細かく決められるスキルがない。こうした場数を踏むことで、将来的に細かいフローを書けるようになるであろうと考える。