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

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

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

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

PHP

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

解決済

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

sou5
sou5

総合スコア2

MySQL

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

PHP

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

2回答

0評価

0クリップ

183閲覧

投稿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)); }

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

良い質問の評価を上げる

以下のような質問は評価を上げましょう

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

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

m.ts10806

2022/05/01 22:17

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

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

MySQL

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

PHP

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