質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
phpPgAdmin

phpPgAdminは、PHPで作成された複数のPostgreSQLデータベースをブラウザから簡単に管理・操作できるツール。テーブルの作成や参照を始め、データのバックアップやリストアといった操作が可能になります。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

解決済

DBに保存できなくなってしまいました。

YTKM
MS_tt

総合スコア20

phpPgAdmin

phpPgAdminは、PHPで作成された複数のPostgreSQLデータベースをブラウザから簡単に管理・操作できるツール。テーブルの作成や参照を始め、データのバックアップやリストアといった操作が可能になります。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

1回答

0リアクション

0クリップ

293閲覧

投稿2022/07/20 23:10

phpにてフォームの削除機能を実装中に、保存が出来なくなっている事に気がつきました。
元々は、確認画面にて送信ボタンを押すと、データベースに保存できていました。
その後、編集機能、一覧表示機能、削除機能、バリデーションを実装して、改めて保存できるか確認した所、DBに保存できなくなっていました。
var_dumpでデバックして確認した所、モデルまで値が来ていて、INSERTも、bindValueも、executeもしているのに、保存されないのが分かりません
分かる方居ましたらお願いします。

フォーム

入力画面

Image from Gyazo

確認画面

Image from Gyazo

完了画面

Image from Gyazo

コード

VIEW

php

<?php function h($str) { return htmlspecialchars($str, ENT_QUOTES, 'UTF-8'); } require 'validation.php'; require_once(ROOT_PATH .'Controllers/ContactController.php'); $create = new ContactController(); $edit = new ContactController(); $params = $edit->index(); /// $pageFlagにて切り替え /// 入力画面 $pageFlag = 0; $errors = validation($_POST); /// 確認画面 if (!empty($_POST['btn_confirm']) && empty($errors)) { $pageFlag = 1; } /// 完了画面 if (!empty($_POST['btn_submit'])) { $pageFlag = 2; var_dump($_POST); $create->contact($_POST); } /// 更新画面 if (!empty($_POST["btn_edit"])) { $pageFlag = 3; } ?> 割愛 <body> <div class = "container"> <!-- 入力画面フォーム --> <?php if($pageFlag === 0 ) : ?> <!-- エラー文表示 --> <?php if(!empty($errors) && !empty($_POST['btn_confirm'])) : ?> <?php echo '<ul>' ; ?> <?php foreach($errors as $error){ echo '<li>'. $error . '</li>' ; } ?> <?php echo '</ul>' ; ?> <?php endif ;?> <div class = "title"> <h1>入力画面</h1> </div> <form method="POST" action="contact.php"> <p>氏名</p> <input type="text" name="name" id="inputName" value="<?php if(!empty($_POST['name'])) { echo h($_POST['name']); } ?>" > <br> <p>フリガナ</p> <input type="text" name="kana" id="inputKana" value="<?php if(!empty($_POST['kana'])) { echo h($_POST['kana']); } ?>" > <br> <p>電話番号</p> <input type="text" name="tel" value="<?php if(!empty($_POST['tel'])) { echo h($_POST['tel']); } ?>" > <br> <p>メールアドレス</p> <input type="email" name="email" id="inputMail" value="<?php if(!empty($_POST['email'])) { echo h($_POST['email']); } ?>" > <br> <p>お問い合わせ内容</p> <textarea name="body" id="inputBody"> <?php if(!empty($_POST['body'])) { echo h($_POST['body']); } ?> </textarea> <p><input type="submit" name="btn_confirm" id="btnConfirm" value="送信"> </p> <br> </form> <section> <table border="1"> <tbody> <tr> <th>氏名</th> <th>フリガナ</th> <th>電話番号</th> <th>メールアドレス</th> <th>お問い合わせ内容</th> <th>編集ボタン</th> <th>削除ボタン</th> </tr> <?php foreach($params['contacts'] as $content): ?> <tr> <td><?=$content['name'] ?></td> <td><?=$content['kana'] ?></td> <td><?=$content['tel'] ?></td> <td><?=$content['email'] ?></td> <td><?=$content['body'] ?></td> <td> <?php echo "<a href=edit.php?id=" . $content["id"] . ">編集</a>\n"; ?> </td> <td> <?php echo "<a href=contact.php?id=" . $content["id"] . ">削除</a>\n"; ?> </td> </tr> </tbody> <?php endforeach; ?> </table> </section> <?php endif; ?> <!-- 確認画面フォーム --> <?php if($pageFlag === 1 ) : ?> <h1>確認画面</h1> <form method="POST" action="contact.php"> <p>氏名</p> <?php echo h($_POST['name']);?> <br> <p>フリガナ</p> <?php echo h($_POST['kana']);?> <br> <p>電話番号</p> <?php echo h($_POST['tel']);?> <br> <p>メールアドレス</p> <?php echo h($_POST['email']);?> <br> <p>お問い合わせ</p> <?php echo h($_POST['body']);?> <br> <p>上記の内容でよろしいですか?</p> <input type="submit" name="back" value="キャンセル"> <input type="submit" name="btn_submit" value="送信"> <input type="hidden" name="name" value="<?php echo h($_POST['name']); ?>" > <input type="hidden" name="kana" value="<?php echo h($_POST['kana']); ?>" > <input type="hidden" name="tel" value="<?php echo h($_POST['tel']); ?>" > <input type="hidden" name="email" value="<?php echo h($_POST['email']); ?>" > <input type="hidden" name="body" value="<?php echo h($_POST['body']); ?>" > </form> <?php endif; ?> <!-- 完了画面フォーム --> <?php if($pageFlag === 2 ) : ?> <p>完了画面</p> <br> お問合せ内容を送信しました。 <br> ありがとうございました。 <br> <form> <input type="submit" name="back" value="キャンセル"> </form> <?php endif; ?> </div> </body> </html>

