質問編集履歴

4

エラーを追記しました。

2021/03/09 13:23

投稿

souzitarou
souzitarou

スコア1

test CHANGED
File without changes
test CHANGED
@@ -20,11 +20,27 @@
20
20
 
21
21
 
22
22
 
23
- ブラウザ上で表示されるエラーです
23
+ ブラウザ上で表示されるエラーです。consoleでは値が入っています
24
+
25
+
24
26
 
25
27
  ```
26
28
 
29
+ Warning: Undefined array key "random_array" in C:\xampp\htdocs\screen.php on line 11
30
+
31
+ NULL
32
+
27
- Warning: Undefined variable $topic in C:\xampp\htdocs\screen.php on line 90
33
+ Warning: Undefined array key "val" in C:\xampp\htdocs\screen.php on line 14
34
+
35
+ string(2) "-1"
36
+
37
+ Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\screen.php on line 20
38
+
39
+ NULL int(6)
40
+
41
+ Warning: Trying to access array offset on value of type bool in C:\xampp\htdocs\screen.php on line 63
42
+
43
+ NULL
28
44
 
29
45
  ```
30
46
 

3

全角スペース修正

2021/03/09 13:22

投稿

souzitarou
souzitarou

スコア1

test CHANGED
File without changes
test CHANGED
@@ -156,7 +156,7 @@
156
156
 
157
157
  //ランダムなid(random_val)のtopicを取りだす
158
158
 
159
- $topic = 0;
159
+ $topic = 0;
160
160
 
161
161
 
162
162
 

2

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

2021/03/09 06:09

投稿

souzitarou
souzitarou

スコア1

test CHANGED
File without changes
test CHANGED
@@ -40,23 +40,123 @@
40
40
 
41
41
  $random_array = $_GET['random_array'];
42
42
 
43
+ var_dump($random_array);
44
+
45
+ //結果
46
+
47
+ array(7) {
48
+
49
+ [0]=>
50
+
51
+ string(1) "5"
52
+
53
+ [1]=>
54
+
55
+ string(1) "4"
56
+
57
+ [2]=>
58
+
59
+ string(1) "1"
60
+
61
+ [3]=>
62
+
63
+ string(1) "6"
64
+
65
+ [4]=>
66
+
67
+ string(1) "3"
68
+
69
+ [5]=>
70
+
71
+ string(1) "2"
72
+
73
+ [6]=>
74
+
75
+ string(1) "0"
76
+
77
+ }
78
+
43
79
 
44
80
 
45
81
  $val = $_GET['val'];
46
82
 
47
83
  $val_true = $val - 1;
48
84
 
85
+ var_dump(h($val_true));
86
+
87
+ //結果
88
+
89
+ string(1) "0"
90
+
91
+
92
+
93
+
94
+
49
95
 
50
96
 
51
97
  // クリックしたらshuffleされた配列の0番目から順に要素を一つ取り出す
52
98
 
53
99
  $random_val = $random_array[$val_true];
54
100
 
101
+ var_dump($random_val);
102
+
103
+ //結果
104
+
105
+ string(1) "5"
106
+
107
+
108
+
109
+
110
+
111
+
112
+
113
+ //idの最大値を取り出して$maxに代入
114
+
115
+ try{
116
+
117
+ $pdo = new PDO($dsn, $user, $password , [
118
+
119
+ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
120
+
121
+ PDO::ATTR_EMULATE_PREPARES => false,
122
+
123
+ ]);
124
+
125
+
126
+
127
+ $sql = 'select max(id) from topic';
128
+
129
+ $stm = $pdo->query($sql);
130
+
131
+ foreach ($stm as $maxvalue) {
132
+
133
+ $max = $maxvalue[0];
134
+
135
+ }
136
+
137
+ var_dump($max);
138
+
139
+ //結果
140
+
141
+ int(6)
142
+
143
+
144
+
145
+
146
+
147
+ }catch (PDOException $e){
148
+
149
+ print('Error:'.$e->getMessage());
150
+
151
+ die();
152
+
153
+ }
154
+
55
155
 
56
156
 
57
157
  //ランダムなid(random_val)のtopicを取りだす
