ニュース(お知らせ)に投稿された記事を更新するため、SQLを利用し更新処理をします。
機能概要
プログラミングコード
「newsUpdate.php」お知らせ更新ページファイル
データベースに登録されているニュース情報を更新します。
- 4行目:「config.php」を読み込み、その中の変数情報を使用することができるようになります。
- 6行目:「GET」の場合のみ、処理を行うための分岐処理です。
一覧ページからの「news_id」を受け取ります。 - 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_news_id; ?>
- <?php echo $result[‘title’]; ?>
- <?php echo $result[‘article’]; ?>
<?php
//データベース接続情報を格納
include("config.php");
if($_SERVER['REQUEST_METHOD'] === 'GET'){
//GETデータの取得
$get_news_ido = $_GET['news_id'];
if($get_news_id == ""){
header('Location: newsManageList.php');
exit();
}
}
if($_SERVER['REQUEST_METHOD'] === 'POST'){
//POSTデータの取得
$hid_news_id = $_POST['hid_news_id'];
$txt_title = $_POST['txt_title'];
$txt_article = $_POST['txt_article'];
$err = "";
if($txt_title == ""){
$err .= "【件名】";
}
if($txt_article == ""){
$err .= "【内容】";
}
if($err == ""){
$sql = "update news_tbl set "
." title = :title"
.",article = :article"
.",update_at = now()"
." where news_id = :news_id;";
$dbh = new PDO($dsn, $user, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try{
$stmt = $dbh->prepare($sql);
$stmt->bindValue(':title', $txt_title, PDO::PARAM_STR);
$stmt->bindValue(':article', $txt_article, PDO::PARAM_STR);
$stmt->bindValue(':news_id', $hid_news_id , 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.news_id"
.",nt.title"
.",nt.article"
.",nt.insert_at"
." from news_tbl nt"
." where nt.news_id = :news_id";
$stmt = $dbh->prepare($sql);
$stmt->bindValue(':news_id', $get_news_id , 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_news_id" value="<?php echo $get_news_id; ?>" />
件名<br>
<input type="text" name="txt_title" value="<?php echo $result['title']; ?>" /><br>
内容<br>
<textarea name="txt_article" style="width:300px;height:150px;"><?php echo $result['article']; ?></textarea><br>
<input type="submit" value="更新">
</form>
</body>
</html>
演習問題
- 上記のコードを使用して、ファイル作成し、動作するようにしてみよう。
- データベースやテーブルを変更し、違う情報を利用して、動作するようにしてみよう。
