前提・実現したいこと
現在PHPで削除機能を実装しております。実現したいことは削除ボタンを押すと'本当に削除しますか?'のポップアップが出てきて、OKを押すと登録されているデータが削除されるという流れです。
発生している問題・エラーメッセージ
contact.phpの削除ボタンを押すとポップアップが出てOKを押すとdelete.phpへ飛び、Idが渡されているのですが、処理が完了せず、delete.phpの画面のまま止まってしまいます。OKを押した後、削除処理が実行され、contact.phpの画面へ戻り、一覧からデータを削除するにはどうすればいいでしょうか?
ソースコード
php
1<!-- contact.php --> 2 <form action="" method="post"> 3 <table> 4 <th>氏名</th> 5 <th>フリガナ</th> 6 <th>電話番号</th> 7 <th>メールアドレス</th> 8 <th>お問い合わせ内容</th> 9 <th></th> 10 <th></th> 11 <?php if( !empty($message_array) ){ ?> 12 <?php foreach( $message_array as $value ){ ?> 13 <tr> 14 <td><p><?php echo $value['name']; ?></p></td> 15 <td><p><?php echo $value['kana']; ?></p></td> 16 <td><p><?php echo $value['tel']; ?></p></td> 17 <td><p><?php echo $value['email']; ?></p></td> 18 <td><p><?php echo nl2br($value['body']); ?></p></td> 19 <td><a href="edit.php?message_id=<?php echo $value['id']; ?>" name="edit">編集</a></td> 20 <td><a href="delete.php?message_id=<?php echo $value['id']; ?>" onclick="return confirm('本当に削除しますか?')" name="delete">削除</a></td> 21 </tr> 22 <?php } ?> 23 <?php } ?> 24 </table> 25 </form> 26 <?php endif; ?> 27 </body> 28</html> 29
php
1 <!-- delete.php --> 2 3<?php 4 5 require_once(ROOT_PATH .'Models/Db.php'); 6 7$value = null; 8 9if( !empty($_GET['message_id']) && empty($_POST['message_id']) ) { 10 // SQL作成 11 $stmt = $pdo->prepare("SELECT * FROM contacts WHERE id = :id"); 12 13 // 値をセット 14 $stmt->bindValue( ':id', $_GET['message_id'], PDO::PARAM_INT); 15 16 // SQLクエリの実行 17 $stmt->execute(); 18 19 // 表示するデータを取得 20 $message_data = $stmt->fetch(); 21 22 // 投稿データが取得できないときは管理ページに戻る 23 if( empty($message_data) ) { 24 echo '投稿データが取得できませんでした'; 25 } 26} elseif ( !empty($_POST['message_id']) ) { 27 // トランザクション開始 28 $pdo->beginTransaction(); 29 30 try { 31 32 // SQL作成 33 $stmt = $pdo->prepare("DELETE FROM contacts WHERE id = :id"); 34 35 // 値をセット 36 $stmt->bindValue( ':id', $_POST['message_id'], PDO::PARAM_INT); 37 38 // SQLクエリの実行 39 $stmt->execute(); 40 41 // コミット 42 $res = $pdo->commit(); 43 44 } catch(Exception $e) { 45 46 // エラーが発生した時はロールバック 47 $pdo->rollBack(); 48 echo $e; 49 } 50 51 // 削除に成功したら一覧に戻る 52 if( $res ) { 53 header("Location: contact.php"); 54 exit; 55 } 56} 57 58// データベースの接続を閉じる 59$stmt = null; 60$pdo = null; 61 62?>
php
1<!-- Db.php --> 2 3<?php 4// 使用する変数を初期化 5$name = null; 6$kana = null; 7$tel= null; 8$email = null; 9$body = null; 10 11$message_array = array(); 12$message_date = null; 13$pdo = null; 14$stmt = null; 15$res = null; 16$option = null; 17 18// データベースに接続 19try { 20 21 $option = array( 22 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 23 PDO::MYSQL_ATTR_MULTI_STATEMENTS => false 24 ); 25 $pdo = new PDO('mysql:charset=UTF8;dbname=casteria;host=127.0.0.1;port=8111', 'root', '', $option); 26 27} catch(PDOException $e) { 28 29 // 接続エラーのときエラー内容を取得する 30 $error_message[] = $e->getMessage(); 31}

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/03/17 06:34
2022/03/17 07:52