前提
ウェブページを訪れた任意の人が編集可能なテキストエリアを作成しようとしています。
ページの内容はテキストエリアと保存ボタンのみで、次の動作を目指しています。
テーブルのカラムは"ID"と"contents"で、フォームの特性上、レコードはひとつしか使用しません。
実現したいこと
① ページを開くと、データベースから前回保存された内容が呼び出され、テキストエリアに入力された状態で表示さる
② 内容を変更(追記または削除)して保存ボタンを押すと、内容がデータベースに保存される
発生している問題
①までは下記コードで実現できました。
②については、ご指摘に従って、リクエストメソッドがpostの場合の判定処理(if)を書いてみました(以下)。
該当のソースコード
PHP
1<?php 2 $dsn = "mysql:dbname=*****;host=localhost"; 3 $user = "*****"; 4 $password = "*****"; 5 $table_name = "test" 6 $id = 1; 7 try { 8 $dbh = new PDO($dsn, $user, $password); 9 } catch (PDOException $e){ 10 print('connection failed:'.$e->getMessage()); 11 } 12 13 if ($_SERVER['REQUEST_METHOD'] != 'POST') { 14 // POSTでのアクセスではない場合 15 $sql = "SELECT* FROM $table_name WHERE id = $id"; 16 $stmt = $dbh->query($sql); 17 $result = $stmt->fetch(PDO::FETCH_ASSOC); 18 $contents = $result['contents']; 19 } else { 20 $contents = $_POST['contents']; 21 $sql = "UPDATE $table_name SET contents = $contents WHERE id = $id"; 22 $stmt = $dbh->prepare($sql); $stmt->execute(); 23 } 24 25 echo " 26 <form method='post'> 27 <textarea name='contents'>$contents</textarea> 28 <button type='submit'>保存</button> 29 </form> 30 "; 31?>
しかしながら、保存ボタンを押してもデータベースがアップデートされません。特にエラーメッセージも出ないのですが、submitした際に値が正しく取得できていないのでしょうか?
何卒ご教授いただければ幸いです。
回答1件