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

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

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

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

Q&A

解決済

1回答

1074閲覧

fuelPHP 入力項目チェック・入力項目のDB登録

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

0グッド

0クリップ

投稿2021/06/01 02:06

編集2021/06/01 04:42

学校の課題でFuelPHPを使用し簡易掲示板を作ります。

発生している問題・エラーメッセージ

入力内容をDBに登録するSQL文の書き方、書く場所、順番がわかりません
入力項目が未入力の際のエラーの出し方がわかりません。

model <?php namespace Model; use DB; class Tcomment extends \Model { public static function get_datas() { $query = DB::query('SELECT * FROM t_comment'); return $query->execute(); } }
controller <?php use \Model\Tcomment; class Controller_Board extends Controller { public function action_index() { $view = View::forge('board/index'); $comment_data = Tcomment::get_datas(); $view->comment_data = $comment_data; return $view; } }
views <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>入力フォーム表示画面</title> </head> <body> <div> <div>お名前:<input type="text" name="onamae" value=""></div> <div>コメント:<input type="text" name="comment" value=""></div> <div><input type="submit" value="登録"></div> </form> <div> <table> <tr> <th>ID</th> <th>名前</th> <th>コメント</th> <th>登録日</th> </tr> <?php foreach($comment_data as $data):?> <tr> <td><?php echo $data['id'];?></td> <td><?php echo $data['name'];?></td> <td><?php echo $data['comment'];?></td> <td><?php echo $data['registed'];?></td> </tr> <?php endforeach;?> </table> </div> </body>

試したこと

補足情報(FW/ツールのバージョンなど)

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

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

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

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

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

m.ts10806

2021/06/01 03:45

コードはマークダウンのcode機能にてご提示ください あと、タイトル間違ってますhuelPHP
退会済みユーザー

退会済みユーザー

2021/06/01 04:42

ご指摘ありがとうございます。修正いたしました。
guest

回答1

0

ベストアンサー

先入観を持たないよう確認していきたいのですが、
まず、どういうデータ構造にしようとしているのでしょうか。
とりあえず class Tcomment extends \Model を定義しているようですが、
クエリーは詳しくないのかな、ソートもなしにselect *じゃ順序がメチャクチャですけれど。

単に投稿を時系列に並べて表示するのか、
投稿に付帯するコメントも管理して、これも時系列に並べて表示するのか、
など、明らかにしていただきたく。

そのうえで、モデルでのデータ取得メソッドをどう定義するかとか、
ビューでどういうhtmlを出力するのかを考えていけばよいかと。

日本語ドキュメントはこちらから:
FuelPHP.JP 日本語ドキュメント

とりあえずやってみる!FuelPHP第1回〜FuelPHPの概要〜 | Geekroid

今の質問の内容だと、丸投げだと思われても敷かないところなので、
今知りたいところをピンポイント的に絞り込めないでしょうか。
システムを作れるところまで、この回答で全部教え込んでいくのはとてもむずかしいので。
「ここがわからないから前に進めない」ってところに絞った内容に質問を編集してください。

フォーム入力のチェックには、Validationクラスを使うとラクです。

Validation - クラス - FuelPHP ドキュメント


質問文中に現在のソースコードを貼り付けていただいたようですが、
繰り返しとなりますがFuelPHPの実行環境を再現する手間を今確保できないため、
情報提供のみで失礼します。

私が先にFuelPHPを書けるようになったときに読んでいたのが、この本になります:
はじめてのフレームワークとしてのFuelPHP第2版(3) 実践編 - 達人出版会
この本では、ここでこのコードを書く、っていうのをしつこく丁寧に説明してあって、
MVCモデル開発をどう進めるかの考え方から教わることができます。
わたしが膨大な時間を使ってここに説明を書き連ねるよりは、
まともなチュートリアルをやっていただいたほうが時間の節約になります。

10のうち1がわからなくて完成しない、っていう感じじゃなく、
10のうち9がわからない、っていう状況ではまだ、系統立てた学習が足りていない状況なので、
FuelPHPのfieldsetクラスの使い方に注目して事例を集めたほうがいいです。


例えばモデルはこうした方がいいかも:

php

1 public static function get_datas() 2 { 3 $query = DB::query('SELECT * FROM t_comment ORDER BY registed DESC'); // 登録日時で降順とか 4 return $query->execute(); 5 }

キー付き配列に必要なデータを詰めて渡すやり方:

php

1 public function action_index() 2 { 3 $data = []; 4 $comment_data = Tcomment::get_datas(); 5 $data['comment_data'] = $comment_data; 6 return View::forge('board/index', $data); 7 }

こういう書き方もある(HTMLエスケープする/しないを細かく制御できるので便利):

php

1 public function action_index() 2 { 3 $view = View::forge('board/index'); 4 $comment_data = Tcomment::get_datas(); 5 $view->set('comment_data', $comment_data); // htmlエスケープする時。エスケープしないときはset_safe()にする。 6 return $view; 7 }

ビューに関しては、思い出しながら

php

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4<meta charset="UTF-8"> 5<title>入力フォーム表示画面</title> 6</head> 7<body> 8 <div> 9<?php echo Form::open('board/index'); ?> 10 <div><?php echo Form::label('お名前', 'onamae'); ?><?php echo Form::input('onamae', Input::post('onamae')); ?></div> 11 <div><?php echo Form::label('コメント', 'comment'); ?><?php echo Form::input('comment', Input::post('comment')); ?></div> 12 <div><?php echo Form::submit('submit', '登録'); ?></div> 13<?php echo Form::close(); ?> 14 15 <div> 16 <table> 17 <tr> 18 <th>ID</th> 19 <th>名前</th> 20 <th>コメント</th> 21 <th>登録日</th> 22 </tr> 23 <?php foreach($comment_data as $data):?> 24 <tr> 25 <td><?php echo $data['id'];?></td> 26 <td><?php echo $data['name'];?></td> 27 <td><?php echo $data['comment'];?></td> 28 <td><?php echo $data['registed'];?></td> 29 </tr> 30 <?php endforeach;?> 31 </table> 32 </div> 33</body>

で表示できるとは思う。(うろ覚え)

fieldsetクラスの使い方は、こちらの記事を参照:
FuelPHPでフォーム作成1(Fieldset) - BTT's blog
$form = Fieldset::forge();して
$form->add('name', 'お名前', array('maxlength' => 8));みたいにフォーム入力の項目を定義していって、
$view->set_safe('form', $form->build(Uri::create('board/index')));みたいにしてフォームをまるごと渡せれば、
viewの中で<?php echo $form; ?>ってやっとけばフォームのHTMLが展開されるっていう。

投稿2021/06/01 02:12

編集2021/06/01 08:30
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2021/06/01 03:56 編集

回答ありがとうございます。前者の単に投稿を時系列に並べて表示するもので大丈夫です。
退会済みユーザー

退会済みユーザー

2021/06/01 04:00

すみません。質問を修正すると入力された名前、コメントをクラス、モデルどちらにどう言うSQL文を書けばDBのテーブルに登録されるか知りたいです。
退会済みユーザー

退会済みユーザー

2021/06/01 04:03

コントローラはあくまで舵取りなので、SQLはモデルで書きます。 アクションメソッドに登録用のメソッドを追加して、Validationクラスを駆使して入力を検査して、モデルに渡して記録させ、ビューで表示するためのデータを取得したものを、ビューに引き渡すという流れですが。
退会済みユーザー

退会済みユーザー

2021/06/01 04:45

一連の流れはそうです。それぞれのコードの書き方自体がわからないので教えていただきたいです。
退会済みユーザー

退会済みユーザー

2021/06/01 08:36

ご教授いただきありがとうございました。コピペではなくしっかりと本を購入し一つ一つのコードで何を行っているか理解しながら進めていきたいと思います。
退会済みユーザー

退会済みユーザー

2021/06/01 09:01

日中は仕事の合間で回答つけているので、まとまったことを書くのが億劫になりがちで、すんませんでした。
退会済みユーザー

退会済みユーザー

2021/06/02 01:19 編集

お仕事中すみませんでした。表示されずdbにも登録されなかったのですがどうすれば良いですか
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問