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

質問編集履歴

3

近い内容のURLを添付

2021/05/07 02:03

投稿

mikage126
mikage126

スコア2

title CHANGED
File without changes
body CHANGED
@@ -15,6 +15,9 @@
15
15
 
16
16
  送信先のページではcountが0ならば 「×」、それ以外は「○」を表示する。
17
17
 
18
+ https://teratail.com/questions/88605
19
+ おそらく近い内容だとは思うのですが、少し違うような気もしてさっぱりの状態です・・・。
20
+
18
21
  ### 発生している問題・エラーメッセージ
19
22
 
20
23
  ```

2

説明の追加

2021/05/07 02:02

投稿

mikage126
mikage126

スコア2

title CHANGED
File without changes
body CHANGED
@@ -19,6 +19,13 @@
19
19
 
20
20
  ```
21
21
  全部で56箇所あるが、最後の一件のみ送信される。
22
+
23
+ 送信先のページで、データベースをupdate、その数値に応じて表記が変わるようにしてます。
24
+
25
+ 例:左上のマス id=1 day=日 count=5とします。 countを「0」に書き換え、データベースを更新できれば次のページでは「×」が表示されます。
26
+
27
+ しかし、実際はその動作ができるのは一番最後 左下の id=56 day=土 count=5 の一件だけなので、
28
+ 1〜56を書き換えて、全て送信、更新ができるようにしたい。
22
29
  ```
23
30
 
24
31
  ### 該当のソースコード

1

送信先の受取の記述を追記しました

2021/05/07 01:48

投稿

mikage126
mikage126

スコア2

title CHANGED
File without changes
body CHANGED
@@ -1,17 +1,20 @@
1
1
  ### 前提・実現したいこと
2
2
  ![イメージ説明](2ff12ff6846356cef6ef8a10573db742.png)
3
3
 
4
+ ![イメージ説明](b0cc07e971cd9b7a821d63fa24fef816.png)
4
5
 
5
6
 
6
7
  **formの複数の値を1つのボタンで全て送信、受け取りたい。**
7
8
 
8
9
  phpを勉強中の初心者です。
9
10
 
10
- データベースから3つの列、日付id、day、countを一覧で表示。
11
+ データベースから3つの列、id、day、countを一覧で表示。
11
12
  countはフォームから編集可能で1〜5の整数が入力できる。
12
13
 
13
14
  入力された数値がデータベースに更新される。という仕組みを作りたい。
14
15
 
16
+ 送信先のページではcountが0ならば 「×」、それ以外は「○」を表示する。
17
+
15
18
  ### 発生している問題・エラーメッセージ
16
19
 
17
20
  ```
@@ -30,8 +33,8 @@
30
33
  foreach ($pdo->query('select * from reserv_2') as $row) {
31
34
 
32
35
  echo '<div class="list-day">';
33
- echo '<input type="hidden" name="日付id[]" value="', $row['日付id'], '">';
36
+ echo '<input type="hidden" name="id[]" value="', $row['id'], '">';
34
- echo '<div class="td0">', $row['日付id'], '</div>';
37
+ echo '<div class="td0">', $row['id'], '</div>';
35
38
 
36
39
  echo '<input type="hidden" name="day[]" value="', $row['day'], '">';
37
40
  echo '<div class="td0">', $row['day'], '</div>';
@@ -58,6 +61,33 @@
58
61
  echo "\n";
59
62
  ```
60
63
 
64
+ 送信の受取の記述
65
+ ```ここに言語名を入力
66
+ echo $_REQUEST['id'],$_REQUEST['day'], $_REQUEST['count']; /*確認用*/
67
+
68
+
69
+
70
+
71
+ $pdo=new PDO('mysql:host=localhost;dbname=sample;charset=utf8',
72
+ 'root', 'root');
73
+
74
+ echo '<div class="update">';
75
+ $sql=$pdo->prepare('update reserv_2 set count=? where id=?');
76
+
77
+
78
+ if (!preg_match('/[0-5]+/', $_REQUEST['count'])) {
79
+ echo '在庫を1〜5の整数で入力してください。';
80
+ } else
81
+ if ($sql->execute(
82
+ [htmlspecialchars($_REQUEST['count']),
83
+ $_REQUEST['id']]
84
+ )) {
85
+ echo '更新に成功しました。';
86
+ } else {
87
+ echo '更新に失敗しました。';
88
+ }
89
+ ```
90
+
61
91
  ### 試したこと
62
92
 
63
93
  phpのフォームの一括送信やデータベースのレコードの一括更新について調べたり、自分と似通った質問をされている方の投稿を見に行ったりなどしましたが、めぼしい解決策が見つからず