fc2ブログ

PHP でクイズ作成

http://dotinstall.com/lessons/quiz_php/1801
を参考にクイズ作成

arrayにクイズを格納

question に問題
options にクイズの選択肢
answer には正解

でOK

ソースにすると
$quiz = array(
'question'=>'百式は何色?',
'options'=>array('赤', '青', '金', '銀', '黒'),
'answer'=>2);

クイズの問題は echo で出力

回答するためのフォーム作成

選択肢は foreach() で表示

<p>Q: <?php echo $quiz['question'];?></p>
<ul>
<?php foreach ($quiz['options'] as $option) :?>
<li><?php echo $option;
?></li>
<?php endforeach;?>
</ul>

これで
<?php echo $quiz['question'];?>

問題が表示される

foreach ($quiz['options'] as $option)
で配列内容を1つずつ
$option に代入しながら終わるまでループする

<li><?php echo $option; ?></li>
となっているので
ループが終わるまで
リストが作られ続ける

すると




というようになる

このやりかたはAPI関連でリスト表示するときによくつかう
youtube とかお店リストとか

でクイズなので、ラジオボタンをつける

<input type="radio" name="answer" value="<?php echo $key; ?>">
これでラジオボタンがでる

さらに、回答の番号も把握したいので
foreach ($quiz['options'] as $option)

foreach ($quiz['options'] as $key=>$option)
にする

これで、1とかの番号がつくようだ

$key=>$option
にすることで
配列の関係にできる
つまり、キーと値の関係ができる

これもAPIでよく使う

そしてクイズの回答判定

送っているのはPOSTなので
判定をif で行う

if($_SERVER["REQUEST_METHOD"]=="POST")
まずは、これでPOSTか判定している

次に、回答と答え合わせ
これは三項演算子を使う

$message =($_POST['answer']== $quiz['answer'])?"正解":"不正解";

これでOK

三項演算子は
(条件)? true の時の処理 : false のときの処理 ;
というかき方をする

これで、もし答えが間違っているなら
$message の中身は 不正解

$_POST['answer']== $quiz['answer'])
であるなら、
$message の中身は 正解
というようになる

$quiz['answer']

$quiz = array(
'question'=>'百式は何色?',
'options'=>array('赤', '青', '金', '銀', '黒'),
'answer'=>2);
の answer のことで

$_POST['answer']

<form action="" method="post">
の中で選んだラジオボタンの答えになる

そして、定番だけど
PHP で 出力するには
echo でできるので
echo $message;
とすれば
正解か不正解か表示されるというもの

最後に
exit するのを忘れずに

次はクイズの選択肢をシャッフル

これは
shufle() を使う
クイズの選択肢をシャッフルしたいので
shuffle($quiz['options']);
でOK

三項演算子は
(条件)? true の時の処理 : false のときの処理 ;
というかき方をする

これで、もし答えが間違っているなら
$message の中身は 不正解

$_POST['answer']== $quiz['answer'])
であるなら、
$message の中身は 正解
というようになる

$quiz['answer']

$quiz = array(
'question'=>'百式は何色?',
'options'=>array('赤', '青', '金', '銀', '黒'),
'answer'=>2);
の answer のことで

$_POST['answer']

<form action="" method="post">
の中で選んだラジオボタンの答えになる

そして、定番だけど
PHP で 出力するには
echo でできるので
echo $message;
とすれば
正解か不正解か表示されるというもの

最後に
exit するのを忘れずに

次はクイズの選択肢をシャッフル

これは
shufle() を使う
クイズの選択肢をシャッフルしたいので
shuffle($quiz['options']);
でOK

あと、配列をシャッフルするのに2だと答えがおかしいので
answer=>2
から
answer=>'金'
というようにする

あと、変更に伴い、配列の添字にしている
$key じゃなくて $option になるので
これも変更

<li><input type="radio" name="answer" value="<?php echo $key;?>">
から
<li><input type="radio" name="answer" value="<?php echo $option;?>">

<?php foreach ($quiz['options'] as $key=>$option) :?>

<?php foreach ($quiz['options'] as $option) :?>

となる
スポンサーサイト



テーマ : プログラミング
ジャンル : コンピュータ

最新記事
検索フォーム
GREEハコニワ攻略サイト
リンク
カテゴリ
月別アーカイブ
フリーエリア
最新記事
FXプライムレート
最新コメント
最新トラックバック