こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

複数のデータをPOSTで渡す場合について(ソース一部省略)

教えてくださいm(。≧Д≦。)m PHP初心者です。。
-----------------------------------------------------------
<FORM action="<? echo $PHP_SELF; ?>" method="POST">
print "お名前:<BR>\n";
print "<input type=\"text\" name=\"handle\" size=\"16\" maxlength=\"30\" value=\"$handle\"><BR>\n";
↓この表示も違うと思うのですが…--------
print "性別:<BR>\n";
print "<input type=\"radio\" name=\"sex[0]\" value=\"$sex[0]\" checked>男性<BR>\n";
print "<input type=\"radio\" name=\"sex[1]\" value=\"$sex[1]\">女性<BR>\n";------------
print "PRポイント:<BR>\n";
print "<input type=\"text\" name=\"body\" size=\"16\" maxlength=\"30\" value=\"$body\"><br><br>\n";
<input type=\"submit\" value=\"次の人\"></CENTER>
print "<input type=\"hidden\" name=\"handle\" value=\"" . $_POST['handle'] . "\">\n";
print "<input type=\"hidden\" name=\"sex\" value=\"" . $_POST['sex'] . "\">\n";
print "<input type=\"hidden\" name=\"body\" value=\"" . $_POST['body'] . "\">\n";
----------------------------------------------------------------
↑この前に「人数は?」というSELECTで数字を選ぶものがありその人数に合わせて「次の人」を押すと入力ページが繰り返されています。
例えば3人を選ぶと3回入力画面が続くわけですが、その後そのデータを引継ぎたいのです。
一人目 名前の表示<br>PRの表示<br>(女性を選択した場合)全ての男性の名前の表示
二人目、三人目も同じように表示したいのです。。
どのように作ればいいでしょうか?m(。≧Д≦。)m

投稿日時 - 2006-12-18 02:16:16

QNo.2609272

すぐに回答ほしいです

質問者が選んだベストアンサー

よく質問の意味が分からないのですが、

for($i=1;$i<=[選択した人数];$i++){
if ($i==[今何人目]) {
#○人目の処理
} else {
#処理
}
}
とすればいいと思います。

あと、気になったのは性別のradioボタンで違うnameを入れているので、どちらともチェック可能です。

投稿日時 - 2006-12-18 10:49:02

補足

さっそくのお返事ありがとうございますm(。≧д≦。)m

文字数の制限で消したりを繰り返し、うまく伝わりにくい文章になってしまっていました・・・。
すみません。。。

SELECTで選択した人数文、入力する画面(名前、性別、PR)を繰り返す処理は出来ているのです。
その次でつまづいています。

1($_POST['bangou'])人目です
名前
性別
PR
 「次の人へ」
--------------
2($_POST['bangou'])人目です
名前:
性別:
PR:
 「次の人へ」
--------------
3($_POST['bangou'])人目です
名前:
性別:
PR:
↓ここでif文を使い、($_POST['bangou']) と選んだ人数が同じだと「次へ」、違うならば「次の人へ」
という処理をしています。

「次へ」の場合に、
1人目 名前の表示<br>PRの表示<br>(女性の場合、全ての男性の名前の表示)または(男性の場合、全ての女性の名前の表示)

2人目以降も同じように表示させたいと思っています。
これでも上手く伝わっているか不安なのですが…。

どうか宜しくお願いしますm(__)m

投稿日時 - 2006-12-18 11:10:09

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

よく分かりませんでした。
$_POST['bangou']には選択された人数が入っているのですよね?

>↓ここでif文を使い、($_POST['bangou']) と選んだ人数が同じだと「次へ」、違うならば「次の人へ」
>という処理をしています。

これはどのような意味でしょうか?
($_POST['bangou']) と選んだ人数が同じ
とのことですが、$_POST['bangou']と選択した人数は違うのですか?
その場合、$_POST['bangou']はどこから来たのでしょうか?

>「次へ」の場合に、
>1人目 名前の表示<br>PRの表示<br>(女性の場合、全ての男性の名前の表示)または(男性の場合、全ての女性の名前の表示)

