teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

6

脱字を修正しました。

2019/05/09 07:57

投稿

amaturePy
amaturePy

スコア131

title CHANGED
File without changes
body CHANGED
@@ -49,7 +49,7 @@
49
49
 
50
50
  </html>
51
51
 
52
- ↓変更後
52
+ ↓変更後//////////////////////////////////////////////////////////////////////////
53
53
  <!DOCTYPE html>
54
54
  <html>
55
55
  <head>
@@ -88,8 +88,22 @@
88
88
  $ans_array = array($row['choice_1'],$row['choice_2'],$row['choice_3'],$row['answer']);{
89
89
  }
90
90
  shuffle($ans_array);
91
+
92
+ //////////////////////////////////////////////////////////////////////////////////////////////Score
93
+ $total = array();
94
+ foreach($answer as $key => $value):
95
+ echo "question".$key."<br>";
96
+ echo "answer".$value."<be>";
97
+ echo (is_null($_POST["answer"][$key]) ? "Unanswered" : "Answer <b>" . $_POST["answer"][$key]) . "</b><br><br>";
98
+ if(!array_key_exists($value,$total)): $total[$value] = ""; endif;
99
+ $total[$value] += $_POST["answer"][$key];
91
- ?>
100
+ endforeach;
92
101
 
102
+ foreach($total as $cat => $score):
103
+ echo "<b>Answer:</b> " . $cat . " <b>Total Score:</b> " . $score . "<br>";
104
+ endforeach;
105
+ ?>
106
+
93
107
  <h4> <?php echo $number . ".) " . $question; ?></h4>
94
108
  <label><input type="radio" value="<?php echo $ans_array[0]; ?>" name="<?php echo $question; ?>"> <?php echo $ans_array[0]; ?></label>
95
109
  <label><input type="radio" value="<?php echo $ans_array[1]; ?>" name="<?php echo $question; ?>"> <?php echo $ans_array[1]; ?></label>
@@ -99,6 +113,7 @@
99
113
  }
100
114
  ?>
101
115
 
116
+
102
117
  <form action="ex5-1.php" method="POST">
103
118
  <input type="submit" value="Submit" name="submit">
104
119
  </form>

5

問題の配列までは上手くいきました。あとは得点の表示なのですが、どなたか得点数の表示でアドバイス頂けないでしょうか?

2019/05/09 07:56

投稿

amaturePy
amaturePy

スコア131

title CHANGED
File without changes
body CHANGED
@@ -48,5 +48,65 @@
48
48
  </body>
49
49
 
50
50
  </html>
51
+
52
+ ↓変更後
53
+ <!DOCTYPE html>
54
+ <html>
55
+ <head>
56
+ <title>Sample Quiz</title>
57
+ </head>
58
+ <body>
59
+
60
+ <?php
61
+ $dsn='mysql:host=localhost;dbname=quiz';
62
+ $user='root';
63
+ $password='root';
64
+
65
+ try{
66
+ $db=new PDO($dsn,$user,$password);
67
+ $db ->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
68
+ $sql="SELECT * FROM quiz ORDER BY RAND()";
69
+ $stmt=$db->query($sql);
70
+ $stmt->execute();
71
+ }catch(PDOException $error){
72
+ echo "error".$error->getMessage();
73
+ }
74
+ /////////////////////////////////////////////////////////////////////////////
75
+ $id='id';
76
+ $question='question';
77
+ $choice_1='choice_1';
78
+ $choice_2='choice_2';
79
+ $choice_3='choice_3';
80
+ $number = 0;
81
+ $answer = 'answer';
82
+
83
+ $number = 0;
84
+ for($i=0; $row = $stmt->fetch(); $i++){
85
+ $number++;
86
+ $id = $row['id'];
87
+ $question = $row['question'];
88
+ $ans_array = array($row['choice_1'],$row['choice_2'],$row['choice_3'],$row['answer']);{
89
+ }
90
+ shuffle($ans_array);
91
+ ?>
92
+
93
+ <h4> <?php echo $number . ".) " . $question; ?></h4>
94
+ <label><input type="radio" value="<?php echo $ans_array[0]; ?>" name="<?php echo $question; ?>"> <?php echo $ans_array[0]; ?></label>
95
+ <label><input type="radio" value="<?php echo $ans_array[1]; ?>" name="<?php echo $question; ?>"> <?php echo $ans_array[1]; ?></label>
96
+ <label><input type="radio" value="<?php echo $ans_array[2]; ?>" name="<?php echo $question; ?>"> <?php echo $ans_array[2]; ?></label>
97
+
98
+ <?php
99
+ }
100
+ ?>
101
+
102
+ <form action="ex5-1.php" method="POST">
103
+ <input type="submit" value="Submit" name="submit">
104
+ </form>
105
+
106
+ <p>Total Score</p>
107
+
108
+
109
+ </body>
110
+ </html>
51
111
 
