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

質問編集履歴

3

goji

2018/06/04 13:02

投稿

karasupanda
karasupanda

スコア8

title CHANGED
File without changes
body CHANGED
@@ -1,1 +1,29 @@
1
+ データベース(DB)のテーブル情報を、PHPの配列に格納する方法を教えてください。
2
+
3
+ こんにちは、早速ですが質問に移らせていただきます。
4
+
1
- ghhhhhhhhhhhhhhhhhhhhhhhhhhhhf
5
+ DB内のあるテーブルのデータを、PHPの配列に格納したいのです。
6
+ DBはMySQLを使っています。
7
+
8
+ データベース内のテーブルの内容(例)は以下のとおり。
9
+
10
+ テーブル名:sample
11
+
12
+ | 番 | 時 |
13
+ | 号 | 間 |
14
+ ----------
15
+ | 1 | 朝 |
16
+ | 2 | 昼 |
17
+ | 3 | 夜 |
18
+ ----------
19
+
20
+ このテーブルの「時間」列にある内容をひとつずつ格納したいのです。
21
+
22
+ 今のところ
23
+
24
+ $data = array( '1'=> '朝', '2' => '昼', '3' => '夜' );
25
+
26
+ と、直接配列に格納していますが、
27
+ この場合は「DBから」配列に格納しているわけではなく、PHPに手入力で格納しているわけですが、
28
+ このままではこのテーブルに新しいデータを加えた場合、PHPの内容も変更しなければなりません。
29
+ どうにかDBから直接配列に格納したいのです。

2

bb

2018/06/04 13:02

投稿

karasupanda
karasupanda

スコア8

title CHANGED
File without changes
body CHANGED
@@ -1,94 +1,1 @@
1
- 現在作成済みのPHPの4択選択問題があります。以下のように$question1~$question10の変数にarrayで選択肢を代入し、配列にしています。
2
-
3
-
4
- ```PHP
5
- $question1 = array('きゅうり','みかん','いちご','りんご');
6
- $answer1 = $question1[0];
7
- shuffle($question1);
8
-
9
-
10
- $question10 = array・・・
11
- ```
12
- また、先頭の値を正解にし、shuffleにて選択肢をランダムに表示します。
13
- これを別ページに送信し、各問題の正解、不正解を表示させるようにしております。
14
- ※foreachはうまく作動させられなかったので未使用
1
+ ghhhhhhhhhhhhhhhhhhhhhhhhhhhhf
15
- ※問題文、選択肢は例です
16
- ```HTML
17
- <table class="type01">
18
- <tr>
19
- <th scope="row">問1.</th>
20
- <td>
21
- 果物はどれか?
22
- </td></tr>
23
- <tr>
24
- <th scope="row" class="even"></th>
25
- <td class="even">
26
- <section><input type="radio" name="rad1" checked id="radio01" value="<?php echo $q1[0]; ?>" />
27
- <label for="radio01" class="radio"<?php echo $q1[0]; ?></label>
28
- <input type="radio" name="rad1" checked id="radio02" value="<?php echo $q1[1]; ?>" />
29
- <label for="radio02" class="radio"><?php echo $q1[1]; ?></label>
30
- <input type="radio" name="rad1" checked id="radio03" value="<?php echo $q1[2]; ?>" />
31
- <label for="radio03" class="radio"> <?php echo $q1[2]; ?></label>
32
- <input type="radio" name="rad1" checked id="radio04" value="<?php echo $q1[3]; ?>" />
33
- <label for="radio04" class="radio"><?php echo $q1[3]; ?></label>
34
- <input type="hidden" name="ans1" value="<?php echo $a1 ?>"></section></td></tr>
35
- <tr>
36
-
37
-
38
- <section><input type="radio" name="rad10" checked id="radio37" value="<?php echo $q10[0]; ?>" />
39
- <label for="radio37" class="radio"><?php echo $q10[0]; ?></label>
40
- <input type="radio" name="rad10" checked id="radio38" value="<?php echo $q10[1]; ?>" />
41
- <label for="radio38" class="radio"><?php echo $q10[1]; ?></label>
42
- <input type="radio" name="rad10" checked id="radio39" value="<?php echo $q10[2]; ?>" />
43
- <label for="radio39" class="radio"> <?php echo $q10[2]; ?></label>
44
- <input type="radio" name="rad10" checked id="radio40" value="<?php echo $q10[3]; ?>" />
45
- <label for="radio40" class="radio"><?php echo $q10[3]; ?></label>
46
- <input type="hidden" name="ans10" value="<?php echo $a10 ?>"></section></td></tr>
47
- </table>
48
- <table class="type03">
49
- <tr>
50
- <th scope="row"><input id="submit_button" type="submit" value="解答"/></th>
51
- ```
52
- 現在これをデーターベースから参照するようにしたいと考えております。
53
- 理由としてはPHPに直接選択肢を書くのが面倒で管理しずらい(問題数が非常に多い)からです。
54
- つまり選択肢と問題文をPHPやHTMLに直接書かずにDBから取得したいのです。
55
- たとえば、DB上の選択肢「きゅうり みかん いちご りんご」を$question1に配列で代入し、
56
- つぎにDB上の選択肢「りんご レタス きゅうり なす」を$question2に代入させます。
57
- これを$question10まで同じように処理させて10問分作成したいと思っています。
58
-
59
- そのため、、phpMyAdminにてsampleテーブルを作成し、カラムを問題文、選択肢1~4、解答の6つ作成しました。
60
-
61
- ```
62
- ―――――――――――――――――――――――――――――――――――
63
- |問題文     |選択肢1 |選択肢2 |選択肢3 |選択肢4 |解答  |
64
- |野菜はどれか? |きゅうり | みかん | いちご | りんご |きゅうり|
65
- |果物はどれか? |りんご  | レタス |きゅうり | なす  |りんご |
66
- |・       |     |     |     |     |    |
67
- |・       |     |     |     |     |    |
68
- |・       |     |     |     |     |    |
69
- ―――――――――――――――――――――――――――――――――――
70
- ```
71
-
72
- 次にこのデーターベース上の問題文のカラムを表示させるには
73
- ```SQL
74
- <?php
75
- $dsn = 'mysql:dbname=***;host=***';
76
- $user = '***';
77
- $password = '***';
78
- try{
79
- $dbh = new PDO($dsn, $user, $password);
80
- $dbh->query("SET NAMES utf8;");
81
- }catch (PDOException $e){
82
- print('Error:'.$e->getMessage());
83
- die();
84
-
85
- $sql = 'select * from sample';
86
- foreach ($dbh->query($sql) as $row) {
87
- echo($row['問題文'].'<br>');
88
- }
89
- ?>
90
- ```
91
- とすればよいことがわかり、SELECT文にWHERE句などを用いる方法もわかりました。
92
- しかし、選択肢1~4のカラムについては、ただ表示させるだけでなく、変数$question1~$question10に
93
- 代入させ、PHPの4択問題として機能させなければなりません。ここの記述については、調べてもなかなか
94
- 理解ができず苦戦しております。どのようなコードを入力すればよいのか、ご回答お願い致します。

