「PHPとMySQLで削除ボタンからきた削除ページを作る」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
前回記事[[再編集ボタンからきた編集ページを作る]]からの続きです。8月20日記事
~
~
目次
#contents
~
~
----
~
*設計
削除ページについては、フィールドに削除コマンドを走らせず、statusカラムを
前回記事[[再編集ボタンからきた編集ページを作る]]からの続きです。8月20日記事
~
~
目次
#contents
~
~
----
~
*設計
削除ページについては、フィールドに削除コマンドを走らせず、statusカラムを[[MySQLでテーブル作成1]]のようにstatusの値だけを変えて作っていきたいと思います。こちらのほうが、1、データを削除されても簡単に復元できるようにできる。2、消さないので、ディスク領域は消費するが、断片化しないので、シーク速度は速くなる。ということです。
~
~
*コード
<p>次の内容を削除しますか?<br><br></p>
<?php
require('../config.php');
$dsn = 'mysql:dbname='.DB_NAME.';host='.DB_HOST.';port='.DB_PORT.'';
$user = DB_USER;
$password = DB_PASSWORD;
try{
$dbh = new PDO($dsn, $user, $password);
}catch (PDOException $e){
print('Connection failed:'.$e->getMessage());
die();
}
$filter_id = filter_var($_POST[id],FILTER_SANITIZE_NUMBER_INT,FILTER_NULL_ON_FAILURE);
//print $filter_id;
$sql = "SELECT * FROM information WHERE id = :id";
$stmt = $dbh->prepare($sql);
$stmt->bindValue(':id',$filter_id,PDO::PARAM_INT);
$stmt->execute();
$result = $stmt->fetch();
?>
<p>公開日</p>
<p><?php echo htmlspecialchars(mb_convert_encoding($result[info_date],"UTF-8","EUC-JP"),ENT_QUOTES,"UTF-8"); ?><br><br></p>
<p>タイトル</p>
<p><?php echo htmlspecialchars(mb_convert_encoding($result[title],"UTF-8","EUC-JP"),ENT_QUOTES,"UTF-8"); ?><br><br></p>
<p>内容</p>
<p><?php echo nl2br(htmlspecialchars(mb_convert_encoding($result[info_text],"UTF-8","EUC-JP"),ENT_QUOTES,"UTF-8")); ?><br><br></p>
<p>URL</p>
<p><?php echo htmlspecialchars(mb_convert_encoding($result[URL],"UTF-8","EUC-JP"),ENT_QUOTES,"UTF-8"); ?><br><br></p>
<form action="info_deletecomplete.php" method="post">
<input type="hidden" name ="shop" value="<?php print htmlspecialchars($shop_name, ENT_QUOTES,"UTF-8");?>">
<input type="hidden" name="id" value="<?php print htmlspecialchars($result[id],ENT_QUOTES,'UTF-8');?>">
<input type="hidden" name="status" value="0">
<input type="submit" name="submit" value="はい">
<input type="button" value="戻る" onclick="history.back()">
</form>
~
~
*削除完了ページ
<?php
require('../config.php');
$dsn = 'mysql:dbname='.DB_NAME.';host='.DB_HOST.';port='.DB_PORT.'';
$user = DB_USER;
$password = DB_PASSWORD;
try{
$dbh = new PDO($dsn, $user, $password);
}catch (PDOException $e){
print('Connection failed:'.$e->getMessage());
die();
}
$filter_id = filter_var($_POST[id],FILTER_SANITIZE_NUMBER_INT,FILTER_NULL_ON_FAILURE);
$status = $_POST["status"];
$sql = "UPDATE information SET status = :status WHERE id = :id";
//print $sql;
$stmt = $dbh->prepare($sql);
$stmt->bindValue(':id', $filter_id, PDO::PARAM_INT);
$stmt->bindValue(':status', $status , PDO::PARAM_INT);
$stmt->execute(); //返すのは成否(TRUE,FALSE)
echo "<p>削除しました。</p>";
?>
~
~
*まとめ
確認画面ではただ単に表示だけさせて、次ページへidをinput type hiddenして送信します。