プログラミング

【第8弾】「3択クイズ」Webアプリ開発を通してPHPの役割を理解しよう!

「3択クイズ」Webアプリ開発を通してPHPの役割を理解しよう!

こんにちは!

今回は、PHPで『月5万円』稼ぐためのロードマップ第8弾ということで、1つ目の課題である「3択クイズアプリの作成」の続きを実装していきます!

前回の第7弾では「3択クイズアプリ」を作成するにあたって、PHPでの機能の実装を開始しましたね!

今回は「3択クイズアプリ」の作成のパート4となっていますので、まだこれまでの記事を読んでないと言う方は以下の記事から読み進めてもらうと良いと思います!

PHP初心者でも簡単!『3択クイズ』Webアプリを作ってみよう!
【第5弾】PHP初心者でも簡単!『3択クイズ』Webアプリを作ってみよう!こんにちは! 今回は、PHPで『月5万円』稼ぐためのロードマップの第5弾ということで、1つ目の課題である「3択クイズアプリの作成」...

PHPで「月5万円」を稼ぐためのロードマップでは、手順通りに一緒に勉強していけば、全員がPHPで案件を受注できるレベルになることを目標としています。この第8弾を見る前に、PHPで『月5万円』稼ぐためのロードマップの使い方や、特長を分かってもらうためにも第1弾から是非お読みください!

というか必見です!この先一緒に様々な制作物を作成していきますが、第1弾からの内容を読んでから取り組むのとそうでないのとでは、学習効率に雲泥の差が出てくると思います。

【第1弾】PHP初心者の80%が間違えている5つの注意点を解説今回から定期的に投稿する「PHPで『月5万円』稼ぐためのロードマップ」は実際に、ゼロからPHP学習を始めて、仕事をもらい、Webアプリを...

また、PHPで『月5万円』稼ぐためのロードマップで一体何が作れるようになるのか気になった方は、以下の第4弾をご覧ください。

 

【第4弾】月5万円稼ぐためのロードマップで何が作れるようになるの?こんにちは! 今回は、PHPで『月5万円』稼ぐためのロードマップの第4弾ということで、このPHPで『月5万円』稼ぐためのロードマッ...

 

こんな方におすすめ
  • PHPでWebアプリを作りたい!
  • 基礎はバッチリだけど案件はまだちょっと・・・
  • 第7弾まで読んでくれた人

それでは、「3択クイズアプリ」の作成の続きに入っていきましょう!

PHPの実装

ブログを書く2人の男女Freepik – jp.freepik.com によって作成された watercolor ベクトル 

今回の第8弾では、「3択クイズアプリ」に、PHPで様々な機能を追加して、完成に近づけていきます!

では、以下では前回までに作成したそれぞれのファイルにPHPを書き加えていきましょう。

index.html

 

「index.html」は、HTMLファイルなので、PHPで機能を実装する箇所はありません。

次のファイルに進みましょう!

quiz.php

「quiz.php」は、前回の第7弾で実装は完了していますね!そのため機能を追加する箇所はありません。

次のファイルに進みましょう!

quiz_result.php

「quiz_result.php」は、PHPファイルなので、「quiz.php」と同様に、PHPで機能を追加していく必要がありそうですね!

前回(第6弾)は、以下の画像のところまで作成を進めたと思います。

3択クイズアプリのデザインの途中段階

ただ、第5弾で確認してほしのですが「3択クイズアプリ」の完成版を見てみると、前回の第7弾で作成した「quiz.php」の方が「quiz_result.php」の完成形の見た目に近いように思いませんか?いや、思いますよね?

ということで、「quiz.php」の内容を「quiz_result.php」にコピーしてしまいましょう!

もちろん、「quiz.php」と内容は同じなので、この画像のようになるはずですよね!

では、ここからは以下のような手順でPHPの実装を行っていきます。

  1. 渡された結果が正解か不正解かを判断する設定
  2. 正解の選択肢に〇をつける設定
  3. クイズが終了すると結果表示に飛ばす設定

 

渡された結果が正解か不正解かを判断する設定

まず、「quiz.php」のときに実装した以下のようなソースコード(配列の定義の部分)を探してください。「quiz_result.php」内から探してくださいね!

この下に、「渡された結果が正解か不正解かを判断する設定」を実装していきます。

以下のようにソースコードを記述してください。各パートの説明は後述します。

まず、初めにポストされたクイズの結果を$responseと定義しています。

ライアン
ライアン
responseって何ぞや!?

って思われた方は、第7弾で作成した「quiz.php」のソースコードをもう一度見直してみてください。

