質問編集履歴
4
エラーを追記しました。
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
|
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
全角スペース修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -77,7 +77,7 @@
|
|
77
77
|
}
|
78
78
|
|
79
79
|
//ランダムなid(random_val)のtopicを取りだす
|
80
|
-
$topic
|
80
|
+
$topic = 0;
|
81
81
|
|
82
82
|
try{
|
83
83
|
$pdo = new PDO($dsn, $user, $password , [
|
2
ソースコードを追加しました
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->
|
92
|
+
$result = $stm->fetch();
|
43
93
|
|
44
|
-
//お題を取得
|
45
|
-
foreach ($result as $value) {
|
46
|
-
|
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
ソースコードを追加しました
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の変数に値が入っているか確認しました。値は入っていました。
|