質問編集履歴

1

ご指摘いただいたエラーの表示と、ソースコードは<code>機能を利用しました。xzmppはxammpの間違いですね。よろしくお願いいたします。

2020/10/22 12:03

投稿

ren_myu
ren_myu

スコア1

test CHANGED
@@ -1 +1 @@
1
- PHP データベース(xzmppのmysqlです)にデータが保存できないようでプログラミングの目的と意図しない遷移画面になります。
1
+ PHP データベース(xamppのmysqlです)にデータが保存できないようでプログラミングの目的と意図しない遷移画面になります。
test CHANGED
@@ -38,6 +38,28 @@
38
38
 
39
39
 
40
40
 
41
+
42
+
43
+ **ボールドテキスト**
44
+
45
+ 編集の追記です。
46
+
47
+ エラーは、issetが無ければ、
48
+
49
+ Notice: Undefined index: name in C:\xampp\htdocs\staff\staff_add_done.php on line 15
50
+
51
+
52
+
53
+ Notice: Undefined index: pass in C:\xampp\htdocs\staff\staff_add_done.php on line 16
54
+
55
+ と、出ます。
56
+
57
+ もう一つは下記です。
58
+
59
+
60
+
61
+ SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO)と表示されています。
62
+
41
63
  ```
42
64
 
43
65
  ### ヘディングのテキスト
@@ -54,6 +76,22 @@
54
76
 
55
77
  一番最初のファイルです。
56
78
 
79
+ ```html
80
+
81
+ <!DOCTYPE html>
82
+
83
+ <html lang="ja">
84
+
85
+ <head>
86
+
87
+ <meta charset="UTF-8">
88
+
89
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
90
+
91
+ <title>中村農園</title>
92
+
93
+ </head>
94
+
57
95
  <body>
58
96
 
59
97
  スタッフ追加<br/>
@@ -86,9 +124,17 @@
86
124
 
87
125
  </body>
88
126
 
89
-
127
+ </html>```html
90
-
128
+
129
+
130
+
91
-  これが2番目のファイルです。
131
+ これが2番目のファイルです。
132
+
133
+
134
+
135
+ コード
136
+
137
+ ```PHP
92
138
 
93
139
  <?php
94
140
 
@@ -102,17 +148,11 @@
102
148
 
103
149
 
104
150
 
105
- $staff_name=htmlspecialchars
151
+ $staff_name=htmlspecialchars($staff_name);
106
-
107
- ($staff_name);
152
+
108
-
109
- $staff_pass=htmlspecialchars
153
+ $staff_pass=htmlspecialchars($staff_pass);
110
-
111
- ($staff_pass);
154
+
112
-
113
- $staff_pass2=htmlspecialchars
155
+ $staff_pass2=htmlspecialchars($staff_pass2);
114
-
115
- ($staff_pass2);
116
156
 
117
157
 
118
158
 
@@ -120,9 +160,7 @@
120
160
 
121
161
  {
122
162
 
123
- print 'スタッフ名が入力されていま
124
-
125
- せん。<br />';
163
+ print 'スタッフ名が入力されていません。<br />';
126
164
 
127
165
  }
128
166
 
@@ -144,9 +182,7 @@
144
182
 
145
183
  {
146
184
 
147
- print 'パスワードが入力されていま
148
-
149
- せん。<br />';
185
+ print 'パスワードが入力されていません。<br />';
150
186
 
151
187
  }
152
188
 
@@ -156,29 +192,19 @@
156
192
 
157
193
  {
158
194
 
159
- print 'パスワードが一致しません。
195
+ print 'パスワードが一致しません。<br />';
160
-
161
- <br />';
196
+
162
-
163
- }
197
+ }
164
-
165
-
166
-
198
+
199
+
200
+
167
- if($staff_name=='' ||
201
+ if($staff_name=='' || $staff_pass=='' || $staff_pass!=$staff_pass2)
168
-
169
- $staff_pass=='' ||
170
-
171
- $staff_pass!=$staff_pass2)
172
202
 
