• 締切済み

php セレクトボックス 分岐 わかりません・・・

php if文? セレクトボックスの選択に応じて、次ページで表示するものも変えたい。 授業評価アンケートのデータ収集システムを開発中です。 page1.php では、 年度(セレクトボックス)[nendo] 学年(セレクトボックス)[gakunen] クラス(セレクトボックス)[class] 科目名(テキストボックス)[kamokumei] 科目コード(テキストボックス)[kamokucode] 分類(テキストボックス)[kind] 履歴者数(テキストボックス)[people] を選択及び入力します。 page2.php では page1.php で選択及び入力された情報をPOST?hidden?などを利用し、 年度:2011 学年:1 クラス:1 科目名:国語 科目コード:11L901 分類:講義科目 履歴者数:40 のように表示させ、その下にアンケートの回答者数を入力する表を示します。 分類のセレクトボックスには4種類の項目があります。 講義科目・体育科目・実験科目・HR です。 分類により、アンケートの設問数が異なるようにしたいのです。 たとえば、 講義科目は設問が1~5。体育科目は1~8。実験科目は1~10。HRは11~15。 だとします。 page1.php 入力された「分類」に応じて、設問数の異なる、 page2.php を表示したいのですが、わかりません。 また、アンケートの表については、 A~F評価があり、 設問1のAならそのマスをname="1A"、設問2のBならname="2B",・・・というようにしています。 page3.php 入力したものを全て表示し、で確認ページとし、 page4.php で、「登録」ボタンを押すと、 年度 学年 ・ ・ ・ 履歴者数 ・ ・ ・ 1A 1B ・ ・ ・ 15F (↑のような構造のtableも用意済み) のデータをmysqlに挿入します。 「分類」による分岐をせず、 page2.phpで、設問数1~5の場合で、データの挿入には成功しました。 6~15については、空となっています。 「分類」により設問数の異なるpage2.phpを表示し、 現在の段階のように、データを挿入できるような形態にできませんでしょうか? どうかお願いしたします!!!!!!!!!! 時間がありません>< お願いします!!!!

みんなの回答

回答No.4

こんばんは。 >require_once '/HTMLファイルのディレクトリ/kougi.html'; >のところはphpではいけないのでしょうか? ちょっと???ですが・・・、何でもいいですよ。テキストでも・・・。 page1.php これは問題ないですよね? 普通にフォームに入力(選択)してもらって、page2.phpを呼べばいいです。 page2.php >「分類」によって、page2.phpで表示されるアンケートの設問数を変えたいのです。 はい。 なので、設問数が違うhtml(phpでもいいけど、phpにする必要もない・・・)を用意しておきます。 >page1で選択した分類が・・・という風にしたいです。 そうです。 なので、require_onceでif文を書いて、読み込むhtmlを変えるんです。 これでpage1.phpで選択された分類によって、表示するページ(設問数が変化する)を変えることができます。 それぞれに用意しているhtmlは、それぞれの入力フォームでpage3.phpを呼び出せばいいです。 page3.phpは、どこから呼ばれても関係なく、page2.phpの入力(選択)結果を表示すればいいだけですし、 同様にpage4.phpも、入ってきたリクエストだけDBに入れればいいだけです。 page1.phpからpage2.phpにPOSTしたデータは、前述のように、page2.php側で$_POSTで取れますし、includeするhtmlへの渡し方も、前述の通りでOKです。

回答No.3

こんばんは。 できたのかな・・・? >すみません、たぶん後者です。 例えば・・・、 page1.php <?php なんやかんや・・・ <form action="/page2.php" method="post"> <select name="nendo"> <option value="2010">2010</option> <option value="2011">2011</option> 略 </select> </form> なんやかんや・・・ ?> page2.php <?php なんやかんや・・・ $nendo=$_POST['nendo']; なんやかんや・・・ require_once '/HTMLファイルのディレクトリ/kougi.html'; ?> kougi.html <html> <head>略</head> <body> <?=$nendo?> または <?php echo $nendo?> なんやかんや・・・ </body> </html> みたいな感じです・・・。 これでpage1.phpからPOSTされた年度が表示されます。

y_okamoto_2918
質問者

お礼

