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

質問編集履歴

1

文字数圧縮

2019/03/18 07:18

投稿

ikawa19660319
ikawa19660319

スコア10

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,4 @@
1
- PHP初心者の者です
1
+ HELP! おしえて下さい
2
2
 
3
3
  以下のPHPは、前任者作成のページで改修が必要となったもので、
4
4
  MS SQLデータベースを使用したデータ編集のPHPとなります。
@@ -6,354 +6,242 @@
6
6
  通りに動作するのですが、以下の点で足踏みしています。
7
7
 
8
8
  ソースのデータ取得部《 $stmt = $db->query("SELECT ... WHERE ... 》
9
- で、WHERE を使用したいのですが、くいきません。
9
+ で、WHERE を使用したいのですが、意図した動作となりません。
10
10
 
11
- 《 if (isset($_GET["func"]) && $_GET["func"] == "get_data") {
11
+ それは、《 if (isset($_GET["func"]) && $_GET["func"] == ...
12
12
  以降で、変数渡しが不能のようで、別ページのsubmitボタンで値を
13
- 送信し、それをTOP部の《 $_GET['InPass'] 》などで受け、それを
13
+ 送信し、それをTOP部の《 $_GET['InPass'] 》などで受け、条件指定で
14
- 条件指定でテーブル参照し、表示、編集させたいのですが、...
14
+ テーブル参照し、表示、編集させたいのですが、...
15
15
 
16
16
  ところが、《 WHERE pass_master.Pass='$InPass' 》 には変数が
17
17
  渡らず、固定値(例えば、'HK1640')などでは、WHERE の条件が機能し、
18
- 想定した結果が得られ
18
+ 意図した結果が得られるのでが、...
19
19
 
20
20
  また、別ページからの値は、《 if (isset($_GET["func"]) && ...》
21
- 直前の《 print $InPass; 》では想定通りの結果が得られます。
21
+ 直前の《 print $InPass; 》では意図した通りの結果が得られます。
22
22
 
23
23
  なぜでしょうか? よろしくお願いします。
24
24
 
25
25
 
26
26
  以下、ソースコード(page1.php) --------------------------------------------------------------
27
27
 
28
+ ```ここに言語を入力
28
29
  <?php
29
-
30
30
  if(isset($_GET['InPass'])) {
31
31
  $InPass = $_GET['InPass'];
32
32
  } else {
33
33
  $InPass = $_REQUEST['InPass'];
34
34
  }
35
-
36
35
  ?>
37
36
 
38
37
  <?php
39
-
40
38
  $dsn = 'sqlsrv:server=XXXXXXXX;database=XXXXX';
41
39
  $user = 'XXX';
42
40
  $password = 'XXXXXXXXXX';
43
41
  $db = new PDO($dsn, $user, $password);
44
-
45
- $columns = "Jcode varchar(20) PRIMARY KEY, Scode varchar(13) PRIMARY KEY, Name varchar(20), SaCode tinyint, SaName varchar(12), KJkyu money, JWarimasi money, SWarimasi money, HWarimasi money, YWarimasi money, DWarimasi money, Koutsu money, Sdatetime datetime" ;
46
-
42
+ $columns = "Jcode varchar(20) PRIMARY KEY, Scode varchar(13) PRIMARY KEY, Name varchar(20), SaCode tinyint, SaName varchar(12), KJkyu money, JWarimasi money, SWarimasi money, HWarimasi money, YWarimasi money, DWarimasi money, Koutsu money, Sdatetime datetime" ;
47
43
  $db->exec("CREATE TABLE IF NOT EXISTS TM_webJikyu ($columns)");
48
44
 
49
-
50
45
  /**************/
51
46
  /* データ取得部 */
52
47
  /**************/
53
48
 
54
49
  //print $InPass;
55
-
56
50
  if (isset($_GET["func"]) && $_GET["func"] == "get_data") {
57
-
58
51
  //$InPass = 'HK1640';
59
52
 
60
53
  $stmt = $db->query("SELECT pass_master.Pass, TM_webJikyu.SaCode, TM_webJikyu.Scode, TM_webJikyu.* FROM pass_master INNER JOIN TM_webJikyu ON pass_master.id = TM_webJikyu.Jcode WHERE pass_master.Pass='$InPass' ORDER BY TM_webJikyu.SaCode, TM_webJikyu.Scode;");
61
-
62
54
  $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
63
-
64
55
  $json = json_encode($rows);
65
-
66
56
  echo $json;
67
-
68
57
  exit();
69
58
 
70
-
71
59
  /*********************************/
72
60
  /* データ更新部(削除、変更)*/
73
61
  /*********************************/
74
62
  } else if (isset($_POST["func"]) && $_POST["func"] == "upd_data") {
75
-
76
63
  // データ受取
77
64
  $delid = $_POST["delid"];
78
65
  $delid = json_decode($delid, true);
79
66
  $upddata = $_POST["upddata"];
80
67
  $upddata = json_decode($upddata, true);
81
-
82
68
  // トランザクション開始
83
69
  $db->beginTransaction();
84
-
85
-
86
70
  // データ削除
87
71
  if ($delid) {
88
-
89
72
  for ($i=0; $i<count($delid); $i++) {
90
73
  $sql = "DELETE FROM TM_webJikyu WHERE (((Jcode)=?) AND ((Scode)=?)) ";
91
74
  $stmt = $db->prepare($sql);
92
75
  $stmt->execute(array(1,$delid[$i]["Jcode"], $delid[$i]["Scode"]));
93
-
94
76
  }
95
77
  }
96
-
97
-
98
78
  // データ変更
99
79
  if ($upddata) {
100
-
101
80
  for ($i=0; $i<count($upddata); $i++) {
102
-
103
- $sql = "UPDATE TM_webJikyu SET KJkyu=? WHERE (((Jcode)=?) AND ((Scode)=?))";
81
+ $sql = "UPDATE TM_webJikyu SET KJkyu=? WHERE (((Jcode)=?) AND ((Scode)=?))";
104
-
105
82
  $stmt = $db->prepare($sql);
106
83
  $stmt->execute(array(
107
84
  $upddata[$i]["KJkyu"],
108
-
109
85
  $upddata[$i]["Jcode"],
110
86
  $upddata[$i]["Scode"]));
111
-
112
87
  }
113
88
  }
114
89
 
115
-
116
90
  // トランザクション終了
117
91
  $db->commit();
118
92
  exit();
119
-
120
-
121
93
  }
122
-
123
94
  $db = null;
124
95
 
125
-
126
96
  ?>
127
97
 
128
-
129
-
130
98
  <!doctype html>
131
99
  <html>
132
100
  <head>
133
101
 
134
-
135
102
  <!-- スクリプト部分 -->
136
103
  <script type="text/javascript">
137
-
138
104
  var Ajax = new XMLHttpRequest();
139
-
140
105
  // 削除対象IDを格納する配列
141
106
  var delid = [];
142
-
143
107
  // 変更データを格納する配列
144
108
  var upddata = [];
145
-
146
109
  // 新規登録データを格納する配列
147
110
  var insdata = [];
148
-
149
111
  window.onload = getSample;
150
112
 
151
-
152
113
  /************/
153
114
  /* 一覧表示部 */
154
115
  /************/
155
-
156
116
  function getSample() {
157
-
158
117
  var rows, row, i, out;
159
-
160
118
  //コメント追加
161
119
  out="";
162
-
163
120
  var url = "http://1.1.1.1/page1.php" + "?dummy=" + new Date().getTime() + "&func=" + "get_data";
164
-
165
121
  Ajax.open("GET", url, true);
166
-
167
122
  Ajax.send(null);
168
-
169
123
  Ajax.onreadystatechange = function() {
170
-
171
124
  if (Ajax.readyState == 4 && Ajax.status == 200) {
172
-
173
125
  out += '<p>';
174
126
  out += '<th><font size="6">時給マスタ登録</font></th>';
175
127
  out += '</p>';
176
-
177
128
  out += '<p>';
178
129
  out += '<table style="text-align: left;" border="0" cellpadding="2" cellspacing="2">';
179
-
180
130
  out += '<td><button type="button" onClick="Upd();" style="width:120px;font-size:18;">'+"更 新"+'</button></td>';
181
131
  out += '<td style="width: 200px; text-align: right;"><button type="button" onClick="Upd();" style="width:120px;font-size:18;color:red;">'+"削 除"+'</button></td>';
182
132
  out += '</table>';
183
133
  out += '</p>';
184
-
185
134
  out += '<table border="1" id="sampletb">';
186
-
187
135
  out += '<tr>';
188
136
  out += '<th bgcolor=silver ><font Color="black">削除</th>';
189
137
  out += '<th bgcolor=silver width="130">事業所名</th>';
190
138
  out += '<th bgcolor=silver width="70">社員コード</th>';
191
139
  out += '<th bgcolor=silver width="150">社員名</th>';
192
140
  out += '<th bgcolor=silver width="110"><font size="2">基本時間給</th>';
193
-
194
141
  out += '</tr>';
195
-
196
142
  res = Ajax.responseText;
197
-
198
143
  if (res) {
199
-
200
144
  var rows = JSON.parse(res);
201
-
202
145
  for (i in rows) {
203
146
  out += '<tr>';
204
-
205
-
206
147
  //削除flg
207
148
  out += '<td><input type="checkbox" id="'+i+':0" onClick="delCheck(this)";></td>';
208
-
209
149
  //事業所名
210
150
  out += '<td><input type="text" readonly style="width:130px; background-color:#d3d3d3;" id="'+i+':1" value="'+rows[i]["Jcode"]+'" ></td>';
211
-
212
151
  //社員コード
213
152
  out += '<td><input type="text" readonly style="width:70px; background-color:#d3d3d3;" id="'+i+':2" value="'+rows[i]["Scode"]+'"></td>';
214
-
215
153
  //社員名
216
154
  out += '<td><input type="text" readonly style="width:150px; background-color:#d3d3d3;" id="'+i+':3" value="'+rows[i]["Name"]+'"></td>';
217
-
218
155
  //基本時間給
219
156
  if (rows[i]["KJkyu"] == null || rows[i]["KJkyu"] == '') {
220
157
  out += '<td><input type="number" style="width:110px; text-align:right; background-color:#ffffe0;" id="'+i+':6" value='+Math.round(rows[i]["KJkyu"])+' onChange="updCheck(this)";></td>';
221
158
  } else {
222
159
  out += '<td><input type="number" style="width:110px; text-align:right; background-color:#ffffff;" id="'+i+':6" value='+Math.round(rows[i]["KJkyu"])+' onChange="updCheck(this)";></td>';
223
160
  }
224
-
225
-
226
-
227
161
  out += '</tr>';
228
-
229
- }
162
+ }
230
-
231
163
  }
232
-
233
-
234
164
  document.getElementById("result").innerHTML = out;
235
-
236
165
  }
237
166
  }
238
167
  }
239
168
 
240
-
241
- /********/
169
+ /**********/
242
170
  /* 変更部 */
243
- /********/
171
+ /**********/
244
-
245
172
  function updCheck(e) {
246
-
247
173
  e.parentNode.style.backgroundColor = 'darkgreen';
248
174
  var row = e.id.substr(0, e.id.indexOf(":"));
249
175
  var tid = document.getElementById(row+':1').value;
250
176
  var Scode = document.getElementById(row+':2').value;
251
-
252
177
  var Name = document.getElementById(row+':3').value;
253
178
  var SaCode = document.getElementById(row+':4').value;
254
179
  var SaName = document.getElementById(row+':5').value;
255
180
  var KJkyu = document.getElementById(row+':6').value;
256
181
 
257
-
258
-
259
182
  // 最初の変更処理
260
183
  if (upddata.length == 0) {
261
184
  upddata.push({"Jcode":tid, "Scode":Scode, "Name":Name, "SaCode":SaCode, "SaName":SaName, "KJkyu":KJkyu, "JWarimasi":JWarimasi, "SWarimasi":SWarimasi, "HWarimasi":HWarimasi, "YWarimasi":YWarimasi, "DWarimasi":DWarimasi, "Koutsu":Koutsu, "Sdatetime":Td_date});
262
-
263
185
  return;
264
186
  }
265
-
266
-
267
187
  // 2件目以降の変更処理
268
188
  // 重複がある場合の変更処理
269
189
  for (var i=0; i<upddata.length; i++) {
270
-
271
190
  if ((upddata[i]["Jcode"] == tid) || (upddata[i]["Scode"] == Scode)) {
272
-
273
- // 配列から除外
274
- //upddata.splice(i, 1);
275
191
  // 配列に追加
276
192
  upddata.push({"Jcode":tid, "Scode":Scode, "Name":Name, "SaCode":SaCode, "SaName":SaName, "KJkyu":KJkyu, "JWarimasi":JWarimasi, "SWarimasi":SWarimasi, "HWarimasi":HWarimasi, "YWarimasi":YWarimasi, "DWarimasi":DWarimasi, "Koutsu":Koutsu, "Sdatetime":Td_date});
277
-
278
193
  return;
279
194
  }
280
195
  }
281
196
  // 重複がない場合の変更処理
282
197
  upddata.push({"Jcode":tid, "Scode":Scode, "Name":Name, "SaCode":SaCode, "SaName":SaName, "KJkyu":KJkyu, "JWarimasi":JWarimasi, "SWarimasi":SWarimasi, "HWarimasi":HWarimasi, "YWarimasi":YWarimasi, "DWarimasi":DWarimasi, "Koutsu":Koutsu, "Sdatetime":Td_date});
283
-
284
-
285
198
  }
286
199
 
287
-
288
- /********/
200
+ /**********/
289
201
  /* 削除部 */
290
- /********/
202
+ /**********/
291
-
292
203
  function delCheck(e) {
293
-
294
204
  var tid = document.getElementById(e.id.replace(':0',':1')).value;
295
205
  var Scode = document.getElementById(e.id.replace(':0',':2')).value;
296
-
297
206
  // チェック入れたとき
298
207
  if (e.checked == true) {
299
208
  e.parentNode.parentNode.style.backgroundColor = 'crimson';
300
-
301
209
  delid.push({"Jcode":tid, "Scode":Scode});
302
-
303
210
  // チェック外したとき
304
211
  } else if (e.checked == false) {
305
212
  e.parentNode.parentNode.style.backgroundColor = '';
306
213
  for (var i=0; i<delid.length; i++) {
307
-
308
214
  if ((delid[i]["Jcode"] == tid) || (delid[i]["Scode"] == Scode)) {
309
-
310
215
  delid.splice(i, 1);
311
216
  delid.splice(i, 2);
312
-
313
217
  }
314
218
  }
315
219
  }
316
220
  }
317
221
 
318
-
319
- /************/
222
+ /**************/
320
223
  /* 更新処理部 */
321
- /************/
224
+ /**************/
322
225
 
323
226
  function Upd() {
324
-
325
-
326
227
  delid2 = JSON.stringify(delid);
327
-
328
228
  upddata2 = JSON.stringify(upddata);
329
-
330
229
  insdata2 = JSON.stringify(insdata);
331
-
332
230
  url = "http://1.1.1.1/page1.php";
333
-
334
- Ajax.open("POST", url, true);
231
+ Ajax.open("POST", url, true);
335
-
336
- Ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
232
+ Ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
337
-
338
- Ajax.send("func=" + "upd_data" + "&delid=" + delid2 + "&upddata=" + upddata2 + "&insdata=" + insdata2);
233
+ Ajax.send("func=" + "upd_data" + "&delid=" + delid2 + "&upddata=" + upddata2 + "&insdata=" + insdata2);
339
-
340
- Ajax.onreadystatechange = function() {
234
+ Ajax.onreadystatechange = function() {
341
-
342
235
  if (Ajax.readyState == 4 && Ajax.status == 200) {
343
-
344
236
  getSample();
345
-
346
237
  // 配列初期化
347
238
  delid.length=0;
348
239
  upddata.length=0;
349
240
  insdata.length=0;
350
-
351
241
  }
352
-
353
242
  }
354
243
  }
355
244
 
356
-
357
245
  </script>
358
246
  </head>
359
247
  <body>
@@ -361,11 +249,11 @@
361
249
  </body>
362
250
  </html>
363
251
 
364
-
365
252
  <?php
366
253
  //クエリー結果の開放
367
254
  sqlsrv_free_stmt($stmt);
368
255
  sqlsrv_free_stmt($stmt2);
369
256
  //コネクションのクローズ
370
257
  sqlsrv_close($conn);
371
- ?>
258
+ ?>
259
+ ```