173
203
  {
174
204
 
175
205
  print '<form>';
176
206
 
177
- print '<input type="button"
178
-
179
- onclick="history.back()" value="戻
207
+ print '<input type="button" onclick="history.back()" value="戻る">';
180
-
181
- る">';
182
208
 
183
209
  print '</form>';
184
210
 
@@ -190,33 +216,17 @@
190
216
 
191
217
  $staff_pass=md5($staff_pass);
192
218
 
193
- print '<form method="post"
194
-
195
- action="staff_add_done.php">';
219
+ print '<form method="post" action="staff_add_done.php">';
196
-
197
- print '<input type="hidden"
220
+
198
-
199
- name="name" value="'.$staff_name.
221
+ print '<input type="hidden" name="name" value="'.$staff_name.'">';
200
-
201
- '">';
222
+
202
-
203
- print '<input type="hidden"
204
-
205
- name="pass" value="'.$staff_pass.
223
+ print '<input type="hidden" name="pass" value="'.$staff_pass.'">';
206
-
207
- '">';
208
224
 
209
225
  print '<br />';
210
226
 
211
- print '<input type="button"
212
-
213
- onclick="history.back()" value="戻
227
+ print '<input type="button" onclick="history.back()" value="戻る">';
214
-
215
- る">';
228
+
216
-
217
- print '<input type="submit"
229
+ print '<input type="submit" value="OK">';
218
-
219
- value="OK">';
220
230
 
221
231
  print '</form>';
222
232
 
@@ -226,6 +236,16 @@
226
236
 
227
237
  ?>
228
238
 
239
+ </body>
240
+
241
+ </html>
242
+
243
+ ```PHP
244
+
245
+
246
+
247
+
248
+
229
249
 
230
250
 
231
251
  こちらが3つめのファイルです。
@@ -234,6 +254,30 @@
234
254
 
235
255
  ここで本来ならばデータベースに登録されてstaff_list.phpというファイルに行くために戻るのボタンとリンクの表示が出るはずなのですが、エラートラップによりうまくいきません。
236
256
 
257
+
258
+
259
+ <!DOCTYPE html>
260
+
261
+ <html lang="ja">
262
+
263
+ <head>
264
+
265
+ <meta charset="UTF-8">
266
+
267
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
268
+
269
+ <title>中村農園</title>
270
+
271
+ </head>
272
+
273
+ <body>
274
+
275
+ ```PHP
276
+
277
+ コード
278
+
279
+ ```
280
+
237
281
  <?php
238
282
 
239
283
 
@@ -246,19 +290,179 @@
246
290
 
247
291
 
248
292
 
293
+ $staff_name=isset($_POST['name']);
294
+
295
+ $staff_pass=isset($_POST['pass']);
296
+
297
+
298
+
299
+ $staff_name=htmlspecialchars($staff_name);
300
+
301
+ $staff_pass=htmlspecialchars($staff_pass);
302
+
303
+
304
+
305
+ $dsn='mysql:dbname=shop;host=localhost;charset=utf8';
306
+
307
+ $user='root';
308
+
309
+ $password='';
310
+
311
+ $dbh=new PDO($dsn,$user,$password);
312
+
313
+ $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
314
+
315
+
316
+
317
+ $sql='INSERT INTO mst_staff (name,password) VALUES (?,?)';
318
+
319
+ $stmt=$dbh->prepare($sql);
320
+
321
+ $data[]=$staff_name;
322
+
323
+ $data[]=$staff_pass;
324
+
325
+ $stmt->execute($data);
326
+
327
+
328
+
329
+ $dbh=null;
330
+
331
+
332
+
333
+ print $staff_name;
334
+
335
+ print 'さんを追加しました。<br />';
336
+
337
+
338
+
339
+ }
340
+
341
+ catch (Exception $e)
342
+
343
+ {
344
+
345
+ print $e->getmessage();
346
+
347
+ exit();
348
+
349
+ }
350
+
351
+
352
+
353
+ ?>
354
+
355
+
356
+
357
+ <a href="staff_list.php"> 戻る</a>
358
+
359
+
360
+
361
+ ?>
362
+
363
+ </body>
364
+
365
+ </html>
366
+
367
+
368
+
369
+ ```PHP
370
+
371
+
372
+
373
+
374
+
375
+
376
+
377
+
378
+
379
+
380
+
381
+
382
+
383
+
384
+
385
+
386
+
387
+
388
+
389
+
390
+
391
+
392
+
393
+
394
+
395
+
396
+
397
+
398
+
399
+
400
+
401
+
402
+
403
+
404
+
405
+
406
+
407
+
408
+
409
+
410
+
411
+
412
+
413
+
414
+
415
+
416
+
417
+
418
+
419
+
420
+
421
+
422
+
423
+
424
+
425
+
426
+
427
+
428
+
429
+
430
+
431
+
432
+
433
+
434
+
435
+ ### 試したこと
436
+
249
437
  $staff_name=isset($_POST['name'])
250
438
 
251
439
  $staff_pass=isset($_POST['pass'])
252
440
 
253
441
 
254
442
 
443
+ issetを付けました。これが無ければ、”未定義のインデックス”とエラーが出ていました。
444
+
445
+
446
+
447
+ それて下記です。
448
+
449
+
450
+
255
- $staff_name=htmlspecialchars
451
+ catch (Exception $e){
452
+
453
+
454
+
256
-
455
+ print 'ただいま障害により大変ご迷惑をお掛けしております。';
456
+
457
+ exit();を
458
+
459
+
460
+
257
- ($staff_name);
461
+ $e->getMessage();
258
-
259
- $staff_pass=htmlspecialchars
462
+
260
-
261
- ($staff_pass);
463
+ exit();
464
+
465
+ にしてみたのですが、PHPからデータベース接続の
262
466
 
263
467
 
264
468
 
@@ -268,120 +472,12 @@
268
472
 
269
473
  $user='root';
270
474
 
271
- $password='';
475
+ $password='';←ここに問題があるというようなエラー回答が出ました。
272
-
476
+
273
- $dbh=new PDO($dsn,$user,$password
477
+ $dbh=new PDO($dsn,$user,$password)
274
478
 
275
479
  ;
276
480
 
277
- $dbh->setAttribute
278
-
279
- (PDO::ATTR_ERRMODE,
280
-
281
- PDO::ERRMODE_EXCEPTION);
282
-
283
-
284
-
285
- $sql='INSERT INTO mst_staff (name
286
-
287
- password) VALUES (?,?)';
288
-
289
- $stmt=$dbh->prepare($sql);
290
-
291
- $data[]=$staff_name;
292
-
293
- $data[]=$staff_pass;
294
-
295
- $stmt->execute($data);
296
-
297
-
298
-
299
- $dbh=null;
300
-
301
-
302
-
303
- print $staff_name;
304
-
305
- print 'さんを追加しました。<br />
306
-
307
-
308
-
309
- }
310
-
311
- catch (Exception $e)
312
-
313
- {
314
-
315
- print $e->getmessage();
316
-
317
- exit();
318
-
319
- }
320
-
321
-
322
-
323
- ?>
324
-
325
-
326
-
327
- <a href="staff_list.php"> 戻る</a>
328
-
329
-
330
-
331
-
332
-
333
-
334
-
335
-
336
-
337
-
338
-
339
- ### 試したこと
340
-
341
- $staff_name=isset($_POST['name'])
342
-
343
- $staff_pass=isset($_POST['pass'])
344
-
345
-
346
-
347
- issetを付けました。これが無ければ、”未定義のインデックス”とエラーが出ていました。
348
-
349
-
350
-
351
- それて下記です。
352
-
353
-
354
-
355
- catch (Exception $e){
356
-
357
-
358
-
359
- print 'ただいま障害により大変ご迷惑をお掛けしております。';
360
-
361
- exit();を
362
-
363
-
364
-
365
- $e->getMessage();
366
-
367
- exit();
368
-
369
- にしてみたのですが、PHPからデータベース接続の
370
-
371
-
372
-
373
- $dsn='mysql:dbname=shop;
374
-
375
- host=localhost;charset=utf8';
376
-
377
- $user='root';
378
-
379
- $password='';←ここに問題があるというようなエラー回答が出ました。
380
-
381
- $dbh=new PDO($dsn,$user,$password)
382
-
383
- ;
384
-
385
481
 
386
482
 
387
483
  教材では特にデータベースへのuser登録やパスワードの登録の指示はありませんでした。