質問編集履歴

3

前置きの追加

2018/09/03 22:21

投稿

scrollman
scrollman

スコア83

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,11 @@
1
+ 前置き
2
+
3
+ ---
4
+
5
+ Wordpressの便利な部分を活用しつつ一つのDBでは不可能/難しい/面倒臭い(と思う)複雑(だと思う)な複数DBシステムを構築し、そちらを外部PHPで操作する、といったことをやっています。
6
+
7
+
8
+
1
9
  やりたいこと
2
10
 
3
11
  ---

2

情報の追加、文法の修正

2018/09/03 22:21

投稿

scrollman
scrollman

スコア83

test CHANGED
File without changes
test CHANGED
@@ -266,17 +266,17 @@
266
266
 
267
267
 
268
268
 
269
- $db_datebase_1 = 'LAA0547874-hogehogehoge';
269
+ $db_datebase_1 = 'hogehoge-hogehogehoge';
270
-
270
+
271
- $db_datebase_2 = 'LAA0547874-hogehogehoge';
271
+ $db_datebase_2 = 'hogehoge-hogehogehoge';
272
-
272
+
273
- $db_datebase_3 = 'LAA0547874-hogehogehoge';
273
+ $db_datebase_3 = 'hogehoge-hogehogehoge';
274
-
274
+
275
- $db_datebase_4 = 'LAA0547874-hogehogehoge';
275
+ $db_datebase_4 = 'hogehoge-hogehogehoge';
276
-
276
+
277
- $db_datebase_5 = 'LAA0547874-hogehogehoge';
277
+ $db_datebase_5 = 'hogehoge-hogehogehoge';
278
-
278
+
279
- $db_datebase_6 = 'LAA0547874-hogehogehoge';
279
+ $db_datebase_6 = 'hogehoge-hogehogehoge';
280
280
 
281
281
 
282
282
 
@@ -439,3 +439,213 @@
439
439
  }
440
440
 
