回答編集履歴

4

25行目「if \(empty\(\.\.\.\)\) {」の構文エラーを修正

2017/09/02 07:41

投稿

Tomak
Tomak

スコア1652

test CHANGED
@@ -102,7 +102,7 @@
102
102
 
103
103
  foreach ($items as $key => $label) {
104
104
 
105
- if (! empty($_POST[$key]) {
105
+ if (! empty($_POST[$key])) {
106
106
 
107
107
  ${$key} = $pdo->quote($_POST[$key]);
108
108
 

3

項目配列修正

2017/09/02 07:41

投稿

Tomak
Tomak

スコア1652

test CHANGED
@@ -80,7 +80,7 @@
80
80
 
81
81
  // 項目
82
82
 
83
- $items = array('rank' => '順位', 'nation' => '国', 'food' => '好きな食べ物', 'reason' => '理由');
83
+ $items = array('rank' => '順位', 'nation' => '国', 'food' => '食べたい食べ物', 'reason' => '理由');
84
84
 
85
85
 
86
86
 
@@ -116,7 +116,7 @@
116
116
 
117
117
 
118
118
 
119
- if (! empty($errors)) {
119
+ if (empty($errors)) {
120
120
 
121
121
  //ランク「位」補完
122
122
 

2

入力チェック、エラー追加

2017/09/02 06:47

投稿

Tomak
Tomak

スコア1652

test CHANGED
@@ -78,27 +78,45 @@
78
78
 
79
79
  } else {
80
80
 
81
- $id = $pdo->quote($_POST['id']);
81
+ // 項目
82
82
 
83
- $rank = $pdo->quote($_POST['rank']);
84
-
85
- $nation = $pdo->quote($_POST['nation']);
86
-
87
- $food = $pdo->quote($_POST['food']);
88
-
89
- $reason = $pdo->quote($_POST['reason']);
83
+ $items = array('rank' => '順位', 'nation' => '国家', 'food' => '好きな食べ物', 'reason' => '理由');
90
84
 
91
85
 
92
86
 
93
87
  //ID入力チェック
94
88
 
95
- if (empty($id) || !is_numeric($id)) {
89
+ if (empty($_POST['id']) || !is_numeric($_POST['id'])) {
96
90
 
97
91
  $errors['id'] = "IDが入力されていないか、数値ではありません。";
98
92
 
93
+ } else {
94
+
95
+ $id = $pdo->quote($_POST['id']);
96
+
99
97
  }
100
98
 
99
+
100
+
101
+ // ID以外項目入力値チェック
102
+
103
+ foreach ($items as $key => $label) {
104
+
105
+ if (! empty($_POST[$key]) {
106
+
107
+ ${$key} = $pdo->quote($_POST[$key]);
108
+
101
- else {
109
+ continue;
110
+
111
+ }
112
+
113
+ $errors[$key] = $label."が入力されていません。";
114
+
115
+ }
116
+
117
+
118
+
119
+ if (! empty($errors)) {
102
120
 
103
121
  //ランク「位」補完
104
122
 

1

修正コードの場所が分かりにくかったので、コード追記

2017/09/02 06:44

投稿

Tomak
Tomak

スコア1652

test CHANGED
@@ -1,4 +1,4 @@
1
- `update2.php`のDBのSELECT文は必要ありません。というのも、画面(1)で「編集ボタン」を押したときにPOST値が画面(2)に送信されるからです。
1
+ 画面(2)の`update2.php`のDBのSELECT文は必要ありません。というのも、画面(1)で「編集ボタン」を押したときにPOST値が画面(2)に送信されるからです。
2
2
 
3
3
 
4
4
 
@@ -6,21 +6,47 @@
6
6
 
7
7
  // 画面2
8
8
 
9
- else {
9
+ try {
10
10
 
11
- $id = $_POST['id'];
11
+ if (empty($_POST)) {
12
12
 
13
- $rank = $_POST['rank'];
13
+ echo "<a href='update1.php'>update1.php</a>←こちらのページからどうぞ";
14
14
 
15
- $nation = $_POST['nation'];
15
+ exit();
16
16
 
17
- $food = $_POST['food'];
17
+ } else {
18
18
 
19
+ $id = $_POST['id'];
20
+
21
+ $rank = $_POST['rank'];
22
+
23
+ $nation = $_POST['nation'];
24
+
25
+ $food = $_POST['food'];
26
+
19
- $reason = $_POST['reason'];
27
+ $reason = $_POST['reason'];
28
+
29
+
30
+
31
+ if (empty($_POST['id']) || !is_numeric($_POST['id'])) {
32
+
33
+ echo "idエラー";
34
+
35
+ exit();
36
+
37
+ }
38
+
39
+ }
40
+
41
+ } catch (Exception $e) {
42
+
43
+ echo 'error';
44
+
45
+ echo('エラーが発生しました。:'.$e->getMessage());
46
+
47
+ exit;
20
48
 
21
49
  }
22
-
23
- ...
24
50
 
25
51
  ?>
26
52
 
@@ -34,7 +60,7 @@
34
60
 
35
61
 
36
62
 
37
- それから、画面(3)は下記のようにします。
63
+ それから、画面(3)の`update3.php`は下記のようにします。
38
64
 
39
65
 
40
66
 
@@ -42,56 +68,78 @@
42
68
 
43
69
  // 画面3
44
70
 
45
- else {
71
+ try {
46
72
 
47
- $id = $pdo->quote($_POST['id']);
73
+ if (empty($_POST)) {
48
74
 
49
- $rank = $pdo->quote($_POST['rank']);
75
+ echo "<a href='update1.php'>update1.php</a>←こちらのページからどうぞ";
50
76
 
51
- $nation = $pdo->quote($_POST['nation']);
77
+ exit();
52
78
 
53
- $food = $pdo->quote($_POST['food']);
79
+ } else {
54
80
 
81
+ $id = $pdo->quote($_POST['id']);
82
+
83
+ $rank = $pdo->quote($_POST['rank']);
84
+
85
+ $nation = $pdo->quote($_POST['nation']);
86
+
87
+ $food = $pdo->quote($_POST['food']);
88
+
55
- $reason = $pdo->quote($_POST['reason']);
89
+ $reason = $pdo->quote($_POST['reason']);
56
90
 
57
91
 
58
92
 
59
- //ID入力チェック
93
+ //ID入力チェック
60
94
 
61
- if (empty($id) || !is_numeric($id)){
95
+ if (empty($id) || !is_numeric($id)) {
62
96
 
63
- $errors['id'] = "IDが入力されていないか、数値ではありません。";
97
+ $errors['id'] = "IDが入力されていないか、数値ではありません。";
98
+
99
+ }
100
+
101
+ else {
102
+
103
+ //ランク「位」補完
104
+
105
+ false === strpos($rank, '位') && $rank .= '位';
106
+
107
+
108
+
109
+ //プリペアドステートメント
110
+
111
+ $stmt = $pdo->prepare("update country set rank=?, nation=?, food=?, reason=? where id=?");
112
+
113
+
114
+
115
+ //DB更新
116
+
117
+ if (! $stmt->execute(array($rank, $nation, $food, $reason, $id))) {
118
+
119
+ $errors['exec'] = 'DB更新に失敗しました。';
120
+
121
+ }
122
+
123
+
124
+
125
+ $pdo = null;
126
+
127
+ }
64
128
 
65
129
  }
66
130
 
67
- else {
131
+ } catch (Exception $e) {
68
132
 
69
- //ランク「位」補完
133
+ echo 'error';
70
134
 
71
- false === strpos($rank, '') && $rank .= '位';
135
+ echo ('エラーが発生しました。:'.$e->getMessage());
72
136
 
73
-
74
-
75
- //プリペアドステートメント
76
-
77
- $stmt = $pdo->prepare("update country set rank=?, nation=?, food=?, reason=? where id=?");
78
-
79
-
80
-
81
- //DB更新
82
-
83
- if (! $stmt->execute(array($rank, $nation, $food, $reason, $id))) {
84
-
85
- $errors['exec'] = 'DB更新に失敗しました。';
86
-
87
- }
88
-
89
-
90
-
91
- $pdo = null;
137
+ exit;
92
-
93
- }
94
138
 
95
139
  }
96
140
 
141
+ ?>
142
+
97
143
  ```
144
+
145
+