ラジオボタンを作成したときに、 <input id=”check-c” type=”radio” name=”response” value=”right”>のように書いているところはありませんでしたか?

もし上記の<input>文にチェックをつけたまま、クイズの結果を送信(POST)したとすると、$responseにはvalue=”right”rightが格納されますね!つまり、$responseには、「quiz.php」(問題表示部)で選んだ選択肢(leftcenterright)が格納されています。

 

次にその下では、各問題における正解の選択肢の並びを配列$answerに格納しています。

日本で最初の2番目に高い山は?の正解の選択肢を左側に配置していたなら、$answerの0番目の要素は”left”となりますね。2番目や3番目の質問も同様に、正解の選択肢がそれぞれ、「右・右」と配置しているなら、先ほどの1番目の質問の選択肢と合わせて、$answer=[“left”,”right”,”right”]となることは分かるでしょうか?

 

さらにその下部では、回答者が選んだ選択肢の答えである$responseと、$times番目の問題における正解の選択肢である$answer[$times]が等しいとき、変数$t_or_f(true or falseの意)を1に,そうでなければ0を格納します。

また、変数$t_or_fが1であるときとは,回答者が正解の選択肢を選んだということなので、正解数を表す変数$num_correctに1をプラスしておきます。

その後のif文は至って単純です。

正解なら($t_or_fが1なら)「正解」と表示し、不正解なら「不正解」と表示するというだけです!

正解の選択肢に〇をつける部分

ここでは、「quiz.php」で実装した<div class=”question-box”></div>の内容を修正していきます。まず、ソースコードは以下のようになっていると思います。

 

このとき「quiz.php」を編集するのではなく、「quiz.php」をコピーして作成した「quiz_result.php」を編集するようにしてください。

では、内容を修正していきましょう!

まずは、この図を見てください。

今回作成する3択クイズアプリの結果の表示は、正解であれば図のようにが表示されて、不正解であれば、白く半透明になるような仕様としています。

この機能をPHPで実装していきましょう。

初めに、「quiz_result.php」では、結果を表示する部分であるため、「quiz.php」でラジオボタンを追加しましたが、必要ありませんよね。

<form method=”POST” class=”form” action=”quiz_result.php”></form>を削除しておきましょう!

 

ここからは、少し複雑になるので、一度第5弾で3択クイズアプリの完成版の動画を確認して、「どのような機能を実装するべきなのか」を確認しておくと良いかもしれません!

 

まずは、正解と不正解とで、条件分岐が2つに分かれるので<div class=”question-box-left”>~</div>をコピペして、同じquestion-box-leftが2つ並ぶようにしてください。

次に、<div class=”question-box-left“>は左側に配置されている選択肢なので、先ほど作成した$answer[$times](答えとなる解答の位置(左etc)が格納されている)に格納されている文字列が、”left”($answerには、leftかcenterかrightが格納されているため)の時、1度目のquestion-box-leftに、そうでない場合(else{})は、2度目のuestion-box-leftに条件分岐するように設定しましょう。

さらに、正解のときの表示である1度目のquestion-box-left内の最上部に、<div class=”c-mark”>~</div> と要素を作りその中に、を表示するためのsvgを表示させます。svgについて詳しく知りたい方は、検索して調べてもらうといいと思いますが、〇の画像を表示するんだなあ。くらいに思っていてもらって大丈夫です。(が、画像とは表示する方法が違うので、以下のソースコードを参考にしてください。)

<div class=”c-mark”>~</div> 内は以下のようになります。

 

次に、2度目のdiv class=”question-box-left”>~</div>に関しては、その要素のクラス名をdiv class=”question-box-left-white”>~</div>という形に変更してください。クラス名がwhiteとあるように、これは不正解の場合に白い半透明の背景にするための設定です。

ここまでの修正を、div class=”question-box-center”>~</div>、div class=”question-box-right”>~</div>に関しても、変更していきましょう。

ほとんど同じですが、各所でクラス名などcenterのところがleftになったり、rightのところがleftになったりとしないように、コピペではなくそれぞれの作業を確認しながら行うことをオススメします!

一応、なぜまた「quiz.php」に戻るような設定をするのかを説明しておくと、再度第6弾ファイル作成における注意点を見ていただくと分かると思うのですが、「quiz.php(1問目の質問)」→「quiz_result.php(1問目の解答)」→「quiz.php(2問目の質問)」と設定する必要があるため、そのように設定します。

ここまでの修正を完了すると以下のようになっていると思います。

結構大規模なソースコードの改修工事を行ったので、細かくチェックしていってください!

では、次の工程に移ります!

クイズが終了すると結果表示に飛ばす設定

ここでは、以下のようにソースコードを記述します。説明は後述します。