441
441
  ```
442
+
443
+ これ↑の更に上位のファイルに、
444
+
445
+ ```PHP
446
+
447
+ $client = $_GET['adminsystempage'];
448
+
449
+ if (is_null($client)) {
450
+
451
+
452
+
453
+ $db_address_1 = 'hogehoge.phy.lolipop.lan';
454
+
455
+ $db_address_2 = 'mysql103.phy.lolipop.lan';
456
+
457
+ $db_address_3 = 'mysql132.phy.lolipop.lan';
458
+
459
+
460
+
461
+ $db_user = 'hogehoge';
462
+
463
+ $db_password = 'hogehoge';
464
+
465
+
466
+
467
+ $db_datebase_1 = 'hogehoge-hogehoge';
468
+
469
+ $db_datebase_2 = 'hogehoge-hogehoge';
470
+
471
+ $db_datebase_3 = 'hogehoge-hogehoge';
472
+
473
+ $db_datebase_4 = 'hogehoge-hogehoge';
474
+
475
+ $db_datebase_5 = 'hogehoge-hogehoge';
476
+
477
+ $db_datebase_6 = 'hogehoge-hogehoge';
478
+
479
+ try{
480
+
481
+ $pdo = new PDO("mysql:dbname=$db_datebase_6;host=$db_address_3;charset=utf8",$db_user,$db_password);
482
+
483
+ $stmt = $pdo->query('SHOW TABLES');
484
+
485
+ print('<table class="wp-list-table widefat fixed striped pages">');
486
+
487
+ while($a_course = $stmt->fetch(PDO::FETCH_ASSOC)){
488
+
489
+ print('<tr>');
490
+
491
+ print('<td>');
492
+
493
+ $course = $a_course["Tables_in_LAA0547874-familiacours"];
494
+
495
+ echo "$course";
496
+
497
+ print('</td>');
498
+
499
+ print('<td>');
500
+
501
+ $title1 = 'コースを編集する';
502
+
503
+ $url = admin_url();
504
+
505
+ print '<a href="' . $url . 'admin.php?page=familia_system_setting&courseselect=' . $course . '">'.$title1.'</a><br />';
506
+
507
+ print('</td>');
508
+
509
+ print('<td>');
510
+
511
+ $title2 = 'コースを消去する';
512
+
513
+ $url = admin_url();
514
+
515
+ print '<a href="' . $url . 'admin.php?page=familia_system_setting&coursedelete=' . $course . '">'.$title2.'</a><br />';
516
+
517
+ print('</td>');
518
+
519
+ print('</tr>');
520
+
521
+ echo '<br>';
522
+
523
+ }
524
+
525
+ print('</table>');
526
+
527
+ }catch(PDOException $e){
528
+
529
+ //ここで補足される例外はコネクションだけではない
530
+
531
+ //echo 'Connection failed: ' . $e->getMessage();
532
+
533
+ var_dump($e);
534
+
535
+ echo 'エラーが発生しました。';
536
+
537
+ }
538
+
539
+ }else {
540
+
541
+ $coursename = $_POST['coursename'];
542
+
543
+ if (is_null($coursename)) {
544
+
545
+ echo '
546
+
547
+ <form action="" method="POST">
548
+
549
+ <label>コース名</label><br>
550
+
551
+ <input type="text" name="coursename"><br>
552
+
553
+ <input type="submit" value="コースを追加する" /><br>
554
+
555
+ </form
556
+
557
+ ';
558
+
559
+ }else {
560
+
561
+
562
+
563
+ try {
564
+
565
+ var_dump($coursename);
566
+
567
+ $db_address_1 = 'hogehoge.phy.lolipop.lan';
568
+
569
+ $db_address_2 = 'mysql103.phy.lolipop.lan';
570
+
571
+ $db_address_3 = 'mysql132.phy.lolipop.lan';
572
+
573
+
574
+
575
+ $db_user = 'hogehoge';
576
+
577
+ $db_password = 'hogehoge';
578
+
579
+
580
+
581
+ $db_datebase_1 = 'hogehoge-hogehoge';
582
+
583
+ $db_datebase_2 = 'hogehoge-hogehoge';
584
+
585
+ $db_datebase_3 = 'hogehoge-hogehoge';
586
+
587
+ $db_datebase_4 = 'hogehoge-hogehoge';
588
+
589
+ $db_datebase_5 = 'hogehoge-hogehoge';
590
+
591
+ $db_datebase_6 = 'hogehoge-hogehoge';
592
+
593
+
594
+
595
+ $conn = new PDO("mysql:host=$db_address_3;dbname=$db_datebase_6", $db_user, $db_password);
596
+
597
+ // set the PDO error mode to exception
598
+
599
+ $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
600
+
601
+
602
+
603
+ // sql to create table
604
+
605
+ $sql = "CREATE TABLE $coursename (
606
+
607
+ planid TEXT(30),
608
+
609
+ planname TEXT(30),
610
+
611
+ plandescription TEXT(50),
612
+
613
+ initialfee INT(20),
614
+
615
+ monthlycost INT(20),
616
+
617
+ video INT(20),
618
+
619
+ consultation INT(20)
620
+
621
+
622
+
623
+ )";
624
+
625
+
626
+
627
+ // use exec() because no results are returned
628
+
629
+ $conn->exec($sql);
630
+
631
+ echo "新規コーステーブルを作成しました。";
632
+
633
+ }
634
+
635
+ catch(PDOException $e)
636
+
637
+ {
638
+
639
+ echo $sql . "<br>" . $e->getMessage();
640
+
641
+ }
642
+
643
+ $conn = null;
644
+
645
+ }
646
+
647
+ }
648
+
649
+ ```
650
+
651
+ とあります

1

新たな質問の追記

2018/09/03 19:43

投稿

scrollman
scrollman

スコア83

test CHANGED
File without changes
test CHANGED
@@ -119,3 +119,323 @@
119
119
  - MYSQL
120
120
 
121
121
  - Wordpress
122
+
123
+
124
+
125
+ +の質問
126
+
127
+ ---
128
+
129
+
130
+
131
+ 回答者様によってレコードの消去方法が判明しましたが、次はちょっと別のトラブルが発生しました。
132
+
133
+
134
+
135
+ やりたい事
136
+
137
+ ---
138
+
139
+
140
+
141
+ SQL文への変数代入方法が知りたいです。
142
+
143
+
144
+
145
+ ```PHP
146
+
147
+
148
+
149
+ echo 'プランを消去します';
150
+
151
+ //コース=テーブルの取得
152
+
153
+ $select = $_GET['courseselect'];
154
+
155
+ //レコード=プランの取得
156
+
157
+ $planid = $_GET['p_delete'];
158
+
159
+
160
+
161
+ echo '<br>';
162
+
163
+ echo "$select";
164
+
165
+ echo '<br>';
166
+
167
+ echo "$planid";
168
+
169
+ //しっかり取得できてはいる↑
170
+
171
+
172
+
173
+ try{
174
+
175
+ $pdo = new PDO("mysql:dbname=$db_datebase_6;host=$db_address_3;charset=utf8",$db_user,$db_password, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
176
+
177
+ //テーブル(コース)とレコード(プラン)の変数をSQL文に代入したい↓
178
+
179
+ $stmt = $pdo->query("DELETE FROM ' . $select . ' WHERE planid='' . $planid . ''");
180
+
181
+ //foreach($pdo->query('DELETE FROM consumercourse WHERE planid=test') as $row) {
182
+
183
+ echo '<br>';
184
+
185
+ var_dump($stmt);
186
+
187
+ //}
188
+
189
+ }catch(PDOException $e){
190
+
191
+ //ここで補足される例外はコネクションだけではない
192
+
193
+ //
194
+
195
+ echo 'Connection failed: ' . $e->getMessage();
196
+
197
+ var_dump($e);
198
+
199
+ echo 'エラーが発生しました。';
200
+
201
+ }
202
+
203
+
204
+
205
+ echo '<br>';
206
+
207
+
208
+
209
+ if (isset($db_address_3) && isset($db_datebase_6) && isset($db_user) && isset($db_password)) {
210
+
211
+ try{
212
+
213
+ $pdo = new PDO("mysql:dbname=$db_datebase_6;host=$db_address_3;charset=utf8",$db_user,$db_password);
214
+
215
+ foreach($pdo->query('SHOW TABLES') as $row) {
216
+
217
+ print_r($row);
218
+
219
+ echo '<br>';
220
+
221
+ var_dump($row);
222
+
223
+ }
224
+
225
+ }catch(PDOException $e){
226
+
227
+ //ここで補足される例外はコネクションだけではない
228
+
229
+ //echo 'Connection failed: ' . $e->getMessage();
230
+
231
+ var_dump($e);
232
+
233
+ echo 'エラーが発生しました。';
234
+
235
+ }
236
+
237
+ } else {
238
+
239
+ echo 'データが格納されていません';
240
+
241
+ }
242
+
243
+
244
+
245
+ ```
246
+
247
+
248
+
249
+ こちらが↑のファイルの上位にあるファイルです
250
+
251
+ ```PHP
252
+
253
+ $select = $_GET['courseselect'];
254
+
255
+ $db_address_1 = 'hogehoge.phy.lolipop.lan';
256
+
257
+ $db_address_2 = 'hogehoge.phy.lolipop.lan';
258
+
259
+ $db_address_3 = 'hogehoge.phy.lolipop.lan';
260
+
261
+
262
+
263
+ $db_user = 'hogehogehoge';
264
+
265
+ $db_password = 'hogehogehoge';
266
+
267
+
268
+
269
+ $db_datebase_1 = 'LAA0547874-hogehogehoge';
270
+
271
+ $db_datebase_2 = 'LAA0547874-hogehogehoge';
272
+
273
+ $db_datebase_3 = 'LAA0547874-hogehogehoge';
274
+
275
+ $db_datebase_4 = 'LAA0547874-hogehogehoge';
276
+
277
+ $db_datebase_5 = 'LAA0547874-hogehogehoge';
278
+
279
+ $db_datebase_6 = 'LAA0547874-hogehogehoge';
280
+
281
+
282
+
283
+ //接続方法が原始的なのはお許しください
284
+
285
+ $conn = mysql_connect($db_address_3, $db_user, $db_password);
286
+
287
+
288
+
289
+ if (!$conn) {
290
+
291
+ echo "データベースに接続できません: " . mysql_error();
292
+
293
+ exit;
294
+
295
+ }
296
+
297
+
298
+
299
+ if (!mysql_select_db($db_datebase_6)) {
300
+
301
+ echo "データベースを選択できません: " . mysql_error();
302
+
303
+ exit;
304
+
305
+ }
306
+
307
+ $result = mysql_query('SET NAMES utf8', $conn);
308
+
309
+ $sql = "SELECT planid, planname, plandescription, initialfee, monthlycost, video, consultation
310
+
311
+ FROM $select";
312
+
313
+
314
+
315
+ $result = mysql_query($sql);
316
+
317
+
318
+
319
+ if (!$result) {
320
+
321
+ echo "データベース/テーブルを読み込めません ($sql) from DB: " . mysql_error();
322
+
323
+ exit;
324
+
325
+ }
326
+
327
+
328
+
329
+ if (mysql_num_rows($result) == 0) {
330
+
331
+ echo "このコースにはまだプランがないようです。";
332
+
333
+ }
334
+
335
+
336
+
337
+ print('<table class="wp-list-table widefat fixed striped pages">');
338
+
339
+ while ($row = mysql_fetch_assoc($result)) {
340
+
341
+ print('<tr>');
342
+
343
+ print('<td>');
344
+
345
+ print $row["planid"];
346
+
347
+ print('</td>');
348
+
349
+ print('<td>');
350
+
351
+ print $row["planname"];
352
+
353
+ print('</td>');
354
+
355
+ print('<td>');
356
+
357
+ print $row["plandescription"];
358
+
359
+ print('</td>');
360
+
361
+ print('<td>');
362
+
363
+ print $row["initialfee"];
364
+
365
+ print('</td>');
366
+
367
+ print('<td>');
368
+
369
+ print $row["monthlycost"];
370
+
371
+ print('</td>');
372
+
373
+ print('<td>');
374
+
375
+ print $row["video"];
376
+
377
+ print('</td>');
378
+
379
+ print('<td>');
380
+
381
+ print $row["consultation"];
382
+
383
+ print('</td>');
384
+
385
+ print('<td>');
386
+
387
+ $planid = $row["planid"];
388
+
389
+ $url = admin_url();
390
+
391
+ print '<a href=admin.php?page=hogehoge_system_setting&courseselect=' . $select . '&p_edit=' . $planid . ' ”>プランを編集する</a>';
392
+
393
+ print('</td>');
394
+
395
+ print('<td>');
396
+
397
+ print '<a href=admin.php?page=hogehoge_system_setting&courseselect=' . $select . '&p_delete=' . $planid . ' ”>プランを消去する</a>';
398
+
399
+ print('</td>');
400
+
401
+ print('</tr>');
402
+
403
+ }
404
+
405
+ print('</table>');
406
+
407
+
408
+
409
+ $p_edit = $_GET['p_edit'];
410
+
411
+ $p_delete = $_GET['p_delete'];
412
+
413
+
414
+
415
+ mysql_free_result($result);
416
+
417
+ if (isset($p_edit) or isset($p_delete)) {
418
+
419
+ if (isset($p_edit)) {
420
+
421
+ require_once ('秘密保守につき割愛/wp-content/themes/ALC/adminpage/sysytemset/plansystem/planedit.php');
422
+
423
+
424
+
425
+ }
426
+
427
+ if (isset($p_delete)) {
428
+
429
+ require ('秘密保守につき割愛/wp-content/themes/ALC/adminpage/sysytemset/plansystem/plandelete.php');
430
+
431
+
432
+
433
+ }
434
+
435
+ } else {
436
+
437
+ require_once ('秘密保守につき割愛/wp-content/themes/ALC/adminpage/sysytemset/plansystem/planadd.php');
438
+
439
+ }
440
+
441
+ ```