>2人目以降も同じように表示させたいと思っています。

すでに入力した人を表示させるということでしょうか?
表示するところのソースを補足していただければ回答できるかもしれません。

投稿日時 - 2006-12-19 13:14:08

補足

何度もお返事ありがとうございますm(。≧д≦。)m

また補足し忘れていました・・・m(__)m
人数は
print "人数を選択してください<BR>\n";
print "<SELECT NAME=\"ninzu\">\n";
print "<OPTION value=\"3\" SELECTED>3</OPTION>\n";
print "<OPTION value=\"4\">4</OPTION>\n";
print "<OPTION value=\"5\">5</OPTION>\n";

なので、$_POST['ninzu'] 。

$_POST['bangou']は1人目、2人目・・・の数字の部分です。

>すでに入力した人を表示させるということでしょうか?
そうですね。
そこからまた先はあるのですが、今はとりあえず入力した名前、PR、そして選択した性別を表示させる方法でつまづいているという感じです(´・ω・`;)

表示させる所のソースを考えていた時に気付いたのですが、根本的に間違えているような気がしてきました・・・。
HTMLのソースだと表示部分は↓のような感じになります。

(一人目の名前)さん
質問相手を選択して下さい</B><br>
<br>
<FORM ACTION=・・・  METHOD=post>
<INPUT TYPE=radio NAME=order1 value=3>●●<br>
↑1人目が女性の場合はココにredioボタンで選択できるよう全ての男性の名前が表示されます。(1人目が男性の場合は、全ての女性の名前の表示)
PRコメント<br>△△<br>
↑1人目が入力したPRコメントの表示部分
<INPUT TYPE=hidden NAME=NAME1 value=○○>一人目の名前
<INPUT TYPE=hidden NAME=NAME2 value=○○>二人目の名前
<INPUT TYPE=hidden NAME=NAME3 value=●●>三人目の名前
<INPUT TYPE=hidden NAME=SEX1 value=女性>性別
<INPUT TYPE=hidden NAME=SEX2 value=女性>
<INPUT TYPE=hidden NAME=SEX3 value=男性>
<INPUT TYPE=hidden NAME=PR1 value=△△>PR
<INPUT TYPE=hidden NAME=PR2 value=△△>
<INPUT TYPE=hidden NAME=PR3 value=△△>
<INPUT TYPE=hidden name=ninzu value=3 >選択した人数

<INPUT TYPE=SUBMIT VALUE=次へ>
</FORM>

勉強であるサイトをまねして作っているのですが、表示部分のソースが↑のようになっていました。

HTMLのソースを書いても・・・回答していただくのは難しい・・・ですよね。。
もう一度最初から見直してみたいと思います。

もし何かお気づきの事ありましたら、補足していただけければ助かります。
何度もお返事いただいたのに、すみませんでした。。
ありがとうございましたm(。≧д≦。)m

投稿日時 - 2006-12-20 11:55:13

ANo.2

配列を使うことも考えられますが、
一番簡単なのは、文字列を区切り文字を使ってどんどん連結していけば?
簡単に書くとこんな感じ。
FORMタグとかは省略します。

<?php

$hidden_var = $_POST['hidden_var'];
$hidden_var = $hidden_var."@".$_POST['var'];

print "<input type=\"text\" name=\"var\">";
print "<input type=\"hidden\" name=\"hidden_var\" value=\"".$hidden_var."\">";


?>

後は必要になったときに@を区切り文字でsplitすれば取れますね。
ただしこの場合は、名前等々に@は使えないので、区切り文字を何にするかは
気をつけてください。

投稿日時 - 2006-12-19 00:18:51

補足

お返事ありがとうございますm(。≧д≦。)m

教えていただいた方法も試してみたのですが、うまくいきませんでした・・・。。
$hidden_var ものを使った事がなかったので、ちゃんと書けてないんだとは思うのですが・・・。
もう少しやってみます!


もし、配列を使うとしたらどのようなソースになるのかも教えていただけたらとても助かりますm(。≧д≦。)m

宜しくお願いします。。

投稿日時 - 2006-12-20 11:18:14

あなたにオススメの質問