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

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

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

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

PHP

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

Q&A

解決済

2回答

387閲覧

投稿削除の削除機能ができない

sou5

総合スコア2

MySQL

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

PHP

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

0グッド

0クリップ

投稿2022/05/01 18:34

ブログアプリを作っています。
投稿の削除を実装しようとしているのですがうまく削除をすることができません。
DELETE処理をしようとするとこのようにエラーが出てしまいます。
調べたりしたのですがわからなかったのでわかる方がいれば教えていただきたいです。
<エラー>
Fatal error: Uncaught Error: Call to undefined method Request::get() in /home/users/2/velvet.jp-red-amami-9732/web/application/controllers/BlogController.php:182 Stack trace: #0 /home/users/2/velvet.jp-red-amami-9732/web/application/core/Controller.php(40): BlogController->deletedoneAction(Array) #1 /home/users/2/velvet.jp-red-amami-9732/web/application/core/Application.php(152): Controller->run('deletedone', Array) #2 /home/users/2/velvet.jp-red-amami-9732/web/application/core/Application.php(106): Application->runAction('blog', 'deletedone', Array) #3 /home/users/2/velvet.jp-red-amami-9732/web/application/web/index_dev.php(8): Application->run() #4 {main} thrown in /home/users/2/velvet.jp-red-amami-9732/web/application/controllers/BlogController.php on line 182

こちらがコードになります。
#Controllerfile

public function deleteAction($params) { $blog_id = $params['blog_id'];//var_dump($blog_id); $user = $this->session->get('user'); $profile = $this->db_manager->get('Profile')->getById($user['id']); $blog = $this->db_manager->get('Blog')->getBlogId($blog_id); //if(); //if(); //if(); $smarty = new Smarty(); $smarty->assign("session",$this->session); $smarty->assign("base_url",$this->request->getBaseUrl()); $smarty->assign("_content",$this->content); $smarty->assign('profile',$profile); $smarty->assign('blog',$blog); $smarty->display(VIEW_DIR . '/blog/delete.php'); } public function deletedoneAction($params) { //$blog_id = $this->request->getPost($params['blog_id']); $blog_id = $params['blog_id']; $user = $this->session->get('user'); $blog = $this->request->get('Blog')->delete($blog_id); $smarty = new Smarty(); $smarty->assign("base_url",$this->request->getBaseUrl()); $smarty->display(VIEW_DIR . '/blog/deletedone.php'); }

こちらがViewです。
#Delete file

<html lang="ja"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>投稿削除</title> <link rel="stylesheet" type="text/css" media="screen" href="/css/style.css" /> </head> <body> <div class="confirm" style="text-align: center;"> <h1 class="confirm_content">投稿削除 内容 </h1> <form action="{$base_url}/blog/deletedone/{$blog.id}" method="post"> <input type="hidden" name="blog_id" value="" /> <p class="size">削除内容はこちらで宜しいでしょうか?<br>よろしければ「送信する」ボタンを押して下さい。</p> <div class="status"> <div class="status_content"> <img src="/uploads/{$profile.image_file}" width="60px" class="effect"/> {UtilCommon::escape($profile.nick_name)} </div> <p>{UtilCommon::escape($blog.subject)}</p> <p>{if $blog.image_file} <img src="/uploads/{$blog.image_file}" width="300px" alt="投稿画像" /> {/if} </p> <td> <p>{if 0 == $blog.category_type }{/if}</p> <p>{if 1 == $blog.category_type }#食べ物{/if}</p> <p>{if 2 == $blog.category_type }#動物{/if}</p> <p>{if 3 == $blog.category_type }#スポーツ{/if}</p> <p>{if 4 == $blog.category_type }#ファッション{/if}</p> <p>{if 5 == $blog.category_type }#娯楽{/if}</p> <p>{if 6 == $blog.category_type }#自然{/if}</p> <p>{if 7 == $blog.category_type }#その他{/if}</p> </td> <div class="create_date"> {UtilCommon::escape($blog.create_date)} </div> </div> <input type="button" value="削除しない" onclick="history.back(-1)" class="button"> <button type="submit" name="submit" class="button">削除する</button> </form> </div> </body> </html>

#Dletedone file

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>会員情報フォーム</title> <link rel="stylesheet" type="text/css" media="screen" href="/css/style.css" /> </head> <body> <div class="confirm" style="text-align: center;"> <h1 class="confirm_content">投稿削除 送信完了</h1> <div> <div> <p class="done"> 投稿削除完了しました。<br> </p> <a href="{$base_url}/account"> <button type="button" class="button">ホームに戻る</button> </a> </div> </div> </div> </body> </html>

こちらがSQLです。

<?php class BlogRepository extends DbRepository { public function insert($user_id = null,$subject = null,$category_type = null,$image_file = null) { $now = new DateTime(); $sql = "INSERT INTO blog(user_id,subject,category_type,image_file,create_date,update_date) VALUES(:user_id,:subject,:category_type,:image_file,:create_date,:update_date)"; $stmt = $this->execute($sql,array( ':user_id' => $user_id, ':subject' => $subject, ':category_type' => $category_type, ':image_file' => $image_file, ':create_date' => $now->format('Y-m-d H:i:s'), ':update_date' => $now->format('Y-m-d H:i:s'),)); return $this->con->lastInsertId(); } public function fetchAllByUserId($user_id) { $sql = "SELECT b.*,u.name FROM blog b LEFT JOIN user u ON b.user_id = u.id WHERE u.id = :id ORDER BY b.create_date DESC"; return $this->fetchAll($sql,array(':id' => $user_id)); } public function getById($user_id) { $sql = "SELECT b.*,u.name FROM blog b LEFT JOIN user u ON b.user_id = u.id WHERE u.id = :id ORDER BY b.create_date DESC"; return $this->fetch($sql,array(':id' => $user_id)); } public function getBlogId($id) { $sql = "SELECT * FROM blog WHERE id = :id"; return $this->fetch($sql,array(':id' => $id)); } public function delete($id) { $sql = "DELETE FROM blog WHERE id = :id"; return $this->execute($sql,array(':id' => $id)); }

よろしくおねがいいたします。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2022/05/01 22:17

既存のフレームワークでしょうか。それとも自作でしょうか。 前者であればタグ追加とバージョンの提示を。 後者であればこのコードだけでは他者は手が出しにくいと思います。エラー内容は理解されてますか?
guest

回答2

0

ベストアンサー

PHPはあまり詳しくはないのですが、エラーメッセージを見るとここ(↓)で未定義のメソッドを呼び出していると出ています。
確認されていますでしょうか?
/home/users/2/velvet.jp-red-amami-9732/web/application/controllers/BlogController.php:182

こちらのサイトも参考になるかと。
https://marycore.jp/prog/php/call-to-undefined-method/

投稿2022/05/02 13:27

takeppesan

総合スコア40

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sou5

2022/05/04 07:44

ありがとうございます。 無事解決することができました。
guest

0

エラー箇所の特定のため、exit();で適当な所で止めてみたり、余計なコードを削除して最小限のコードで動かしてみては如何でしょうか。

・SQL発行前でエラーが発生しているのか
・SQLの構文にエラーがあるのか
→echo();なりでSQL文を書き出してphpMyAdminなりで実行してみると良いかもしれません
・SQL実行は問題なくその後のエラーか

などが分かると思います。

投稿2022/05/02 12:01

happyhappy

総合スコア346

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sou5

2022/05/04 07:44

ありがとうございます。 無事解決することができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問