質問編集履歴

1

リクエストメソッドがpostの場合の判定処理(if)を追加

2023/02/01 05:55

投稿

Acer
Acer

スコア24

test CHANGED
File without changes
test CHANGED
@@ -10,7 +10,8 @@
10
10
  ② 内容を変更(追記または削除)して保存ボタンを押すと、内容がデータベースに保存される
11
11
 
12
12
  ### 発生している問題
13
+ ①までは下記コードで実現できました。
13
- ①までは下記コードで実現できましたが、②について下記コーにどように追記すれば良のかわかりせんでした。
14
+ ②については、ご指摘に従って、リクエストメソッがpost場合の判定処理(if)を書てみました(以下)
14
15
 
15
16
  ### 該当のソースコード
16
17
 
@@ -19,38 +20,36 @@
19
20
  $dsn = "mysql:dbname=*****;host=localhost";
20
21
  $user = "*****";
21
22
  $password = "*****";
23
+ $table_name = "test"
22
24
  $id = 1;
23
25
  try {
24
26
  $dbh = new PDO($dsn, $user, $password);
25
27
  } catch (PDOException $e){
26
28
  print('connection failed:'.$e->getMessage());
27
29
  }
28
- $table_name = "test";
29
- $sql = "select * from $table_name where id = $id";
30
- $stmt = $dbh->query($sql);
31
- $result = $stmt->fetch(PDO::FETCH_ASSOC);
32
- $contents = $result['contents'];
33
30
 
31
+ if ($_SERVER['REQUEST_METHOD'] != 'POST') {
32
+ // POSTでのアクセスではない場合
33
+ $sql = "SELECT* FROM $table_name WHERE id = $id";
34
+ $stmt = $dbh->query($sql);
35
+ $result = $stmt->fetch(PDO::FETCH_ASSOC);
36
+ $contents = $result['contents'];
37
+ } else {
38
+ $contents = $_POST['contents'];
39
+ $sql = "UPDATE $table_name SET contents = $contents WHERE id = $id";
40
+ $stmt = $dbh->prepare($sql); $stmt->execute();
41
+ }
42
+
34
- echo "
43
+ echo "
35
44
  <form method='post'>
36
- <textarea name='contents'>{$contents}</textarea>
45
+ <textarea name='contents'>$contents</textarea>
37
46
  <button type='submit'>保存</button>
38
- </form>";
47
+ </form>
39
-
48
+ ";
40
49
  ?>
41
50
  ```
42
51
 
43
- ### 試したこと
44
-
45
- ②を実現するために下記のようなSQLを使うのだと思うのですが、どのように組み込めばよいかわかりませんでした。
46
-
47
- ### 該当のソースコード
48
-
49
- ```PHP
50
- // フォームがサブミットされた場合のPOST処理
51
- $contents = $_POST['contents'];
52
- $sql2 = "UPDATE $table_name SET contents = $contents WHERE id = $id";
52
+ しかしながら、保存ボタンを押してもデータベースがアップデートされません。特にエラーメッセージも出ないのですが、submitした際に値が正しく取得できていないのでしょうか?
53
- ```
54
53
  何卒ご教授いただければ幸いです。
55
54
 
56
55