機能概要

ニュース(お知らせ)に投稿された記事を更新するため、SQLを利用し更新処理をします。

プログラミングコード

「newsUpdate.php」お知らせ更新ページファイル

データベースに登録されているニュース情報を更新します。

ニューステーブル(news_tbl)の構造はこちら

  • 4行目:「config.php」を読み込み、その中の変数情報を使用することができるようになります。
  • 6行目:「GET」の場合のみ、処理を行うための分岐処理です。
    一覧ページからの「seq_no」を受け取ります。
  • 11行目~14行目:値を受け取ることが出来なかった場合に一覧ページへ戻す処理です。
  • 17行目:「POST」の場合のみ、処理を行うための分岐処理です。
  • 20行目~22行目:「POST」を利用し「ページ内のテキストボックス」からデータを受け取り、変数に代入しています。
  • 33~57行目:SQL文を利用し、「news_tbl」に値を更新しています。
  • 60~79行目:更新対象の値を取得し、初期値をテキストボックスに入力します。
    この処理は、初回表示のみ動作するようにします。
  • 85行目:「formタグ」のプロパティを設定します。
    • action:ファイル名やURL
    • method:POSTを入力(※その他、GETも利用可)
    • name:フォーム名
  • 86行目/88行目/90行目:初期値として、valueプロパティに設定します。
    • <?php echo $get_seq_no; ?>
    • <?php echo $result[‘title_kj’]; ?>
    • <?php echo $result[‘article_kj’]; ?>
<?php

//データベース接続情報を格納
include("config.php");

if($_SERVER['REQUEST_METHOD'] === 'GET'){

    //GETデータの取得
    $get_seq_no = $_GET['seq_no'];

    if($get_seq_no == ""){
        header('Location: newsManageList.php');
        exit();
    }
}

if($_SERVER['REQUEST_METHOD'] === 'POST'){

    //POSTデータの取得
    $hid_seq_no = $_POST['hid_seq_no'];
    $txt_title_kj = $_POST['txt_title_kj'];
    $txt_article_kj = $_POST['txt_article_kj'];

    $err = "";

    if($txt_title_kj == ""){
        $err .= "【件名】";
    }
    if($txt_article_kj == ""){
        $err .= "【内容】";
    }

    if($err == ""){

        $sql = "update news_tbl set "
                ." title_kj = :title"
                .",article_kj = :article"
                .",update_at = now()"
                ." where seq_no = :seq_no;";
        $dbh = new PDO($dsn, $user, $password);
        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        try{
            $stmt = $dbh->prepare($sql);
            $stmt->bindValue(':title', $txt_title_kj, PDO::PARAM_STR);
            $stmt->bindValue(':article', $txt_article_kj, PDO::PARAM_STR);
            $stmt->bindValue(':seq_no', $hid_seq_no , PDO::PARAM_INT);
            $stmt->execute();
            header("Location:newsManageList.php");
            exit();
        } catch(Exception $e){
            echo($e->getMessage());
            die();
        }
    }else{
        echo $err."を修正してください。";
    }
}

try{

    $dbh = new PDO($dsn, $user, $password);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql = "select"
            ." nt.seq_no"
            .",nt.title_kj"
            .",nt.article_kj"
            .",nt.insert_at"
            ." from news_tbl nt"
            ." where nt.seq_no = :seq_no";
    $stmt = $dbh->prepare($sql);
    $stmt->bindValue(':seq_no', $get_seq_no , PDO::PARAM_INT);
    $stmt->execute();
    $result = $stmt->fetch();
}catch (PDOException $e){
    echo($e->getMessage());
    die();
}
?>

<html>
<body>
<h1>ニュース更新</h1>
<form action="newsUpdate.php" method="POST">
    <input type="hidden" name="hid_seq_no" value="<?php echo $get_seq_no; ?>" />
    件名<br>
    <input type="text" name="txt_title_kj" value="<?php echo $result['title_kj']; ?>" /><br>
    内容<br>
    <textarea name="txt_article_kj" style="width:300px;height:150px;"><?php echo $result['article_kj']; ?></textarea><br>
    <input type="submit" value="更新">
</form>
</body>
</html>

演習問題

  1. 上記のコードを使用して、ファイル作成し、動作するようにしてみよう。
  2. データベースやテーブルを変更し、違う情報を利用して、動作するようにしてみよう。