ニュース(お知らせ)に投稿された記事を更新するため、SQLを利用し更新処理をします。
機能概要
プログラミングコード
「newsUpdate.php」お知らせ更新ページファイル
データベースに登録されているニュース情報を更新します。
- 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>
演習問題
- 上記のコードを使用して、ファイル作成し、動作するようにしてみよう。
- データベースやテーブルを変更し、違う情報を利用して、動作するようにしてみよう。