1

文法の修正

2018/06/04 10:37

投稿

karasupanda
karasupanda

スコア8

title CHANGED
File without changes
body CHANGED
@@ -49,15 +49,23 @@
49
49
  <tr>
50
50
  <th scope="row"><input id="submit_button" type="submit" value="解答"/></th>
51
51
  ```
52
- 今度はこれをデーターベースから参照するようにしたいと考え、phpMyAdminにsampleテーブルを作成し、カラムを
52
+ 現在これをデーターベースから参照するようにしたいと考えております。
53
+ 理由としてはPHPに直接選択肢を書くのが面倒で管理しずらい(問題数が非常に多い)からです。
53
- 問題文、選択肢1~4、解答の6つ作成ました。
54
+ つまり選択肢と問題文をPHPやHTMLに直接書かずにDBから取得したいのです
55
+ たとえば、DB上の選択肢「きゅうり みかん いちご りんご」を$question1に配列で代入し、
56
+ つぎにDB上の選択肢「りんご レタス きゅうり なす」を$question2に代入させます。
57
+ これを$question10まで同じように処理させて10問分作成したいと思っています。
54
58
 
59
+ そのため、、phpMyAdminにてsampleテーブルを作成し、カラムを問題文、選択肢1~4、解答の6つ作成しました。
60
+
55
61
  ```
56
62
  ―――――――――――――――――――――――――――――――――――
57
63
  |問題文     |選択肢1 |選択肢2 |選択肢3 |選択肢4 |解答  |
58
64
  |野菜はどれか? |きゅうり | みかん | いちご | りんご |きゅうり|
65
+ |果物はどれか? |りんご  | レタス |きゅうり | なす  |りんご |
59
66
  |・       |     |     |     |     |    |
60
67
  |・       |     |     |     |     |    |
68
+ |・       |     |     |     |     |    |
61
69
  ―――――――――――――――――――――――――――――――――――
62
70
  ```
63
71