まずは、「quiz.php」に渡した(POST)後、2問目の表示を行わさせるために、$timesの値をインクリメント(+1)しておきます。

$timesの値は0から開始され、3問目が終了時に結果を表示する「result.php」に飛ぶ(POST)設定としたいため、$timesが3となったとき(インクリメント後の$times)になったときに「result.php」に、そうでない場合は、「quiz.php」に飛ぶように設定しています。

そして、先ほど削除した<form>タグですが、「quiz.php」に戻るボタンなどを実装するために必要なので、追加します。

また、それぞれ飛ぶ(POST)ためのボタンの表示を「次の問題へ」と「結果を表示」としています。

そして、結果を表示するボタンを押すときに、正解数を示す「$num_correct」を渡すように設定しています。

ここまでの実装が終了すると以下のようになっていると思います。

画像を見てもらうと分かると思うのですが、レイアウトがだだ崩れなので、「quiz_result.css」を編集していきましょう。

quiz_result.css

まず、phpファイルでも行ったように、「quiz.css」を「quiz_result.css」にコピペしましょう!

そして、このとき、「quiz_result.php」は「quiz.php」をコピペして作成し始めたので、リンクしているcssも「quiz.css」のままになっているはずです。「quiz_result.css」に変更しておきましょう。

ついでに、タイトルも変更しておきました。

「quiz.css」同様、PHPで『月5万円』稼ぐためのロードマップでは、PHP中心にしたいので、cssファイルについては、詳しく述べませんが、変更点は以下の2点です。

  1. 「question-box-〇〇-white」の記述
  2. 「正解(.true)および不正解(.false)の位置調整」

変更後のcssファイルを載せておきます。PHPを重点的に学習したい方は、全てコピペしてもいいかもしれません。

CSSもがっつり勉強したいよって方で、今回のCSSの実装がちょっと難しいと感じた方は、「『月5万円』稼ぐためのロードマップ」シリーズのHTML&CSS版にもチャレンジしてみるといいかもしれませんよ!

【第1弾】HTML&CSSができるようになる思考法|HTML&CSS完全攻略ロードマップ今回から定期的に投稿する「HTML&CSS完全攻略ロードマップ」は実際に、ゼロからHTML&CSS学習を始めて、今ではW...

 

 

ここまでの実装が終了すると晴れて以下のような状態になっていると思います。

おめでとうございます!

「quiz_result.php」の実装は終了です!

result.php

「result.php」は結果を表示する部分。つまり、最終工程ってことですね!

最後の山を登る前にひと休みしましょう。

ということで、ここからは次回の第9弾で説明していくこととします!

ライアン
ライアン
めっちゃ疲れたわ。
ライアン
ライアン
プログラミングって疲れるんだな…

たしかにプログラミングは地道な作業が多く、時間もかかりますが、自分で考えてソースコードを打てるようになれば、時間を忘れるほど楽しいものです!

みなさんは、今回の記事中にカスタマイズしてやろう!という機会をうかがいながら、この第8弾プログラミングをしていましたか?

もちろん3択クイズアプリが完成してからカスタマイズしよう!と思っている方も多いでしょうし、それでも全く問題ありません!が、ただ、プログラミングを打つだけではなく、「ここをこうしたらどうなるのかな?」といった好奇心を持ちながら、プログラミングを学習すると、不思議なことに上達がグンッと早くなるので、是非お試しください!

まとめ

「quiz_result.php」におけるPHPの実装を中心に、「3択クイズアプリ」の作成を進めてきました。

次回は、いよいよ「result.php」でのPHPの実装をして、終了となります!

「3択クイズ」Webアプリを完成させよう!|PHPで5万円稼ぐためのロードマップ
【第9弾】「3択クイズ」Webアプリを完成させよう!|PHPで5万円稼ぐためのロードマップこんにちは! 今回は、PHPで『月5万円』稼ぐためのロードマップ第9弾ということで、1つ目の課題である「3択クイズアプリの作成」を...

 

今回は、以上になります!質問や疑問点などございましたら、ぜひぜひ「お問い合わせ」の方からご連絡ください!Twitterも是非フォローよろしくお願いします!

 

また、『月5万円』稼ぐためのロードマップのシリーズとして「HTML&CSS」が追加されたのでぜひぜひ一度訪れてみてください!

【第1弾】PHP初心者の80%が間違えている5つの注意点を解説今回から定期的に投稿する「PHPで『月5万円』稼ぐためのロードマップ」は実際に、ゼロからPHP学習を始めて、仕事をもらい、Webアプリを...

その他、勉強法や就活、プログラミングに関する相談なども受け付けています!