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

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

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

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

Q&A

3回答

4903閲覧

3択問題 phpでデータベースに格納されている問題をランダムに10件表示させて 得点が出せません。

amaturePy

総合スコア131

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

0グッド

1クリップ

投稿2019/05/08 12:44

編集2019/05/09 07:57

知識不足の初心者の質問になりますが、よろしくお願いします。
データベースに格納されている問題10件をランダムに表示させ、最後にその正答数を表示させる
という問題になります。
調べ方も悪いのかどうしても出来上がりません。そこで皆様のお力をお借りしたいです。
私の配列ではただ質問が10個羅列されるのみで、選択肢などが出ない状態です。
また、問題の下にradioボタン形式のように選択肢を表示したいのですが、
そのひも付けと表示がうまくいきません。
<イメージ図>
Q1.Which launguage is most commonly used in Japan ?
○選択肢1 ○選択肢2 ○選択肢3

<テーブル:Quiz>
<カラム:quiz_No question choice_1 choice_2 choice_3 answer >

コード <!DOCTYPE html> <?php $dsn = 'mysql:host=localhost;dbname=ex.sql'; $user = 'root'; $password = 'root'; //$questionArray = array(); try{ $db = new PDO($dsn,$user,$password); $db ->setAttribute(PDO::ATTR_EMULATE_PREPARES,false); $sql = "SELECT * FROM quiz ORDER BY RAND()"; $stmt = $db->query($sql); $stmt->execute(); }catch(PDOException $error) { echo "error".$error->getMessage(); } foreach ($stmt as $row) { echo $row['id'].':'.$row['question'].':'.'<br><br>'.$row['choice_1'].':'.$row['choice_2'].':'.$row['choice_3']; echo '<br>'; } ?> <html> <head lang="ja"> <meta charset="UTF-8"> <title>Quiz</title> </head> <body> <input type="radio" name="choice_1[{$row ["id"]}]" value="1">{$row["choice_1"]}<br> <input type="radio" name="choice_2[{$row ["id"]}]" value="2">{$row["choice_2"]}<br> <input type="radio" name="choice_3[{$row ["id"]}]" value="3">{$row["choice_3"]}<br> </body> </html> ↓ ↓変更後////////////////////////////////////////////////////////////////////////// <!DOCTYPE html> <html> <head> <title>Sample Quiz</title> </head> <body> <?php $dsn='mysql:host=localhost;dbname=quiz'; $user='root'; $password='root'; try{ $db=new PDO($dsn,$user,$password); $db ->setAttribute(PDO::ATTR_EMULATE_PREPARES,false); $sql="SELECT * FROM quiz ORDER BY RAND()"; $stmt=$db->query($sql); $stmt->execute(); }catch(PDOException $error){ echo "error".$error->getMessage(); } ///////////////////////////////////////////////////////////////////////////// $id='id'; $question='question'; $choice_1='choice_1'; $choice_2='choice_2'; $choice_3='choice_3'; $number = 0; $answer = 'answer'; $number = 0; for($i=0; $row = $stmt->fetch(); $i++){ $number++; $id = $row['id']; $question = $row['question']; $ans_array = array($row['choice_1'],$row['choice_2'],$row['choice_3'],$row['answer']);{ } shuffle($ans_array); //////////////////////////////////////////////////////////////////////////////////////////////Score $total = array(); foreach($answer as $key => $value): echo "question".$key."<br>"; echo "answer".$value."<be>"; echo (is_null($_POST["answer"][$key]) ? "Unanswered" : "Answer <b>" . $_POST["answer"][$key]) . "</b><br><br>"; if(!array_key_exists($value,$total)): $total[$value] = ""; endif; $total[$value] += $_POST["answer"][$key]; endforeach; foreach($total as $cat => $score): echo "<b>Answer:</b> " . $cat . " <b>Total Score:</b> " . $score . "<br>"; endforeach; ?> <h4> <?php echo $number . ".) " . $question; ?></h4> <label><input type="radio" value="<?php echo $ans_array[0]; ?>" name="<?php echo $question; ?>"> <?php echo $ans_array[0]; ?></label> <label><input type="radio" value="<?php echo $ans_array[1]; ?>" name="<?php echo $question; ?>"> <?php echo $ans_array[1]; ?></label> <label><input type="radio" value="<?php echo $ans_array[2]; ?>" name="<?php echo $question; ?>"> <?php echo $ans_array[2]; ?></label> <?php } ?> <form action="ex5-1.php" method="POST"> <input type="submit" value="Submit" name="submit"> </form> <p>Total Score</p> </body> </html>

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

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

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

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

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

