質問編集履歴

2

データベースの追加、及び投稿済みの文章の若干の修正をしました。

2021/03/24 04:21

投稿

tapp
tapp

スコア3

test CHANGED
File without changes
test CHANGED
@@ -300,7 +300,7 @@
300
300
 
301
301
 
302
302
 
303
- $dsn = 'mysql:host=localhost;dbname=car_model;charset=utf8mb4';
303
+ $dsn = 'mysql:host=localhost;dbname=gmatome;charset=utf8mb4';
304
304
 
305
305
  $username = 'root';
306
306
 
@@ -344,7 +344,7 @@
344
344
 
345
345
  // SQL文 :nameと:romajiは、名前付きプレースホルダ
346
346
 
347
- $stmt = $dbh->prepare("INSERT INTO gositekimatome(car_maker,car_model) VALUES (:car_maker,:car_model)");
347
+ $stmt = $dbh->prepare("INSERT INTO matome(car_maker,car_model) VALUES (:car_maker,:car_model)");
348
348
 
349
349
 
350
350
 
@@ -419,3 +419,75 @@
419
419
  var = $('option:selected').text();を使用するといいようですが、どこにどのように挿入したら
420
420
 
421
421
  いいのか分かりませんでした。
422
+
423
+
424
+
425
+ ### データベース
426
+
427
+ データベース名car_maker
428
+
429
+ テーブル名maker
430
+
431
+ |id|maker_name|
432
+
433
+ |:--:|:--:|
434
+
435
+ |1|TOYOTA|
436
+
437
+ |2|HONDA|
438
+
439
+ |3|NISSAN|
440
+
441
+
442
+
443
+ データベース名car_model
444
+
445
+ テーブル名model
446
+
447
+ |id|maker_id|model_name|
448
+
449
+ |:--:|:--:|:--:|
450
+
451
+ |1|1|アルファード|
452
+
453
+ |2|1|プリウス|
454
+
455
+ |3|3|GT-R|
456
+
457
+ |4|2|オデッセイ|
458
+
459
+
460
+
461
+ データベース名gmatome
462
+
463
+ テーブル名matome
464
+
465
+ |id|date|maker_id|model_name|naiyou|
466
+
467
+ |:--:|:--:|:--:|
468
+
469
+ |1|1029|TOYOTA|アルファード|オイル交換|
470
+
471
+ |2|1030|TOYOTA|アルファード|車検|
472
+
473
+ |3|1031|NISSAN|GT-R|速い|
474
+
475
+ |4|1101|HONDA|オデッセイ|車検|
476
+
477
+ |5|1102|1|2|車検|
478
+
479
+
480
+
481
+ 一番下のgmatomedbのid1~4のようにメーカーと車種が入ってほしいのですが
482
+
483
+ id5のようにメーカーと車種が数字で入ってしまいます。
484
+
485
+
486
+
487
+ 会社で使用するものである為、実際のデータは使用しておらず、
488
+
489
+ 車に置き換えて投稿させて頂いており、間違いが多々ありました。
490
+
491
+ その他、gmatomedbの内容記入欄や日付欄などはindex.phpでプルダウン選択と
492
+
493
+ 同時に記入しdbに入ってくれています。

1

2021/03/24 04:21

投稿

tapp
tapp

スコア3

test CHANGED
File without changes
test CHANGED
@@ -138,7 +138,7 @@
138
138
 
139
139
  <h1>車</h1>
140
140
 
141
- <form action="gositeki_send.php" method="post">
141
+ <form action="send.php" method="post">
142
142
 
143
143
  <table>
144
144
 
@@ -198,6 +198,84 @@
198
198
 
199
199
 
200
200
 
201
+ select.php
202
+
203
+ ```php
204
+
205
+ <?php
206
+
207
+ //直接のページ遷移を阻止
208
+
209
+ $request = isset($_SERVER['HTTP_X_REQUESTED_WITH']) ? strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) : '';
210
+
211
+ if($request !== 'xmlhttprequest') exit;
212
+
213
+ //DBへの接続
214
+
215
+ //本来は db_connect関数 を作成して、DRYにした方が良いです。
216
+
217
+ try {
218
+
219
+ $dsn = 'mysql:host=localhost;dbname=car_model;charset=utf8';
220
+
221
+ $user = 'root';
222
+
223
+ $pass = 'root';
224
+
225
+ $pdo = new PDO($dsn, $user, $pass, array(PDO::ATTR_EMULATE_PREPARES => false));
226
+
227
+ $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
228
+
229
+ }
230
+
231
+ catch(PDOException $e) {
232
+
233
+ exit('データベース接続失敗'.$e->getMessage());
234
+
235
+ }
236
+
237
+ //Ajaxで渡ってきた値をもとに modelテーブル から該当する model を抽出
238
+
239
+ if (!empty($_POST['maker_id'])) {
240
+
241
+ $maker_no = $_POST['maker_id'];
242
+
243
+ //$maker_no = $_POST['maker_no'];
244
+
245
+ $sql = 'SELECT * FROM model WHERE maker_id = :maker_id';
246
+
247
+ $stmt=$pdo->prepare($sql);
248
+
249
+ $stmt->bindValue(':maker_id', (int)$maker_no, PDO::PARAM_INT);
250
+
251
+ $stmt->execute();
252
+
253
+
254
+
255
+ //抽出された値を $model_list配列 に格納
256
+
257
+ $model_list = array();
258
+
259
+ while($row = $stmt -> fetch(PDO::FETCH_ASSOC)){
260
+
261
+ $model_list[$row['id']] = $row['model_name'];
262
+
263
+ }
264
+
265
+ header('Content-Type: application/json');
266
+
267
+ //json形式で index.php へバックする
268
+
269
+ echo json_encode($model_list);
270
+
271
+ }
272
+
273
+ ?>
274
+
275
+ ```
276
+
277
+
278
+
201
279
  send.php
202
280
 
203
281
  ```php