コントローラー

php

<?php require_once(ROOT_PATH .'Models/ContactModel.php'); class ContactController { private $request; // リクエストパラメータ(GET,POST) private $Contact; // Playerモデル private $Text; public function __construct() { // リクエストパラメータの取得 $this->request['get'] = $_GET; $this->request['post'] = $_POST; // モデルオブジェクトの生成 $this->Contact = new ContactModel(); $this->Text = new ContactModel(); // 別モデルと連携 $dbh = $this->Contact; } public function contact($data) { var_dump($data); $this->Contact->contact($data); } public function text($edit) { $this->Contact->text($edit); } public function index() { $pageFlag = 0; if(isset($this->request['get']['pageFlag'])) { $pageFlag = $this->request['get']['pageFlag']; } $contacts = $this->Contact->findAll($pageFlag); $params = [ 'contacts' => $contacts, 'page' => $pageFlag // ページ番号 ]; return $params; } } ?>

モデル

php

<?php require_once(ROOT_PATH .'Models/Db.php'); class ContactModel extends Db { public function __construct($dbh = null) { parent::__construct($dbh); } public function contact($data) { var_dump($data); $name = $data['name']; $kana = $data['kana']; $tel = $data['tel']; $email = $data['email']; $body = $data['body']; $this->dbh->beginTransaction(); try { $sql = "INSERT INTO contacts (name, kana, tel, email, body) VALUES (:name,:kana,:tel,:email,:body)"; $sth = $this->dbh->prepare($sql); $sth -> bindValue(':name', $name); $sth -> bindValue(':kana', $kana); $sth -> bindValue(':tel', $tel); $sth -> bindValue(':email', $email); $sth -> bindValue(':body', $body); $sth->execute(); } catch (Exception $e) { echo "接続失敗: " . $e->getMessage() . "\n"; exit(); } } public function text($edit){ if (!empty($_POST['edit_confirm']) && empty($errors)) { try { $dbh = new PDO('mysql:dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASSWD); $stmt = $dbh->prepare('UPDATE contacts SET name = :name, kana = :kana , tel = :tel , email = :email , body = :body WHERE id = :id'); $stmt->execute(array(':name' => $_POST['name'], ':kana' => $_POST['kana'], ':tel' => $_POST['tel'], ':email' => $_POST['email'], ':body' => $_POST['body'], ':id' => $_POST['id'])); } catch (Exception $e) { echo 'エラーが発生しました。:' . $e->getMessage(); } } elseif (!empty($errors) && !empty($_POST['edit_confirm'])) { foreach($errors as $error){ echo '<li>'. $error . '</li>' ; } } } public function findAll($pageFlag = 0):Array { $sql = 'SELECT'; $sql .= ' id,'; $sql .= ' name,'; $sql .= ' kana,'; $sql .= ' tel,'; $sql .= ' email,'; $sql .= ' body'; $sql .= ' FROM contacts'; $sth = $this->dbh->prepare($sql); $sth->execute(); $result = $sth->fetchAll(PDO::FETCH_ASSOC); return $result; } } ?>

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2022/07/21 00:01

こちらの質問が他のユーザーから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

phpPgAdmin

phpPgAdminは、PHPで作成された複数のPostgreSQLデータベースをブラウザから簡単に管理・操作できるツール。テーブルの作成や参照を始め、データのバックアップやリストアといった操作が可能になります。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。