🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

foreach

foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1256閲覧

PHPでクイズアプリ制作において問題表示の増やし方

Monkey217

総合スコア10

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

foreach

foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/12/16 03:15

PHPで4択クイズアプリを作りたいのですが、1ページ内に問題を5問表示したい場合、1つ目の問題($question)の配列を問題数分宣言していく必要があるのでしょうか?それともfor文やforeachで繰り返す方法があるのでしょうか。(質問1)

そして、問題が増えることにより、回答の合否をcsvで管理しようと考えているのですが、非効率的でしょうか?サーバサイドでいつでも問題の中身を変えやすいようにしたいです(質問2)

理解が浅いですが、何卒ご教授いただければ幸いです。

Quiz.php

1<?php 2 3$title = '本能寺の変はいつ起こった?'; 4 5$question = array(); 6$question = array('1600年','1582年','1535年','1602年'); 7 8$answer = $question[1]; //回答の正解 9 10 11?> 12 13 14 15<!doctype html> 16<html> 17<head> 18<meta charset="utf-8"> 19<title>クイズPractice</title> 20</head> 21<body> 22 23<h2><?php echo $title ?></h2> 24<form method="POST" action="answer.php"> <!--answer.phpへ--> 25 26 27 <?php foreach($question as $value){ //配列の中を繰り返す関数っぽい?> 28 <input type="radio" name="question" value="<?php echo $value; ?>" /> <?php echo $value; ?><br> 29 <?php } ?> 30 31 32 <input type="hidden" name="answer" value="<?php echo $answer ?>"> 33 <input type="submit" value="回答する"> 34</form> 35 36 37</body> 38</html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

問題が増えることにより、回答の合否をcsvで管理しようと考えているのですが

1問でも1000問であってもコード内に問題とその答えをコード内に持つメリットはありません。
問題が増える可能性があるのでしたら余計に、毎回コードをメンテナンスしてはいけません。
データの管理のしやすさの面から考えるとデータベースを選択するべきです。

一連の情報は、問題に対して複数の選択肢、そして答えから成り立ちます。
もしかしたら傾向なども知りたければ別途その問題の正解率やどう間違えられやすいかなどを解析するためのデータの蓄積も必要でしょう。
となると、「問題」「選択肢」「答え」自体をメンテナンスする管理機能を準備するのが良いです。
問題によって選択肢を増減させたり複数の答えを選択させたい場合もあるでしょうし。

1ページ内に問題を5問表示したい

ここも「何問表示するか」を管理する機能を作るとより汎用性の高いアプリケーションになります。

質問だけに答えると「如何様にも作れる」です。
問題や選択肢をどのように持たせるかによっても違います。

投稿2019/12/16 03:59

m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

質問1、2に共通することですが、ご自身だけや限られた範囲でしか利用しないものであれば
csvや配列でもいいと思います。

webで一般公開するような用途でお考えでしたらデータベースの利用をご検討ください。

投稿2019/12/16 03:25

madone99

総合スコア1857

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問