58
158
 
59
- $topic;
159
+ $topic = 0;
60
160
 
61
161
 
62
162
 
@@ -80,39 +180,213 @@
80
180
 
81
181
  $stm->execute();
82
182
 
83
- $result = $stm->fetchall();
183
+ $result = $stm->fetch();
184
+
185
+
186
+
84
-
187
+ $topic = $result["topic"];
188
+
189
+
190
+
85
-
191
+ var_dump($topic);
86
-
192
+
87
- //お題を取得
193
+ //結果
194
+
88
-
195
+ string(54) "最近嫌だったこと、苦しかったことは?"
196
+
197
+
198
+
199
+
200
+
89
- foreach ($result as $value) {
201
+ }catch (PDOException $e){
202
+
90
-
203
+ print('Error:'.$e->getMessage());
204
+
205
+ die();
206
+
207
+ }
208
+
209
+
210
+
211
+ $dbh = null;
212
+
213
+
214
+
215
+ ?>
216
+
217
+
218
+
219
+ <!DOCTYPE html>
220
+
221
+ <head>
222
+
223
+ <meta charset="utf-8">
224
+
225
+ <link rel="stylesheet" href="screen.css">
226
+
91
- $topic = $value['topic'];
227
+ <title></title>
228
+
229
+ </head>
230
+
231
+ <body>
232
+
233
+ <div id="box">
234
+
235
+ <div class="odai">
236
+
237
+ ここにお題が入る
238
+
239
+ <?php echo $topic; ?> //ここでエラーが出ます
240
+
241
+ </div>
242
+
243
+ <button id="btn" name="next">次へ</button>
244
+
245
+
246
+
247
+ </div>
248
+
249
+ <input type="hidden" id="php-val" value="<?= h($max) ?>">
250
+
251
+
252
+
253
+
254
+
255
+ <script src="https://code.jquery.com/jquery-3.5.1.js" integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc="crossorigin="anonymous"></script>
256
+
257
+ </body>
258
+
259
+ </html>
260
+
261
+ ```
262
+
263
+
264
+
265
+ ```javascript
266
+
267
+ $(function(){
268
+
269
+
270
+
271
+ var max_val = document.getElementById('php-val').value;
272
+
273
+
274
+
275
+
276
+
277
+ var randoms = [];
278
+
279
+ /** 最小値と最大値 */
280
+
281
+ var min = 0, max = max_val;
282
+
283
+
284
+
285
+ /** 重複チェックしながら乱数作成 */
286
+
287
+ for(i = min; i <= max; i++){
288
+
289
+ while(true){
290
+
291
+ var tmp = intRandom(min, max);
292
+
293
+ if(!randoms.includes(tmp)){
294
+
295
+ randoms.push(tmp);
296
+
297
+ break;
298
+
299
+ }
300
+
301
+ }
92
302
 
93
303
  }
94
304
 
95
305
 
96
306
 
97
-
307
+ /** min以上max以下の整数値の乱数を返す */
98
-
308
+
99
- }catch (PDOException $e){
309
+ function intRandom(min, max){
100
-
310
+
101
- print('Error:'.$e->getMessage());
311
+ return Math.floor( Math.random() * (max - min + 1)) + min;
102
-
103
- die();
312
+
104
-
105
- }
313
+ }
314
+
315
+
316
+
317
+
318
+
106
-
319
+ var i = 0;
320
+
107
-
321
+ $('#btn').click(function(){
108
-
322
+
109
- $dbh = null;
323
+ i = i +1;
324
+
325
+
326
+
110
-
327
+ var param = {"val":i};
328
+
329
+
330
+
111
-
331
+ console.log(param);
332
+
333
+
334
+
112
-
335
+ $.ajax({
336
+
337
+ url: "./screen.php",
338
+
339
+ type: "GET",
340
+
341
+ data: {
342
+
343
+ "val":i,
344
+
345
+ random_array : randoms
346
+
347
+ },
348
+
349
+ dataType : "text",
350
+
351
+ timespan:1000
352
+
353
+ }).done(function(data){
354
+
355
+ console.log(data);
356
+
357
+ }).fail(function(XMLHttpRequest, textStatus, errorThrown){
358
+
359
+ console.log("XMLHttpRequest : " + XMLHttpRequest.status);
360
+
361
+   console.log("textStatus : " + textStatus);
362
+
363
+   console.log("errorThrown : " + errorThrown.message);
364
+
113
- ?>
365
+ });
366
+
367
+
368
+
114
-
369
+ });
370
+
371
+
372
+
115
-
373
+ });
374
+
375
+
376
+
377
+ ```
378
+
379
+
380
+
381
+ ### 試したこと
382
+
383
+
384
+
385
+ console.logやvar_dumpでphpの変数に値が入っているか確認しました。値は入っていました。
386
+
387
+ 以下console.logで確認したものです。
388
+
389
+ ```console.log
116
390
 
