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

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

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

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

Q&A

2回答

725閲覧

PHPで、登録項目が沢山あるマスタを登録するページを作る場合に、適切な処理を知りたい。

totes

総合スコア0

PHP

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

0グッド

0クリップ

投稿2021/04/22 07:04

編集2021/04/22 07:05

前提・実現したいこと

PHPで、車好きの為の会員専用サイトを想定して、独学でサイトを作成しています。
DBやPOSTを使用した処理をしています。classはまだ使用したことがありません。
DBに会員情報を持ち、ログインしたらログイン状態をSESSIONに持って表示ページを切り替えたり、会員情報をヘッダに表示する様な仕組みを作成しました。
この後、自分の車を登録するページを作成してみようと思いましたが、登録させたい項目が多く、写真を追加するページも必要です。
検索用のタグ・カテゴリを追加したりするため、登録1件に対して登録先のテーブルも、レコード数も多くなると想定しています。

想定としては、以下のようなページ遷移を考えています。(メーカー~モデル選択はJavascriptを使用し1ページにまとめるかも)
「メーカー」→「車種」→「モデルや年式」→詳細情報記入1→詳細情報記入2→詳細情報記入3→画像登録→確認→完了
詳細情報1~3は、各ページで10~20の項目を入力、「はい/いいえ」選択、コンボボックスから選択肢選択を行う作りです。
最後の完了画面で初めてDBに登録を行うようにしたいと考えています。

・所有車マスタ
・所有車詳細マスタ
・(検索用)項目タグマスタ
・メーカー、車種、モデル・年式 各マスタ
etc

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

登録中の情報をどうやって保持していくかがわかりません。

項目が多く、ページを戻る事も考えると、ページ移動時全ての項目をPOSTして渡していくという事はできません。
こういう場合、SESSIONに登録アイテムの配列を作り、そこに登録途中の情報を持つようにするのがいいのでしょうか?
または、DBに登録中の情報を入れるテーブルを作り、そこで管理すればいいのでしょうか?
手間を考えると、DBではなくセッションを使用して、登録中の情報を持たせたいのですが…

こういう場合、クラスを作りその中で登録情報の項目とその変更などの変数を持たせ、SESSIONへの書き込みなどを行う関数を作るものなのでしょうか。

独学でやっているため、こういった設計面でのセオリーがわからず判断に困っております。
お教えいただければ幸いです。

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

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

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

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

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

m.ts10806

2021/04/22 07:10

まず作ってみたほうがいいです。 1つのゴールに向かう道は1つではないのでセオリーや正解はありません。 要件満たせていればそれが正解です。
AbeTakashi

2021/04/22 07:26

頑張れば多分どちらの方法でも実現できると思います。ただ、どちらを使うにしてもセキュリティには気をつけて実装する必要があります。特にセッション変数を多用すると事故が起きやすいです。すぐに稼働とかするわけでもなければ、最初はそこまで深く考えずに、まずはご自分で実装して登録完了できるところまで作ってみるのがいいかと。 セオリーみたいのを知りたいのかもしれませんが、それは要件や時代によって変わりますね。PHPのセッションでもデータベースでもないものを使うことはあります。それは色々学んでいくうちに知ったり気づいたりすると思いますので、今はまず自分の思う方法で実装されるのが良いと思います。 あと以下は蛇足ですが、個人的感じたのは、こういうサービスを使おうと思っても、いきなりいっぱい入力させられるのはつらいかもなーと思いました。最初は最小限のデータだけ入力させて、サービスを使う過程で徐々に入力させるみたいな仕組みの方が良いような気もします。
guest

回答2

0

項目が多く、ページを戻る事も考えると、ページ移動時全ての項目をPOSTして渡していくという事はできません。
こういう場合、SESSIONに登録アイテムの配列を作り、そこに登録途中の情報を持つようにするのがいいのでしょうか?
または、DBに登録中の情報を入れるテーブルを作り、そこで管理すればいいのでしょうか?

どの方法でも問題無く実装出来るので、やりやすい方法で実装されると良いかと思いますよ。

手間を考えると、DBではなくセッションを使用して、登録中の情報を持たせたいのですが…

セッションが切れたときに登録中のデータが失われても良いのであればそれで問題ありません。

こういう場合、クラスを作りその中で登録情報の項目とその変更などの変数を持たせ、SESSIONへの書き込みなどを行う関数を作るものなのでしょうか。

よくわからない様であれば、まずは関数に処理をまとめると言うところからスタートすれば良いと思います。

独学でやっているため、こういった設計面でのセオリーがわからず判断に困っております。

ゴールがどこになるか次第ですが、セオリーを求めるのであれば、
一通り自力でwebアプリケーションを作れるようになった後にでも
メジャーなwebアプリケーションフレームワークを使ったwebアプリケーション構築や、
セキュリティ、オブジェクト指向設計やDB設計等の基礎的なところをそれぞれの教材で学習されることをお勧めします。

投稿2021/04/22 08:36

tanat

総合スコア18713

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

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

0

登録する情報の粒度を精査してグループ化して、
適度な項目数でフォームを分割して、
フォームの連続でhiddenで保持するかセッション駆使するか、
必須じゃない項目を後回しにできるようにして、
楽に入力できるよう配慮する、
っていうデザイン論の話ではなくて?

【2020年最新事例付き】入力フォーム作成の際に注意したい12のポイント | えそらLLC UX ブログ
入力フォームにおけるUI設計の基本とUXを改善するためのデザインルールとは? - ACT3 ONLINE

登録情報をグループ化した際に、
情報を格納するテーブル自体も分けたりしてもいいし、
まぁそこはER図を起こして検討するなどしていただければ。

サクッとひとつ作って動かしてみれば、
こうすればいい、ああしたらいい、ってアイディアも出てきますし。

投稿2021/04/22 09:19

編集2021/04/22 09:20
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問