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

質問編集履歴

4

エラーを追記しました。

2021/03/09 13:23

投稿

souzitarou
souzitarou

スコア1

title CHANGED
File without changes
body CHANGED
@@ -9,9 +9,17 @@
9
9
 
10
10
  ### 発生している問題・エラーメッセージ
11
11
 
12
- ブラウザ上で表示されるエラーです
12
+ ブラウザ上で表示されるエラーです。consoleでは値が入っています
13
+
13
14
  ```
15
+ Warning: Undefined array key "random_array" in C:\xampp\htdocs\screen.php on line 11
16
+ NULL
14
- Warning: Undefined variable $topic in C:\xampp\htdocs\screen.php on line 90
17
+ Warning: Undefined array key "val" in C:\xampp\htdocs\screen.php on line 14
18
+ string(2) "-1"
19
+ Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\screen.php on line 20
20
+ NULL int(6)
21
+ Warning: Trying to access array offset on value of type bool in C:\xampp\htdocs\screen.php on line 63
22
+ NULL
15
23
  ```
16
24
 
17
25
  ### 該当のソースコード

3

全角スペース修正

2021/03/09 13:22

投稿

souzitarou
souzitarou

スコア1

title CHANGED
File without changes
body CHANGED
@@ -77,7 +77,7 @@
77
77
  }
78
78
 
79
79
  //ランダムなid(random_val)のtopicを取りだす
80
- $topic = 0;
80
+ $topic = 0;
81
81
 
82
82
  try{
83
83
  $pdo = new PDO($dsn, $user, $password , [

2

ソースコードを追加しました

2021/03/09 06:09

投稿

souzitarou
souzitarou

スコア1

title CHANGED
File without changes
body CHANGED
@@ -19,15 +19,65 @@
19
19
  ```php
20
20
  /screen.jsからシャッフルされた配列とプラス一ずつされる変数を受け取る
21
21
  $random_array = $_GET['random_array'];
22
+ var_dump($random_array);
23
+ //結果
24
+ array(7) {
25
+ [0]=>
26
+ string(1) "5"
27
+ [1]=>
28
+ string(1) "4"
29
+ [2]=>
30
+ string(1) "1"
31
+ [3]=>
32
+ string(1) "6"
33
+ [4]=>
34
+ string(1) "3"
35
+ [5]=>
36
+ string(1) "2"
37
+ [6]=>
38
+ string(1) "0"
39
+ }
22
40
 
23
41
  $val = $_GET['val'];
24
42
  $val_true = $val - 1;
43
+ var_dump(h($val_true));
44
+ //結果
45
+ string(1) "0"
25
46
 
47
+
48
+
26
49
  // クリックしたらshuffleされた配列の0番目から順に要素を一つ取り出す
27
50
  $random_val = $random_array[$val_true];
51
+ var_dump($random_val);
52
+ //結果
53
+ string(1) "5"
28
54
 
55
+
56
+
57
+ //idの最大値を取り出して$maxに代入
58
+ try{
59
+ $pdo = new PDO($dsn, $user, $password , [
60
+ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
61
+ PDO::ATTR_EMULATE_PREPARES => false,
62
+ ]);
63
+
64
+ $sql = 'select max(id) from topic';
65
+ $stm = $pdo->query($sql);
66
+ foreach ($stm as $maxvalue) {
67
+ $max = $maxvalue[0];
68
+ }
69
+ var_dump($max);
70
+ //結果
71
+ int(6)
72
+
73
+
74
+ }catch (PDOException $e){
75
+ print('Error:'.$e->getMessage());
76
+ die();
77
+ }
78
+
29
79
  //ランダムなid(random_val)のtopicを取りだす
30
- $topic;
80
+ $topic = 0;
31
81
 
32
82
  try{
33
83
  $pdo = new PDO($dsn, $user, $password , [
@@ -39,14 +89,15 @@
39
89
  $stm = $pdo->prepare($sql);
40
90
  $stm->bindValue(':random_val', $random_val);
41
91
  $stm->execute();
42
- $result = $stm->fetchall();
92
+ $result = $stm->fetch();
43
93
 
44
- //お題を取得
45
- foreach ($result as $value) {
46
- $topic = $value['topic'];
94
+ $topic = $result["topic"];
47
- }
48
95
 
96
+ var_dump($topic);
97
+ //結果
98
+ string(54) "最近嫌だったこと、苦しかったことは?"
49
99
 
100
+
50
101
  }catch (PDOException $e){
51
102
  print('Error:'.$e->getMessage());
52
103
  die();
@@ -152,7 +203,7 @@
152
203
  <div id="box">
153
204
  <div class="odai">
154
205
  ここにお題が入る
155
- 最近はまていることは?
206
+ 最近嫌だこと、苦しかったは?
156
207
  </div>
157
208
  <button id="btn" name="next">次へ</button>
158
209
 

1

ソースコードを追加しました

2021/03/09 05:58

投稿

souzitarou
souzitarou

スコア1

title CHANGED
File without changes
body CHANGED
@@ -17,6 +17,15 @@
17
17
  ### 該当のソースコード
18
18
 
19
19
  ```php
20
+ /screen.jsからシャッフルされた配列とプラス一ずつされる変数を受け取る
21
+ $random_array = $_GET['random_array'];
22
+
23
+ $val = $_GET['val'];
24
+ $val_true = $val - 1;
25
+
26
+ // クリックしたらshuffleされた配列の0番目から順に要素を一つ取り出す
27
+ $random_val = $random_array[$val_true];
28
+
20
29
  //ランダムなid(random_val)のtopicを取りだす
21
30
  $topic;
22
31
 
@@ -70,6 +79,64 @@
70
79
  </html>
71
80
  ```
72
81
 
82
+ ```javascript
83
+ $(function(){
84
+
85
+ var max_val = document.getElementById('php-val').value;
86
+
87
+
88
+ var randoms = [];
89
+ /** 最小値と最大値 */
90
+ var min = 0, max = max_val;
91
+
92
+ /** 重複チェックしながら乱数作成 */
93
+ for(i = min; i <= max; i++){
94
+ while(true){
95
+ var tmp = intRandom(min, max);
96
+ if(!randoms.includes(tmp)){
97
+ randoms.push(tmp);
98
+ break;
99
+ }
100
+ }
101
+ }
102
+
103
+ /** min以上max以下の整数値の乱数を返す */
104
+ function intRandom(min, max){
105
+ return Math.floor( Math.random() * (max - min + 1)) + min;
106
+ }
107
+
108
+
109
+ var i = 0;
110
+ $('#btn').click(function(){
111
+ i = i +1;
112
+
113
+ var param = {"val":i};
114
+
115
+ console.log(param);
116
+
117
+ $.ajax({
118
+ url: "./screen.php",
119
+ type: "GET",
120
+ data: {
121
+ "val":i,
122
+ random_array : randoms
123
+ },
124
+ dataType : "text",
125
+ timespan:1000
126
+ }).done(function(data){
127
+ console.log(data);
128
+ }).fail(function(XMLHttpRequest, textStatus, errorThrown){
129
+ console.log("XMLHttpRequest : " + XMLHttpRequest.status);
130
+   console.log("textStatus : " + textStatus);
131
+   console.log("errorThrown : " + errorThrown.message);
132
+ });
133
+
134
+ });
135
+
136
+ });
137
+
138
+ ```
139
+
73
140
  ### 試したこと
74
141
 
75
142
  console.logやvar_dumpでphpの変数に値が入っているか確認しました。値は入っていました。