お世話になります。教えてください。
現在画面の設計段階です。
画面遷移としましては、
第1入力画面→第2入力画面→確認画面→完了画面
という感じの場合、皆様ならどのようなPHPファイルの構成にするでしょうか?
それぞれの処理で、PHPファイルを分けますか?
(例えばnyuryoku1.php、nyuryoku2.php、kakunin.php、kanryou.phpというように)
第1入力画面と第2入力画面にエラーがあった場合は次の画面に行かず、エラー内容をそれぞれのページの上のほうに赤色表示させて、入力した項目は入力された状態を保持したいのです。
このときページを分けると結構値の受け渡しが面倒になってしまいそうな気がするのですが・・・。
しかしひとつのPHPファイルで記述するとかなり長い記述になってしまいそうです。
アドバイス等ください。よろしくお願いします。
No.6ベストアンサー
- 回答日時:
私もSSSIONを使っています。
ただ、処理はswitchで振り分けてプログラムは1ファイル、あとはHTML部分をテンプレートのようにして読み込ませています。nyuryoku.php(少しはしょっていますが)
switch ($_POST["act"]) {
case "nyuryoku1":
$entchk = entchk("nyuryoku1");
< $entchk[0] を $_SESSION["nyuyoku1"] に登録 >
if ($entchk[1] != "") {
< nyuryoku1.html 読み込み >
} else {
< nyuryoku2.html 読み込み >
}
break;
case "nyuryoku2":
if ($_POST["submit"] == "リセット") {
unset($_SESSION["nyuyoku1"]);
< nyuryoku1.html 読み込み >
} elseif ($_POST["submit"] == "戻る") {
< nyuryoku1.html 読み込み >
} else {
$entchk = entchk("nyuryoku2");
< $entchk[0] を $_SESSION["nyuryoku2"] に登録 >
if ($entchk[1] != "") {
< nyuryoku2.html 読み込み >
} else {
< kakunin.html 読み込み >
}
}
break;
case "kakunin":
if ($_POST["submit"] == "リセット") {
unset($_SESSION["nyuyoku2"]);
< nyuryoku2.html 読み込み >
} elseif ($_POST["submit"] == "戻る") {
< nyuryoku2.html 読み込み >
} else {
< メール送信等の処理 >
< セッション破棄 >
< kanryou.php読み込み >
}
break;
default:
< nyuryoku1.html 読み込み >
}
function entchk($act) {
< ここも $act の値によって switch で case 分けして処理 >
< 半角→全角、全角→半角、ひらがな統一、カタカナ統一等の処理 >
< 入力内容の正当性チェック >
< OK の場合のみ 配列 ($array) にセット >
< NG の場合はそれぞれのエラーメッセージを変数 $errstr にセット >
< 配列 $entchk = array($array, $errstr); を返す >
}
nyuryoku1.html 、nyuryoku2.html ではエラーメッセージの箇所に
<?= $entchk[1] ?>を入れ、hidden で "act" を渡します。
リセットボタンは $_SESSION["nyuyoku1"] または $_SESSION["nyuyoku2"] にそれぞれ値があるかないかで、
<input type="riset" ....> と <input type="submit"> を使い分けます。
あとは、セッションから必要なデータを htmlspecialchar($_SESSION["name"]) のような形で書き出しています。
ありがとうございます。
表示用HTMLと、起動ファイルのようなPHPファイルで作成する方法もよさそうだな、と考えておりましたので、詳しいご回答をいただけてとても勉強になりました。
ありがとうございました!!
No.5
- 回答日時:
私も基本的に下の方と同様、SESSION使っちゃいますね。
楽なので。>第1画面の入力エラーチェックは第2画面で行っています
個人的にはこの方法は嫌いかも。第1画面の入力エラーチェックは第1画面で行ってしまいます。
SESSIONだと確認画面のPGでも完了画面表示のPGでも、SESSION変数の値を拾うだけで済みますし。
ただしSESSIONは設定でタイムアウトもあり得ますから、入力途中で数時間放置すると、
今まで入れた値が消える可能性も(笑)
それがいやなら全てhiddenで渡していきます。
1本のPGで済ませたい場合でも、ファイルはそれぞれ分けて作成して1本にrequire、でしょうかね。
ありがとうございます。
やはり第1画面の入力値のチェックは第1画面で、ということですね。
SESSIONのタイムアウトには気をつけさせていただこうと思います!
すべてhiddenで、という方法も、検討してみようかと思います。
非常に勉強になりました。
No.4
- 回答日時:
すみません、間違いを書いてました。
正しくは以下です。
第1入力画面(nyuryoku1.php)
入力画面表示
サブミットでnyuryoku1.phpへ
入力チェック(エラー表示)
入力値をセションにセット
headerで第2入力画面へ(←ここ修正)
第2入力画面(nyuryoku2.php)
入力画面表示
サブミットでnyuryoku2.phpへ
入力チェック(エラー表示)
入力値をセションにセット
headerで確認画面へ
確認画面(kakunin.php)
確認項目の表示
サブミットでkakunin.phpへ
なんらかの処理
headerで完了画面へ
完了画面(kanryou.php)
完了画面表示
No.3
- 回答日時:
たぶん、別URLへジャンプすることができるかということですよね。
#2さんの解説にもありますが、Header関数を使ってHTTPヘッダに指定するのが一般的みたいです。
Header("Location: http://www.abc.com");
Header関数について
http://jp2.php.net/manual/ja/function.header.php
ありがとうございます。
header関数は知りませんでした!
他のURLにジャンプすることもできるのですね、非常に勉強になりました!
No.2
- 回答日時:
私だとこんな感じですかね。
一つのPHPファイルにするとメンテが面倒くさいので分けます。
第1入力画面(nyuryoku1.php)
入力画面表示
サブミットでnyuryoku1.phpへ
入力チェック(エラー表示)
入力値をセションにセット
headerで第1入力画面へ
第2入力画面(nyuryoku2.php)
入力画面表示
サブミットでnyuryoku2.phpへ
入力チェック(エラー表示)
入力値をセションにセット
headerで確認画面へ
確認画面(kakunin.php)
確認項目の表示
サブミットでkakunin.phpへ
なんらかの処理
headerで完了画面へ
完了画面(kanryou.php)
完了画面表示
ありがとうございます。
第1入力画面で入力された値は、第1入力画面のPHPファイル内で入力値チェック、という感じなのですね。
大変勉強になりました!!
No.1
- 回答日時:
デバッグの利便性を考え、それぞれ別ページに分けたほうが、どのページに問題があるのかをつかみやすいかとは思います。
第1入力画面で入力した値は、第2入力画面から確認画面に移る際に、一緒に受け渡せば問題ないのではないでしょうか。
思いつきなので、あくまでご参考までに。
例)
第1画面から送信されるデータ
★氏名(入力フォームから)
★住所(入力フォームから)
第2画面から送信されるデータ
氏名(第1画面から受け取ったデータを)
住所(第1画面から受け取ったデータを)
★アドレス(入力フォームから)
★一言(入力フォームから)
第3画面から送信されるデータ
氏名(第2画面から受け取ったデータを)
住所(第2画面から受け取ったデータを)
アドレス(第2画面から受け取ったデータを)
一言(第2画面から受け取ったデータを)
この回答への補足
ありがとうございます。
別ページに分けたほうがやはり利便性がいいですよね。
なんのエラーもなく値を受け渡すのは簡単なのですが、例えば第1画面の入力値にエラーがあった場合、どこにエラーがあったか&入力された値を第1画面に戻さないといけません(第1画面の入力エラーチェックは第2画面で行っています)。
この処理が実際に実現可能なのかとちょっと疑問に思ったのですが・・・。
もしよろしければアドバイス等をよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP php 入力画面から確認表示画面へ情報の受け渡しについて。 1 2023/06/07 18:00
- MySQL 「掲示板のログイン画面」はPHP~MySQLに「データベース認証のシステム」方式です。 1 2022/09/27 05:00
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- PHP php 確認表示画面で値をSESSIONから取り出す理由の解釈は正しいでしょうか? 1 2023/06/09 17:39
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP 掲示板のセキュリティについてアドバイスお願い致します 1 2023/08/11 20:44
- Excel(エクセル) エクセルVBA、間違っているコード内容を正して頂けませんか? エクセルワークシートに納品書を作ったの 2 2023/08/02 21:13
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP どうして送信されないのでしょうか? 1 2022/12/09 05:23
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ひとりひとり異なるURLを与える...
-
他のPCにメッセージを表示
-
値だけ送信してページは遷移さ...
-
アイフォン使ってたらちょくち...
-
VB2005 複数のフォームを同時...
-
ビジネスメールの敬称
-
エクセルVBA テキストボックス...
-
DATE型変数を初期化する方法
-
初歩的な事だと思います。 Sub...
-
数字以外の入力をエラーにする...
-
accessで該当するレコードがな...
-
テキストボックスの番号を使っ...
-
指定した演算を実施の結果を表...
-
Excel-VBAでInputBox+Pulldown...
-
DataGridView 列ごとの入力制限
-
テキストボックスの内容をOutlo...
-
EXCEL VBA で指定した範囲に入...
-
textboxに数字だけを入力させる...
-
textareaについて
-
excel vba でユーザーフォーム...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
php 確認表示画面で値をSESSION...
-
ワードプレスプラグイン MW WP ...
-
掲示板のセキュリティについて...
-
htmlからbatファイルを起動する
-
アイフォン使ってたらちょくち...
-
WordPressで画面還移なしの掲示...
-
ページ移動した場合の、フォー...
-
非同期通信で掲示板を作る際の...
-
メール送信フォームとhistory.b...
-
ヤフージャパンへの問合せ 「次...
-
大学の出欠確認でQRコードを読...
-
子画面から親画面に値を返す方法
-
ブラウザの「戻る」ボタンを押...
-
戻ると入力したフォームの内容...
-
VB2005 複数のフォームを同時...
-
入力フォームの確認画面からの...
-
メールフォームに添付ファイル...
-
docomoのsimロック解除について
-
accessでフォームを希望の入力...
-
値だけ送信してページは遷移さ...
おすすめ情報