前回記事再編集ボタンからきた編集ページを作るからの続きです。8月20日記事

目次





設計

削除ページについては、フィールドに削除コマンドを走らせず、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して送信します。

最終更新:2015年08月21日 00:11