117
391
  <!DOCTYPE html>
118
392
 
@@ -134,7 +408,7 @@
134
408
 
135
409
  ここにお題が入る
136
410
 
137
- <?php echo $topic; ?> //こでエラーが出ます
411
+ 最近嫌だったと、苦しかったは?
138
412
 
139
413
  </div>
140
414
 
@@ -144,9 +418,7 @@
144
418
 
145
419
  </div>
146
420
 
147
- <input type="hidden" id="php-val" value="<?= h($max) ?>">
421
+ <input type="hidden" id="php-val" value="6">
148
-
149
-
150
422
 
151
423
 
152
424
 
@@ -160,176 +432,6 @@
160
432
 
161
433
 
162
434
 
163
- ```javascript
164
-
165
- $(function(){
166
-
167
-
168
-
169
- var max_val = document.getElementById('php-val').value;
170
-
171
-
172
-
173
-
174
-
175
- var randoms = [];
176
-
177
- /** 最小値と最大値 */
178
-
179
- var min = 0, max = max_val;
180
-
181
-
182
-
183
- /** 重複チェックしながら乱数作成 */
184
-
185
- for(i = min; i <= max; i++){
186
-
187
- while(true){
188
-
189
- var tmp = intRandom(min, max);
190
-
191
- if(!randoms.includes(tmp)){
192
-
193
- randoms.push(tmp);
194
-
195
- break;
196
-
197
- }
198
-
199
- }
200
-
201
- }
202
-
203
-
204
-
205
- /** min以上max以下の整数値の乱数を返す */
206
-
207
- function intRandom(min, max){
208
-
209
- return Math.floor( Math.random() * (max - min + 1)) + min;
210
-
211
- }
212
-
213
-
214
-
215
-
216
-
217
- var i = 0;
218
-
219
- $('#btn').click(function(){
220
-
221
- i = i +1;
222
-
223
-
224
-
225
- var param = {"val":i};
226
-
227
-
228
-
229
- console.log(param);
230
-
231
-
232
-
233
- $.ajax({
234
-
235
- url: "./screen.php",
236
-
237
- type: "GET",
238
-
239
- data: {
240
-
241
- "val":i,
242
-
243
- random_array : randoms
244
-
245
- },
246
-
247
- dataType : "text",
248
-
249
- timespan:1000
250
-
251
- }).done(function(data){
252
-
253
- console.log(data);
254
-
255
- }).fail(function(XMLHttpRequest, textStatus, errorThrown){
256
-
257
- console.log("XMLHttpRequest : " + XMLHttpRequest.status);
258
-
259
-   console.log("textStatus : " + textStatus);
260
-
261
-   console.log("errorThrown : " + errorThrown.message);
262
-
263
- });
264
-
265
-
266
-
267
- });
268
-
269
-
270
-
271
- });
272
-
273
-
274
-
275
- ```
276
-
277
-
278
-
279
- ### 試したこと
280
-
281
-
282
-
283
- console.logやvar_dumpでphpの変数に値が入っているか確認しました。値は入っていました。
284
-
285
- 以下console.logで確認したものです。
286
-
287
- ```console.log
288
-
289
- <!DOCTYPE html>
290
-
291
- <head>
292
-
293
- <meta charset="utf-8">
294
-
295
- <link rel="stylesheet" href="screen.css">
296
-
297
- <title></title>
298
-
299
- </head>
300
-
301
- <body>
302
-
303
- <div id="box">
304
-
305
- <div class="odai">
306
-
307
- ここにお題が入る
308
-
309
- 最近はまっていることは?
310
-
311
- </div>
312
-
313
- <button id="btn" name="next">次へ</button>
314
-
315
-
316
-
317
- </div>
318
-
319
- <input type="hidden" id="php-val" value="6">
320
-
321
-
322
-
323
- <script src="https://code.jquery.com/jquery-3.5.1.js" integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc="crossorigin="anonymous"></script>
324
-
325
- </body>
326
-
327
- </html>
328
-
329
- ```
330
-
331
-
332
-
333
435
  ### 補足情報(FW/ツールのバージョンなど)
