• ベストアンサー

ページが進むごとに、数字も一つずつ増えていく・・・

はじめまして、PHP初心者です。 教えてくださいm(__)m <FORM action="play.php" method="post"> <SELECT NAME="ninzu"> <OPTION value="4" SELECTED>4人 <OPTION value="5">5人 <OPTION value="6">6人 <OPTION value="7">7人 </SELECT>人 <INPUT type="SUBMIT" value="次へ"> </FORM> 4人を選んだら、次のページで「1人目は・・・」、次のページで「2人めは…」最後のページで「4人目は・・・」となるようにしたいのです。 7人を選んだら、次のページで「1人目は・・・」・・・最後のページで「7人目は・・・」と表示させたいのですが、どのような処理が必要でしょうか? 色々調べてみたのですが、上手くいきませんでした…。 宜しくお願いしますm(。≧д≦。)m

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

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

サンプルソース。そのまま動きます。 <html> <hrad> </head> <body> <FORM action="play.php" method="POST"> <?PHP if ($_POST['ninzu']) { # カウント。数値がない場合は初回なので設定する。 if ($_POST['ninzu2']) { $_POST['ninzu2']++; } else { $_POST['ninzu2'] = 1; } for($i=1;$i<=$_POST['ninzu'];$i++){ $name = 'name_' .$i; # 終了 if ($_POST['ninzu'] < $_POST['ninzu2']) { print $_POST[$name] ."<br>\n"; # 入力途中 } else { if ($i == $_POST['ninzu2']){ print $i ."人目は<input type=\"text\" name=\"$name\"><br>\n"; } else { print "<input type=\"hidden\" name=\"$name\" value=\"" .$_POST[$name] ."\">\n"; } } } if ($_POST['ninzu'] < $_POST['ninzu2']) { print "以上<br>\n"; print "<INPUT type=\"SUBMIT\" value=\"もどる\">\n"; } else { print "<input type=\"hidden\" name=\"ninzu\" value=\"" .$_POST['ninzu'] ."\">\n"; print "<input type=\"hidden\" name=\"ninzu2\" value=\"" .$_POST['ninzu2'] ."\">\n"; print "<INPUT type=\"SUBMIT\" value=\"次へ\">\n"; } # 何人かを選択させる } else { print "<SELECT NAME=\"ninzu\">\n"; print "<OPTION value=\"4\" SELECTED>4</OPTION>\n"; print "<OPTION value=\"5\">5</OPTION>\n"; print "<OPTION value=\"6\">6</OPTION>\n"; print "<OPTION value=\"7\">7</OPTION>\n"; print "</SELECT>人\n"; print "<INPUT type=\"SUBMIT\" value=\"次へ\">\n"; } ?> </FORM> </body> </html>

noname#37436
質問者

お礼

追記:最後のページでtextに入力したものが出てくる表示は特に必要ないものになります。(ランダム表示の数字をページページに表示させたい為です)

noname#37436
質問者

補足

サンプルを書いていただきありがとうございますm(。≧д≦。)m 試しにやってみると希望していたものになりました!! すごく嬉しかったです! ありがとうございました★ でも…ここで新たな問題が発生してしまいました…(´;ω;`) >print $i ."人目は<input type=\"text\" name=\"$name\"><br>\n"; の部分の「<input type=\"text\" name=\"$name\">」なのですが、textではなくランダム表示になりました。 ただのランダムなら出来るのですが…。 例えば4人を選ぶと ・1人目は2番 ・2人目は4番 ・3人目は3番 ・4人目は1番 というように、人数分の数字がランダムで割り当てられる感じです。 ---------------------------------------------- $length = count($bangou) - 1; srand( (double)microtime()*1000000 ); $num=round( rand(0,$length) ); print("$bangou[$num]"); ----------------------------------------------- ただのランダムだと↑な感じでいいんだと思うのですが…。(これも違ってたりしちゃってたらどうしよ…) 選んだ人数分の数字をランダムで割り当てるのは難しいでしょうか?

その他の回答 (3)

  • foreach
  • ベストアンサー率51% (43/84)
回答No.4

#1です。 自宅のPCのOSを入れ替えてたのでお返事が遅くなりました。 > >2人目以降は3種類のうち好きな方法で値を渡していけばいいのではないでしょうか? > というのが勉強不足の為ちょっと分かりませんでした…。 > どういう事なのでしょうか? あくまでも一般的に。ではありますが、<a hre="hogehoge">のようにAタグで「次へ」が囲まれている場合はGETを使います。 フォームのボタンで「次へ」を表現している場合はPOSTを使います。 もちろんこれに準じる必要はありませんが、このほうが技術的にはスマートだと思います。 こういう意味で、どの方法でもできるけど「次への表現の仕方」次第でお好みの方法をご検討ください。という意味です。 1人目をPOSTと言い切ったのは、フォーム項目があるので前述の通りPOSTを使うべきだと判断したからです。 個人的な意見ですが、今回のサイトの場合はあえてセッションを使う必要はないかと思います(別に使ってはいけないという意味ではありません)。

noname#37436
質問者

お礼

いえいえ、ありがとうございますm(__)m 丁寧に教えていただいてありがとうございます! とても分かりやすかったです! foreachさんがおしゃっているように、フォームを使っていたので今回もPOSTという風に考えていました。いつもPOSTを使う方法ばかりでしたので、他の考えがあまり頭になかったっていうのもあるのですが。。。 まだまだ勉強しないといけない事がたくさんです…(´・ω・`;) ありがとうございました!

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.3

何でランダムなのかが分かりませんが、 四人を入れた後に、最後に配列に入れて、array_randとかで抜き出したりしたら駄目なのでしょうか。 駄目な場合はいくつか方法は考えられますが、 while(1){ $num = rand(1, $_POST['ninzu']); $name = 'name' .$num; if ($_POST[$name]) { continue; } } とか。 扱いを間違えると無限ループに陥りそうですが。 配列に入れてarray_randをするか、 数字を入れてrandで取るかですかね。

noname#37436
質問者

お礼

何故ランダムなのかというと、簡単なゲームみたいなものを作っているからなのです。 携帯用の簡単なものなのですけど^^; 教えていただいたものを少しだけ手直ししてやってみたらできました! 何度もありがとうございましたm(。≧д≦。)m

  • foreach
  • ベストアンサー率51% (43/84)
回答No.1

4人でも7人でも同じですが、フォーム項目のninzuを1人目~のページに渡していって、マックス値であるninzuと同じになったら、次へを表示させないようにしてあげたら出来ます。 PHPの場合、ページ遷移時に値を維持する方法は一般的に3種類あります。 get、post、セッションの3種類。 今回の場合は最初の人数選択から1人目のページ遷移時はPOST。2人目以降は3種類のうち好きな方法で値を渡していけばいいのではないでしょうか?

noname#37436
質問者

お礼

お返事がおそくなってしまってごめんなさいm(。≧д≦。)m なるほど!そういう風にしたらいいのですね。 >2人目以降は3種類のうち好きな方法で値を渡していけばいいのではないでしょうか? というのが勉強不足の為ちょっと分かりませんでした…。 どういう事なのでしょうか?

関連するQ&A