kei344

2019/05/08 15:42

回答が付いた質問の編集は慎重に行ってください。質問文のコードについて回答にて指摘があった場合は「追記」し、元のコードを編集する場合も「直したこと」がわかるようにしてください。
amaturePy

2019/05/08 15:47

承知いたしました。 大変申し訳ありませんでした。
guest

回答3

0

ラジオボタンで選ばせるなら同じnameを使用しないとだめですね
とりあえずHTMLベースでこんな感じ

HTML

1<?PHP 2$q=filter_input(INPUT_POST,"q",FILTER_VALIDATE_INT,FILTER_REQUIRE_ARRAY); 3if(!is_null($q)){ 4print_r($q); 5} 6?> 7<form method="post"> 8Q(id=100):なんたらかんたら<br> 9<label><input type="radio" name="q[100]" value="1" required>答えaaa</label> 10<label><input type="radio" name="q[100]" value="2" required>答えbbb</label> 11<label><input type="radio" name="q[100]" value="3" required>答えccc</label> 12<hr> 13Q(id=50):なんたらかんたら<br> 14<label><input type="radio" name="q[50]" value="1" required>答えxxx</label> 15<label><input type="radio" name="q[50]" value="2" required>答えyyy</label> 16<label><input type="radio" name="q[50]" value="3" required>答えzzz</label> 17<hr> 18<input type="submit" value="send"> 19</form>

投稿2019/05/09 00:33

yambejp

総合スコア114757

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

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

amaturePy

2019/05/09 01:33

ものすごく参考になります。 ありがとうございます。 ちなみに参考までにお聞かせ下さい。この問題の難易度はどれほどの物なのでしょうか? 未経験でプログライング会社に入って一ヶ月目の中での課題の一部です。
amaturePy

2019/05/09 01:35

調べて解決できないとプログラマーとは言えないとよく聞くため、かなり自信を落としてしまいました。 かなりgoogleで調べてもこの結果なので
guest

0

恐らく選択肢にあたるカラムが「choice_1」「choice_2」「choice_3」だと思いますが、プログラムコードのどこにもそれらが出てきません。これでどうやって選択肢が表示されると思うのでしょうか?

また、HTMLにおいて、<head></head><body></body>の間に出力するのは、通常ありえないことかと思います。

頑張ってください ????

投稿2019/05/08 13:09

takepan1973

総合スコア821

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

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

amaturePy

2019/05/08 13:34

ご意見ありがとうございます! この選択肢をradioボタン形式のように選べる形で表示したく、 しかしその方法が分からないため、一旦放置してしまいました。 問題はランダムで表示できたのですが、そこにどうやって選択肢を紐づけるかが、いまだに課題です。
guest

0

せっかく努力されているようなので調べ方を教えますが、下記のワードで検索して適切だと思うものを実装出来れば要件を満たすことができると思う。
・「php 配列 ランダム 取得」
・「sql レコード ランダム 取得」
全くの未経験で努力しているとの事なのでセキュリティとかコードの書き方は気にしなくてもいいよ。

投稿2019/05/08 13:15

bcaa

総合スコア170

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

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

amaturePy

2019/05/08 13:23

ありがとうございます。 再度調べてみます。 rand関数を以前に使用したのですが、、、 ありがとうございます!
bcaa

2019/05/08 13:37

やり方自体はいくらでもあるのでrand使っても何でもいいと思います。 既にrand使って試したのならその時のコードを貼れば、より実装しようとしていたやり方に近い形で要件を満たせるような回答をもらえるんじゃないでしょうか。
amaturePy

2019/05/08 13:40

ありがとうございます。 再度追加させて頂きました。
bcaa

2019/05/08 23:20

print_rやvar_dump使って$rowに入っているデータを確認してみたらどうでしょう?それでどこがおかしいか気付けるんじゃないかな。
amaturePy

2019/05/09 07:40

デバックも大事なのですね。 以後デバックも使って参ります! ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問