52
112
  ```

4

問題内容を変更いたしました。

2019/05/09 07:36

投稿

amaturePy
amaturePy

スコア131

title CHANGED
File without changes
body CHANGED
@@ -1,10 +1,13 @@
1
1
  知識不足の初心者の質問になりますが、よろしくお願いします。
2
- データベースに格納されている問題10件をランダムに表示させ、最後にその答数を表示させる
2
+ データベースに格納されている問題10件をランダムに表示させ、最後にその答数を表示させる
3
3
  という問題になります。
4
4
  調べ方も悪いのかどうしても出来上がりません。そこで皆様のお力をお借りしたいです。
5
5
  私の配列ではただ質問が10個羅列されるのみで、選択肢などが出ない状態です。
6
6
  また、問題の下にradioボタン形式のように選択肢を表示したいのですが、
7
7
  そのひも付けと表示がうまくいきません。
8
+ <イメージ図>
9
+ Q1.Which launguage is most commonly used in Japan ?
10
+ ○選択肢1 ○選択肢2 ○選択肢3
8
11
 
9
12
  <テーブル:Quiz>
10
13
  <カラム:quiz_No question choice_1 choice_2 choice_3 answer >

3

編集しました。

2019/05/09 01:49

投稿

amaturePy
amaturePy

スコア131

title CHANGED
File without changes
body CHANGED
@@ -12,17 +12,6 @@
12
12
  ```ここに言語を入力
13
13
  コード
14
14
  <!DOCTYPE html>
15
- <html>
16
- <head lang="ja">
17
- <meta charset="UTF-8">
18
- <title>Quiz</title>
19
- </head>
20
- <body>
21
- </body>
22
-
23
- </html>
24
-
25
-
26
15
  <?php
27
16
  $dsn = 'mysql:host=localhost;dbname=ex.sql';
28
17
  $user = 'root';
@@ -32,16 +21,29 @@
32
21
  try{
33
22
  $db = new PDO($dsn,$user,$password);
34
23
  $db ->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
35
- $sql = "SELECT * FROM Quiz ORDER BY RAND()";
24
+ $sql = "SELECT * FROM quiz ORDER BY RAND()";
36
25
  $stmt = $db->query($sql);
37
26
  $stmt->execute();
38
27
  }catch(PDOException $error) {
39
28
  echo "error".$error->getMessage();
40
29
  }
41
30
  foreach ($stmt as $row) {
42
- echo $row['quiz_No'].':'.$row['question'];
31
+ echo $row['id'].':'.$row['question'].':'.'<br><br>'.$row['choice_1'].':'.$row['choice_2'].':'.$row['choice_3'];
43
32
  echo '<br>';
44
33
  }
45
- ?>
34
+ ?>
35
+
36
+ <html>
37
+ <head lang="ja">
38
+ <meta charset="UTF-8">
39
+ <title>Quiz</title>
40
+ </head>
41
+ <body>
42
+ <input type="radio" name="choice_1[{$row ["id"]}]" value="1">{$row["choice_1"]}<br>
43
+ <input type="radio" name="choice_2[{$row ["id"]}]" value="2">{$row["choice_2"]}<br>
44
+ <input type="radio" name="choice_3[{$row ["id"]}]" value="3">{$row["choice_3"]}<br>
45
+ </body>
46
+
47
+ </html>
46
48
 
47
49
  ```

2

質問文を変更しました。

2019/05/08 15:30

投稿

amaturePy
amaturePy

スコア131

title CHANGED
File without changes
body CHANGED
@@ -1,8 +1,10 @@
1
1
  知識不足の初心者の質問になりますが、よろしくお願いします。
2
2
  データベースに格納されている問題10件をランダムに表示させ、最後にその回答数を表示させる
3
3
  という問題になります。
4
- 未経験でエンジニア会社に入り、昨晩から徹夜で挑戦はしているものの、調べ方も悪いのかどうしても出来上がりません。そこで皆様のお力をお借りしたいです。
4
+ 調べ方も悪いのかどうしても出来上がりません。そこで皆様のお力をお借りしたいです。
5
5
  私の配列ではただ質問が10個羅列されるのみで、選択肢などが出ない状態です。
6
+ また、問題の下にradioボタン形式のように選択肢を表示したいのですが、
7
+ そのひも付けと表示がうまくいきません。
6
8
 
7
9
  <テーブル:Quiz>
8
10
  <カラム:quiz_No question choice_1 choice_2 choice_3 answer >

1

rand関数を再度追加しました。

2019/05/08 13:42

投稿

amaturePy
amaturePy

スコア131

title CHANGED
File without changes
body CHANGED
@@ -15,8 +15,13 @@
15
15
  <meta charset="UTF-8">
16
16
  <title>Quiz</title>
17
17
  </head>
18
+ <body>
19
+ </body>
18
20
 
21
+ </html>
22
+
23
+
19
- <?php
24
+ <?php
20
25
  $dsn = 'mysql:host=localhost;dbname=ex.sql';
21
26
  $user = 'root';
22
27
  $password = 'root';
@@ -25,7 +30,7 @@
25
30
  try{
26
31
  $db = new PDO($dsn,$user,$password);
27
32
  $db ->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
28
- $sql = "SELECT * FROM Quiz";
33
+ $sql = "SELECT * FROM Quiz ORDER BY RAND()";
29
34
  $stmt = $db->query($sql);
30
35
  $stmt->execute();
31
36
  }catch(PDOException $error) {
@@ -36,9 +41,5 @@
36
41
  echo '<br>';
37
42
  }
38
43
  ?>
39
-
40
- <body>
44
+
41
- </body>
42
-
43
- </html>
44
45
  ```