質問編集履歴
1
文字数圧縮
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
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"] ==
|
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
|
-
|
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
|
-
|
231
|
+
Ajax.open("POST", url, true);
|
335
|
-
|
336
|
-
|
232
|
+
Ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
337
|
-
|
338
|
-
|
233
|
+
Ajax.send("func=" + "upd_data" + "&delid=" + delid2 + "&upddata=" + upddata2 + "&insdata=" + insdata2);
|
339
|
-
|
340
|
-
|
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
|
+
```
|