teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

html及びphpの更新

2022/01/04 11:16

投稿

srsnsts
srsnsts

スコア515

answer CHANGED
@@ -11,6 +11,8 @@
11
11
 
12
12
  以下のhtmlは私の考え方を示す一例です。
13
13
 
14
+ コメントを受けて処理区分を設けました。
15
+
14
16
  ```html
15
17
  <html>
16
18
  <head>
@@ -22,6 +24,18 @@
22
24
  //
23
25
  $("#btn_submit").on("click", function(event){
24
26
  let i;
27
+
28
+ //
29
+ // syori_kbn に関する内容を追加
30
+ //
31
+ // 'syori_kbn' というnameの要素のリストを取得する
32
+ let syori_kbn_elems = document.getElementsByName('syori_kbn');
33
+ let syori_kbn = [];
34
+ for(i=0;i<syori_kbn_elems.length;i++){
35
+ // 配列 syori_kbn に値を詰める
36
+ syori_kbn[i] = syori_kbn_elems[i].value;
37
+ }
38
+
25
39
  // 'shikakumei' というnameの要素のリストを取得する
26
40
  let shikakumei_elems = document.getElementsByName('shikakumei');
27
41
  let shikakumei = [];
@@ -54,6 +68,7 @@
54
68
  type: "POST",
55
69
  url: "syori.php",
56
70
  data: {
71
+ "syori_kbn" : syori_kbn,
57
72
  "sikakumei" : shikakumei,
58
73
  "category" : category,
59
74
  "syutoku_ymd" : syutoku_ymd
@@ -76,16 +91,33 @@
76
91
  <form name='records'>
77
92
  <table>
78
93
  <tr>
94
+ <th>処理区分</th>
79
95
  <th>資格名</th>
80
96
  <th>カテゴリ</th>
81
97
  <th>取得日</th>
82
98
  </tr>
83
99
  <tr>
100
+ <td>
101
+ <select name="syori_kbn">
102
+ <option value="N">変更なし</option>
103
+ <option value="U">更新</option>
104
+ <option value="D">削除</option>
105
+ <option value="I">追加</option>
106
+ </select>
107
+ </td>
84
108
  <td><input type='text' name='shikakumei' /></td>
85
109
  <td><input type='text' name='category' /></td>
86
110
  <td><input type='text' name='syutoku_ymd' /></td>
87
111
  </tr>
88
112
  <tr>
113
+ <td>
114
+ <select name="syori_kbn">
115
+ <option value="N">変更なし</option>
116
+ <option value="U">更新</option>
117
+ <option value="D">削除</option>
118
+ <option value="I">追加</option>
119
+ </select>
120
+ </td>
89
121
  <td><input type='text' name='shikakumei' /></td>
90
122
  <td><input type='text' name='category' /></td>
91
123
  <td><input type='text' name='syutoku_ymd' /></td>
@@ -99,6 +131,8 @@
99
131
 
100
132
  php側の一例を以下に示します。
101
133
 
134
+ コメントを受けて処理区分を追加しました。
135
+
102
136
  ```PHP
103
137
  <?php
104
138
  //
@@ -109,17 +143,39 @@
109
143
  // postされたデータを配列形式で受け取る
110
144
  // 提示されたバージョンで動作するかは不明
111
145
  //
146
+
147
+ // syori_kbn に関する内容を追加
148
+ $syori_kbn = filter_input(INPUT_POST,'syori_kbn',FILTER_DEFAULT,FILTER_REQUIRE_ARRAY);
112
149
  $shikakumei = filter_input(INPUT_POST,'shikakumei',FILTER_DEFAULT,FILTER_REQUIRE_ARRAY);
113
150
  $category = filter_input(INPUT_POST,'category',FILTER_DEFAULT,FILTER_REQUIRE_ARRAY);
114
151
  $syutoku_ymd = filter_input(INPUT_POST,'syutoku_ymd',FILTER_DEFAULT,FILTER_REQUIRE_ARRAY);
115
152
 
116
153
  //
117
154
  // レコード数だけSQL文を発行する
155
+ // $syori_kbn[$i]が
156
+ // "N" なら何も処理しない
157
+ // "U" ならUPDATEする
158
+ // "D" ならDELETEする
159
+ // "I" ならINSERTする
118
160
  //
119
- for($i=0;$i<count($shikakumei);$i++){
161
+ for($i=0;$i<count($syori_kbn);$i++){
162
+ if($syori_kbn[$i] === 'N'){
163
+
120
- //
164
+ // 何もしない
165
+ continue;
166
+
167
+ }elseif($syori_kbn[$i] === 'U'){
168
+
169
+ // UPDATEを実行
170
+
171
+ }elseif($syori_kbn[$i] === 'D'){
172
+
173
+ // DELETEを実行
174
+
175
+ }elseif($syori_kbn[$i] === 'I'){
176
+
121
- // INSERTを実行する
177
+ // INSERTを実行
122
- //
178
+ }
123
179
  }
124
180
 
125
181
  ```