334
436
 
335
437
 

1

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

2021/03/09 05:58

投稿

souzitarou
souzitarou

スコア1

test CHANGED
File without changes
test CHANGED
@@ -36,6 +36,24 @@
36
36
 
37
37
  ```php
38
38
 
39
+ /screen.jsからシャッフルされた配列とプラス一ずつされる変数を受け取る
40
+
41
+ $random_array = $_GET['random_array'];
42
+
43
+
44
+
45
+ $val = $_GET['val'];
46
+
47
+ $val_true = $val - 1;
48
+
49
+
50
+
51
+ // クリックしたらshuffleされた配列の0番目から順に要素を一つ取り出す
52
+
53
+ $random_val = $random_array[$val_true];
54
+
55
+
56
+
39
57
  //ランダムなid(random_val)のtopicを取りだす
40
58
 
41
59
  $topic;
@@ -142,6 +160,122 @@
142
160
 
143
161
 
144
162
 
163
+ ```javascript
164
+
165
+ $(function(){
166
+
167
+
168
+
169
+ var max_val = document.getElementById('php-val').value;
170
+
171
+
172
+
173
+
174
+
175
+ var randoms = [];
176
+
177
+ /** 最小値と最大値 */
178
+
179
+ var min = 0, max = max_val;
180
+
181
+
182
+
183
+ /** 重複チェックしながら乱数作成 */
184
+
185
+ for(i = min; i <= max; i++){
186
+
187
+ while(true){
188
+
189
+ var tmp = intRandom(min, max);
190
+
191
+ if(!randoms.includes(tmp)){
192
+
193
+ randoms.push(tmp);
194
+
195
+ break;
196
+
197
+ }
198
+
199
+ }
200
+
201
+ }
202
+
203
+
204
+
205
+ /** min以上max以下の整数値の乱数を返す */
206
+
207
+ function intRandom(min, max){
208
+
209
+ return Math.floor( Math.random() * (max - min + 1)) + min;
210
+
211
+ }
212
+
213
+
214
+
215
+
216
+
217
+ var i = 0;
218
+
219
+ $('#btn').click(function(){
220
+
221
+ i = i +1;
222
+
223
+
224
+
225
+ var param = {"val":i};
226
+
227
+
228
+
229
+ console.log(param);
230
+
231
+
232
+
233
+ $.ajax({
234
+
235
+ url: "./screen.php",
236
+
237
+ type: "GET",
238
+
239
+ data: {
240
+
241
+ "val":i,
242
+
243
+ random_array : randoms
244
+
245
+ },
246
+
247
+ dataType : "text",
248
+
249
+ timespan:1000
250
+
251
+ }).done(function(data){
252
+
253
+ console.log(data);
254
+
255
+ }).fail(function(XMLHttpRequest, textStatus, errorThrown){
256
+
257
+ console.log("XMLHttpRequest : " + XMLHttpRequest.status);
258
+
259
+   console.log("textStatus : " + textStatus);
260
+
261
+   console.log("errorThrown : " + errorThrown.message);
262
+
263
+ });
264
+
265
+
266
+
267
+ });
268
+
269
+
270
+
271
+ });
272
+
273
+
274
+
275
+ ```
276
+
277
+
278
+
145
279
  ### 試したこと
146
280
 
147
281