PHPでDB操作(9)

ではichiran.phpから該当の歌を選択した後で、編集画面としてedit.phpを作成します。具体的には以下のような感じにしました。

<?php
$dsn     ='mysql:dbname=<データベース名>;host=localhost';
$user    =<ユーザー名>;
$pass    =<パスワード>;

// DBへ接続
try{
    
    
    $dbh = new PDO($dsn, $user, $pass);
    
    $sql="select * from hyakunin_issyu where id = :id";
    $stmt= $dbh->prepare($sql);
    $stmt->bindvalue(':id', $_GET['id'], PDO::PARAM_INT);
    $stmt->execute();
    $member=$stmt->fetch(PDO::FETCH_OBJ);
}  catch (PDOException $e) {
    echo "DB接続エラー" . $e->getMessage();
}

?>




<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>百人一首更新</title>
    <link rel="stylesheet" href="style.css" type="text/css">
</head>
<body>
    <h3>百人一首 短歌更新</h3>
    <hr>
    <form action="update.php" method="post">
        <input name="id" hidden value="<?php $_GET['id']?>">
        <table>
            <tr><th class="input">作者</th><td><input type="text" name="sakusya" id="sakusya" width="100" required value="<?php print($member->name)?>"></td></tr>
            <tr><th class="input">短歌</th><td><textarea type="text" name="tanka" id="tanka" cols="50" rows="3" required><?php print($member->tanka)?></textarea></td></tr>
        </table>
        <button>更新</button>

    </form>



</body>
</html>

変数$sqlにテーブルhyakunin_issyuからidが編集したいid(=:id)となる歌を拾うSQL文を与えます。あとはほぼ同じなのですが、bindvalueメソッドでその :id と実データである $GET_['id'] をバインドして、そのあとでSQL文を実行してその結果を$memberという配列変数に代入しています。

その$memberの中身をtouroku.htmlをベースにして表示させるのですが、inputタグのvalue属性に$memberのnameだけをとりだしてprint文で表示させています。なお、textareaにはvalue属性がないので、textareaの値として$memberのtankaだけをとりだしてprint文で表示させています。

なお、データを更新するときに、どの短歌を更新するのかを指定する必要がありますが、ここではinputタグにhidden属性を与えて、ブラウザからは見えないように工夫しています。

このままではただ表示させているだけなので、適宜値を変更して「更新」ボタンを押すことでformタグのaction属性で与えられているupdate.phpに遷移させます。ここは次回に。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です