ゆるキャラのペパクラ情報サイトを改善する(5)削除スクリプトを作る
JUGEMテーマ:ホームページ作成
それでは最終回は、削除スクリプトypdelete.phpの作成です。
まずは前回と同様、必要な機能の整理からです。
・修正フォームの削除ボタンから呼び出され、パスワードの照合画面を表示をする。併せて修正フォームに戻るリンクも表示する。
・自分自身から呼び出されたときは、パスワードを照合し、正しければ削除する。削除が完了したら、ゆるキャラペパクラインデックスのトップに戻るリンクを表示する。
今回も複数の機能を1つのスクリプトで実現しますので、両者を何らかの形で見分ける必要があります。しかし今回は削除という大切の機能を実現するスクリプトなので、パラメータをGETで送るようなことはしたくありません。修正フォームからindex情報をもって初めて来るときも、パスワードを入力して再度自分を呼び出すときも両方POSTです。そこで、自分で自分を呼び出すときには特別なパラメータを追加することにします。「delete」というパラメータがセットされていたら自分から呼び出された、と判断することにします。すると全体構成はこうなります。
if(!isset($_POST["delete"])){ // パスワードの再入力フォーム表示 }else{ // データベースに接続 // パスワードチェック if($row["password"]==$_POST["password"]){ //削除処理 }else{ // パスワード間違い→再入力指示 } }ではこれに従い詳細を詰めてゆきましょう。
まずはパスワードの再入力フォームです。これはほぼecho文のベタ打ちでいいでしょう。
echo'<p>本当に消去していいですか?</p>'; echo'<p>宜しければパスワードを入力して「削除」をクリックしてください</p>'; echo'<form action="ypdelete.php" method="post"> <p>修正用パスワード:<input type="password" name="password" value="" size="20" /></p> <input type="hidden" name="delete" value="delete"/> <input type="hidden" name="id" value='.$_POST["id"].' /> <p><input type="submit" name="submit" value="削除"/></p> </form>'; echo'<p class="backToMod"><a href="http://papercraft.techikun.com/ypmod.php?id='.$_POST["id"].'">修正ページに戻る</a></p>';6行目と9行目にidを送る部分だけ、$_POSTを参照しています。
それと、5行目がスペシャルキーワード"delete"を埋め込んでいるところです。
次はおなじみデータベースに接続し、パスワードを取得するところです。
$pdo = new PDO( 'mysql:dbname=LA********-mysql5;host=********.phy.lolipop.lan;charset=utf8', 'LA********', 'password', array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true ) ); $stmt = $pdo->prepare('SELECT * FROM テーブル名 WHERE `index`=:index'); $stmt->bindValue(':index', (int)$_POST['id']); $stmt->execute(); $row = $stmt->fetch();前半はもう説明はいらないでしょう。
後半も、indexを指定してSELECT文でデータベースからデータを読み出し、$rowに格納しているいつもの流れです。
これを受けてパスワードチェックのif文を抜けると次が実際の削除処理です。
$stmt4 = $pdo->prepare('DELETE FROM テーブル名 WHERE `index`=:index'); $stmt4->bindValue(':index', (int)$_POST['id']); $stmt4->execute(); echo'<p>【削除完了!】</p>'; echo'<p class="returnToTop"><a href="http://papercraft.techikun.com/ypindex.php">ゆるキャラペパクラインデックスのトップへ戻る</a></p>';削除はDELETE文で、3行で終了。
完了表示をしたうえで、トップへ戻るリンクを表示して終了です。
最後のパスワード間違い時の処理は次の通りです。
echo'<p>本当に消去していいですか?</p>'; echo'<p>宜しければパスワードを入力して「削除」をクリックしてください</p>'; echo'<form action="ypdelete.php" method="post"> <p>修正用パスワード:<input type="password" name="password" value="" size="20" /></p> <p class="errorcomment">*正しいパスワードを入力してください。</p> <input type="hidden" name="delete" value="delete"/> <input type="hidden" name="id" value='.$_POST["id"].' /> <p><input type="submit" name="submit" value="削除"/></p> </form>'; echo'<p class="backToMod"><a href="http://papercraft.techikun.com/ypmod.php?id='.$_POST["id"].'">修正ページに戻る</a></p>';最初のブロックに、class="errorcomment"で「正しいパスワードを入力してください」の一文が追加されただけでした。
以上で今回のPHPでMySqlを操作してデータベースを使ったウェブアプリを作るシリーズは完了です。
次回作をお楽しみに☆
- 2015.11.25 Wednesday
- ホームページ
- 18:15
- comments(0)
- -
- -
- by てちくん