わざわざありがとうございます!! まだできていません。 学校のPCで開発しているのですが、土日に工事で停電だったものですから、作業ができずでした・・・・ require_once '/HTMLファイルのディレクトリ/kougi.html'; のところはphpではいけないのでしょうか? page1.php では年度(セレクトボックス)・学年(セレクトボックス)・クラス(セレクトボックス)・科目名(テキストボックス)・科目コード(テキストボックス)・分類(テキストボックス)・履歴者数(テキストボックス)を入力します。 そしてpage2.phpに 「分類」によって、page2.phpで表示されるアンケートの設問数を変えたいのです。 page2.phpで表示される内容について、 page1で選択した分類が 講義科目なら、設問数5のアンケート 実験科目なら、設問数10のアンケート 選択科目なら、設問数15のアンケート HRなら、設問数15~-20のアンケート という風にしたいです。 page2.phpだけで表示できないのなら、他の方法でもいいのですが、わかりません。 そして、アンケート結果入力をして、 page3.phpで確認作業 page4.phpでDBへ登録。 という風にしたんですが、 教えて頂いたものを活用する方法がわかりません・・・すみません よろしくおねがいします!

回答No.2

こんにちは。 考え方は、いたって単純です。 例えば・・・、 kougi.html(設問1-5) taiiku.html(設問1-8) など、レイアウトが違うHTMLファイルを作成しておきます。 ある程度は静的に書けばいいのですが、どうしても動的に表示させたいものがあるでしょう。 例えば、前の画面で入力された値など。 この場合、HTML内の表示させたい箇所に、 <?php echo $変数名?> (ショートタグが使える設定になっているなら<?=$変数名?>でOK) と書いてやります。 で、問題のpage2.phpですが、 これはクラスになってるんですかね? それともただのPHPファイル? 前者の場合は、 final class page2{ // エントリポイントのファンクション、名前は適当・・・ public function execute(){ $variables=array(); $variables['変数名(これはHTMLファイルに書いた変数名※$記号はナシ!!)']='値'; // 必要なものを追加・・・。よーするに連想配列 if(HTMLの呼び出し分岐){ $html='/HTMLファイルのディレクトリ/kougi.html'; }elseif(同様){ $html='/HTMLファイルのディレクトリ/taiiku.html'; }// ・・・以下略 ob_start(); extract($variables, EXTR_OVERWRITE); // これでHTMLに出力する変数の配列を展開しています。 require_once $html; // 実際にHTMLファイルをrequire(includeでもOK)する。 $output = ob_get_clean(); // ここでHTMLに変数展開されたもの(出来上がり)が$outputに入ります。 // headerを吐くならここでやっておく(キャッシュ操作とか・・・) exit($output); // echoと同じ。もうやる事がないのでexit() } } 後者の場合は、上からclass定義とfunction定義を外せばいいです。 特にheaderとかを吐かないなら、ob_start()とかも不要です。 っちゅうか、クラス化されていない場合はファイルの上のほうでheader書いてるわな・・・普通。 いずれにしても、HTMLとPHPを分けておいた方が楽ですね。

y_okamoto_2918
質問者

お礼

回答ありがとうございます!! すみません、たぶん後者です。 できるかわかりませんが、参考にやってみます!! 丁寧な回答ありがとうございます!! わからなければまたお願いするかもしれませんが、 そのときはよろしくお願いします・・・

回答No.1

こんばんは。 page2.phpでの画面の出し分け(設問数が違うので、何らかの方法で分けないといけないが・・・)はどのようにおこなう予定ですか? 1.htmlの中にPHPコードが書いてある? 2.htmlは外部ファイルにして、PHPでincludeしている? 1ならpage1.phpで呼び分けないといけません。 2ならpage2.phpで分岐処理を書いて、includeするhtmlを振り分けます。 個人的には2が好きですが・・・。

y_okamoto_2918
質問者

お礼

こんばんは! 1で行おうとしました。 何故、知識が浅いもので、if文でできるのかなとか思ったのですが、うまくできずです。 include ちらっと参考書か何かで見たことがある程度で、実用方法が全然わかりませn;; 直接活かせるようなサンプルソースなど頂けるととても助かります>< どうぞお願いします!

関連するQ&A