My Web道

WEB制作科 受講記録 …とその後も続くWEB制作に関する活動・学習記録です。

6/27 [PHP/SQL] データベース(DELETE / UPDATE)

本日の授業テーマ

  • [PHP] データベース(登録内容削除)
  • [PHP] データベース(登録内容修正)

本日の学習内容

[PHP] データベース(登録内容削除)

SQLでデータを削除する(DELETE文)

SQLでテーブルからデータを削除するには?

DELETE FROM `items` WHERE `item_code`=1;


昨日の削除確認画面に続き、
本日はデータ削除を実行する処理を追加します。

商品削除実行(delete_fin.php)

[処理内容]
1. ログイン状態をチェック
2. セッション情報を削除
3. データベース接続
4. SQL実行(テーブルから指定データを削除)
5. 登録商品一覧画面に戻る

[ソース]

<?php
require_once(dirname(__FILE__)).'/init.php';
//ログインチェック
if(!$_SESSION['login_data']['error']){
 header('Location:index.html');
 exit;
}
$item_code=$_SESSION['items_data']['item_code'];
//セッション情報(delete_data)を削除
$_SESSION['items_data'] = array();
unset($_SESSION['items_data']);
//データベース接続
try{
//DB_HOST localhost
$dsn = 'mysql:dbname='.DB_NAME.'; host=localhost; charset=utf8;';
$db_user = DB_USER; //DB_USER
$db_pass = DB_PASS;//DB_PASS
$dbh = new PDO($dsn,$db_user, $db_pass);
}catch (Exception $e){
print 'システムエラーが発生しました';
exit;
}
$sql = 'DELETE FROM items WHERE item_code =:item_code;';
$stmt = $dbh -> prepare($sql);
$stmt -> bindParam(':item_code', $item_code);
$stmt -> execute();
$rec = $stmt -> fetch(PDO::FETCH_ASSOC);
//登録商品画面に戻る
header('Location:item_list.php');

[PHP] データベース(登録内容修正)

SQLでデータを修正する(UPDATE文)

SQLでテーブルのデータを修正するには?

UPDATE items SET item_name=:item_name, item_price=:item_price WHERE item_code=:item_code;

登録内容修正画面(update.php)
<?php
require_once dirname(__FILE__).'/init.php';
if(!$_SESSION['login_data']['error']){
header('Location:index.html');
exit;
}
//変数の初期化
$item_name = '';
$item_price = '';
//可変変数($_GETで受け取った値を取得し変数に設定)
foreach($_GET as $k => $v) {
  $$k = $v;
}

//データベース接続
try{
//DB_HOST  localhost 
$dsn = 'mysql:dbname='.DB_NAME.'; host=localhost; charset=utf8;';
$db_user = DB_USER; //DB_USER
$db_pass = DB_PASS;//DB_PASS
$dbh = new PDO($dsn,$db_user, $db_pass);
}catch (Exception $e){
 print 'システムエラーが発生しました';
 exit;
}

$sql= 'SELECT * FROM items WHERE item_code =:item_code;';
$stmt = $dbh -> prepare($sql);
$stmt -> bindParam(':item_code', $item_code);
$stmt -> execute();
$rec = $stmt -> fetch(PDO::FETCH_ASSOC);
$item_name=$rec['item_name'];
$item_price=$rec['item_price'];
$_SESSION['items_data']['item_code'] =$_GET['item_code'];
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>登録内容修正</title>
</head>
<body>
<h1>登録内容修正</h1>
<a href="logout.php">ログアウト</a>
<form action="update_confirm.php" method="POST">
<table border="1">
<tr>
<th><label for="item_name">商品名</label></th>
<td><input type="text" name="item_name" id="item_name" value="<?php echo $item_name ?>"></td>
</tr>
<tr>
<th><label for="item_price">価格</label></th>
<td><input type="text" name="item_price" id="item_price" value="<?php echo $item_price ?>"></td>
</tr>
</table>
<input type="submit" value="確認"><br>
</form>
<a href="item_list.php">登録商品一覧</a>
</body>
</html>
登録内容修正確認画面(update_confirm.php)
<?php
require_once(dirname(__FILE__)).'/init.php';
//ログイン状態チェック
if(!$_SESSION['login_data']['error']){
     header('Location:index.html');
     exit;
}
//可変変数($_POSTで受け取った値を取得し変数に設定)
foreach($_POST as $k => $v) {
  $$k = $v;     
}
$item_code=$_SESSION['items_data']['item_code'];
//var_dump($_POST);
//$error = true;

//POSTで受け取った値をSESSIONに設定
foreach($_POST as $k => $v) {
  $_SESSION['items_data'][$k] = $v;     
}
$_SESSION['items_data']['error'] = $error;
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>新規商品登録確認</title>
</head>
<body>
<h1>新規商品登録確認</h1>
<a href="logout.php">ログアウト</a>
<table>
<tr>
<th>商品名:</th>
<td><?php echo h($item_name); ?></td>
</tr>
<tr>
<th>価格:</th>
<td>
<?php 
echo h($item_price); 
if($item_price!=="") {
echo '';     
}
//echo h($item_price_error);
?>
</td>
</tr>
</table>
<!--<p><a href="update.php">修正画面に戻る</a>-->
<?php
echo '<a href="update.php?item_code=' .$item_code.'">戻る</a>';
if($error) {
echo '<a href="update_fin.php">修正実行</a>';
}
?>
</p>
</body>
</html>
登録内容修正実行(update_fin.php)
<?php
require_once(dirname(__FILE__)).'/init.php';
//require_once 'init.php';
//ログインチェック
if(!$_SESSION['login_data']['error']){
     header('Location:index.html');
     exit;
}
if(!$_SESSION['items_data']['error']) {
     header('Location:update.php');
     exit;     
}
//SESSIONにある値を取得

foreach($_SESSION['items_data'] as $k => $v) {
  $$k = $v;     
}

//セッション情報(items_data)を削除
$_SESSION['items_data'] = array();
unset($_SESSION['items_data']);

//データベース接続
try{
//DB_HOST  localhost     
$dsn = 'mysql:dbname='.DB_NAME.'; host=localhost; charset=utf8;';
$db_user = DB_USER; //DB_USER
$db_pass = DB_PASS;//DB_PASS
$dbh = new PDO($dsn,$db_user, $db_pass);
}catch (Exception $e){
print 'システムエラーが発生しました';
exit;
}

//SQL実行(テーブルに値を追加)
$sql ='UPDATE items SET item_name=:item_name, item_price=:item_price WHERE item_code=:item_code;';
$stmt = $dbh -> prepare($sql);
$stmt -> bindParam(':item_name', $item_name);
$stmt -> bindParam(':item_price', $item_price);
$stmt -> bindParam(':item_code', $item_code);
$stmt -> execute();
header('Location:item_list.php');
exit;

f:id:sntkk3:20140623215325g:plain【参考】CRUDとは?
http://e-words.jp/w/CRUD.html