前回の続き。jQueryを使い、削除ボタン押下で処理(delete.php)が走るようにした。
成果物:index.html -> item.php (詳細ページに削除ボタンを追加)
メモ
- データベースのテーブルに削除フラグを追加。カラムにstatus(‘active’または’deleted’)を追加
- 削除ボタンにdata-id属性を定義し、JavaScript側から値を参照している($.data(‘id’)の箇所)
<form action="edit.php" action="get"> <input type="hidden" name="id" value=%d /> <input type="text" name="updelkey" id="updelkey" size="20" placeholder="編集・削除キー(4桁数字)" /> <input type="submit" value="編集" /> <input type="button" id="btn_delete" data-id="%d" value="削除" /> </form>
$('#btn_delete').click(function() { if (confirm("削除しますか?")) { $.post('./delete.php', { id: $(this).data('id'), updelkey: $('#updelkey').val() }, function(data) { if (data.result == 'success') { // index.htmlにジャンプ location.href = "./index.html"; } else { alert(data.message); } }, 'json' ); } });
ソースコード
item.php
<!DOCTYPE HTML> <html lang="ja"> <head> <meta charset="UTF-8"> <title>スマホキャプチャーギャラリー</title> </head> <body> <a href="index.html">Home</a> | <a href="upload.html">アップロード</a> | <a href="ranking.html">人気順</a> | <a href="latest.html">新着順</a> <?php require_once('config.php'); require_once('function.php'); $dbh = connect_db(); $id = $_GET['id']; // アクセスカウンタをインクリメント $sql = sprintf("update mobile_capture_showcase set counter=counter+1 where id=%d", $id); $dbh->query($sql); // 該当IDの画像情報を表示 $sql = sprintf("select * from mobile_capture_showcase where id=%d", $id); foreach ($dbh->query($sql) as $item) { $path = "./images/" . $item['filename']; echo sprintf( '<table> <tr> <td> <img src="%s" alt="image" width="320" /> </td> <td> <table> <tr> <td>名前:%s</td> </tr> <tr> <td>投稿時刻:%s</td> </tr> <tr> <td>OS:%s</td> </tr> <tr> <td>アクセス数:%s</td> </tr> <tr> <td>コメント:%s</td> </tr> <tr> <td><form action="edit.php" action="get"> <input type="hidden" name="id" value=%d /> <input type="text" name="updelkey" id="updelkey" size="20" placeholder="編集・削除キー(4桁数字)" /><input type="submit" value="編集" /><input type="button" id="btn_delete" data-id="%d" value="削除" /> </form></td> </tr> </table> </td> </tr> </table>', $path, $item['name'], $item['time'], $item['os'], $item['counter'], h($item['comment']), $id, $id); } $dbh = null; ?> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function() { $('#btn_delete').click(function() { if (confirm("削除しますか?")) { $.post('./delete.php', { id: $(this).data('id'), updelkey: $('#updelkey').val() }, function(data) { if (data.result == 'success') { // index.htmlにジャンプ location.href = "./index.html"; } else { alert(data.message); } }, 'json' ); } }); }); </script> </body> </html>
delete.php
<?php require_once('config.php'); require_once('function.php'); // 編集・削除キーのチェック // 一致しない場合、キーが誤っている旨を表示する if (check_updelkey($_POST['id'], $_POST['updelkey']) == false) { //echo "編集・削除キーが誤っています"; echo json_encode(array("result"=>"fail", "message"=>"編集・削除キーが誤っています")); //exit; } else { // 削除フラグの更新 $dbh = connect_db(); $statement = $dbh->prepare("update mobile_capture_showcase set status='deleted' where id=:id"); $statement->bindParam(":id", $_POST['id']); $statement->execute(); $dbh = null; echo json_encode(array("result"=>"success", "message"=>"")); } ?>
参考サイト
- PHPの基礎(応用編) (全12回) – ドットインストール
- お問合せ管理システムを作ろう (全21回) – プログラミングならドットインストール
- PHP: PDO – Manual
- jQueryでHTML5の独自データ属性(data Attributes)を扱う | webOpixel
パーフェクトPHP (PERFECT SERIES 3)
posted with amazlet at 13.01.30
小川 雄大 柄沢 聡太郎 橋口 誠
技術評論社
売り上げランキング: 24,082
技術評論社
売り上げランキング: 24,082
関連エントリー