質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

155閲覧

PHPで音感クイズ、正解にならない

th_works

総合スコア13

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/04/17 12:16

前提・実現したいこと

ド初心者です。

PHPで、音感クイズを作っています。
ボタンクリックで全4種類の音からランダムに鳴らして、その音階を4択から選ぶものです。

該当のソースコード

PHP

1$oto = array('oto/a.mp3','oto/i.mp3','oto/u.mp3','oto/e.mp3',); 2$randoto = array_rand($oto,1); 3 4 5//answer.php 6$question = $_POST['question']; 7$answer = $_POST['answer']; 8 9if($question == $answer){ 10 echo "正解"; 11}else{ 12 echo "不正解"; 13}

HTML

1//音の再生ボタン 2<a onclick="sound()"><div class="btn">再生</div></a> 3<audio id="sound-file" preload="auto"> 4 <source src="<?php echo $oto[$randoto]; ?>"> 5</audio> 6 7//ラジオボタン 8<form action="answer.php" method="post"> 9 <input type="radio" name="question" value="<?php echo $oto['0']; ?>">選択肢A<br> 10 <input type="radio" name="question" value="<?php echo $oto['1']; ?>">選択肢B<br> 11 <input type="radio" name="question" value="<?php echo $oto['2']; ?>">選択肢C<br> 12 <input type="radio" name="question" value="<?php echo $oto['3']; ?>">選択肢D<br> 13 <input type="hidden" name="answer" value="<?php $oto[$randoto]; ?>"> 14 <input type="submit" name="" value="回答"> 15</form>

発生している問題・エラーメッセージ

正解になりません。
上記コードで、answer.phpに「不正解」までは表示されるところまで来ています。

自分の認識としては、

HTML

1<audio id="sound-file" preload="auto"> 2 <source src="<?php echo $oto[$randoto]; ?>"> 3</audio>

の部分でランダムに選ばれた音と、選択肢ごとのvalueのうちひとつは同じものと思っていました。


考え方が間違いなのか、他に適切な方法があるのか、それとも単純に書き間違いがあるのか、
どんなことでも助言いただければ幸いです。

試したこと

とりあえず、$oto[$randoto]を2回書いたときに中身が変わっていないかを念の為確認したく、

<p><?php echo $oto[$randoto]; ?></p> <p><?php echo $oto[$randoto]; ?></p>

と書いて

oto/a.mp3
oto/a.mp3

になるのを確認しました。


また、

<p><?php echo $oto[0]; ?></p>

も同様に

oto/a.mp3

と表示されます。


これを照合して正誤判定ができると思っていたのですが違うのでしょうか。

補足情報(FW/ツールのバージョンなど)

HTML5
PHP7.3.4

XAMPP Version: 7.3.4
Control Panel Version: 3.2.3

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

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

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

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

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

guest

回答1

0

ベストアンサー

answerのvalueに設定しようとされてますがechoされてないので出力処理がないですね。valueには何も入ってないのでは。
ブラウザ「ソースを表示」して想定通りの情報が入ってるか確認してください。

あとは二つのコードは別ファイルなんですかね?関連性がよく見えません。

投稿2019/04/17 12:37

m.ts10806

総合スコア80765

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

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

th_works

2019/04/17 12:43

回答ありがとうございます。 おかげさまで解決いたしました。 >answerのvalueに設定しようとされてますがechoされてないので出力処理がないですね。 その通りでした。ここを直したら正解が出てくれました。 >ブラウザ「ソースを表示」して想定通りの情報が入ってるか確認してください。 今後はこれを利用します。
m.ts10806

2019/04/17 12:46

はい。ブラウザから確認できるのは<?php ?>に囲われてない場所ところか、phpで出力の処理が書かれているところだけです。 画面から見るだけでなく必ず出力されたソースを確認してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問