プロが教えるわが家の防犯対策術!

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を表示し、
現在の段階のように、データを挿入できるような形態にできませんでしょうか?



どうかお願いしたします!!!!!!!!!!
時間がありません><

お願いします!!!!

A 回答 (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です。
    • good
    • 0

こんばんは。



できたのかな・・・?

>すみません、たぶん後者です。
例えば・・・、

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された年度が表示されます。
    • good
    • 0
この回答へのお礼

わざわざありがとうございます!!

まだできていません。
学校の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へ登録。


という風にしたんですが、
教えて頂いたものを活用する方法がわかりません・・・すみません


よろしくおねがいします!

お礼日時:2011/01/17 17:09

こんにちは。



考え方は、いたって単純です。
例えば・・・、

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を分けておいた方が楽ですね。
    • good
    • 0
この回答へのお礼

回答ありがとうございます!!

すみません、たぶん後者です。


できるかわかりませんが、参考にやってみます!!

丁寧な回答ありがとうございます!!

わからなければまたお願いするかもしれませんが、
そのときはよろしくお願いします・・・

お礼日時:2011/01/15 19:54

こんばんは。



page2.phpでの画面の出し分け(設問数が違うので、何らかの方法で分けないといけないが・・・)はどのようにおこなう予定ですか?
1.htmlの中にPHPコードが書いてある?
2.htmlは外部ファイルにして、PHPでincludeしている?

1ならpage1.phpで呼び分けないといけません。
2ならpage2.phpで分岐処理を書いて、includeするhtmlを振り分けます。

個人的には2が好きですが・・・。
    • good
    • 0
この回答へのお礼

こんばんは!


1で行おうとしました。
何故、知識が浅いもので、if文でできるのかなとか思ったのですが、うまくできずです。

include
ちらっと参考書か何かで見たことがある程度で、実用方法が全然わかりませn;;


直接活かせるようなサンプルソースなど頂けるととても助かります><


どうぞお願いします!

お礼日時:2011/01/15 02:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!