• ベストアンサー

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

はじめまして、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

  • phpについての簡単な質問です

    下のようなphpコードを見たのですが、 (http://okwave.jp/qa/q5324570.htmlのベストアンサー) <form method="post" action="{$_SERVER["PHP_SELF"]}"> <select name="category" id="category" onchange="this.form.submit();"> <option value="0"{$selected["category"]["0"]}>A</option> <option value="1"{$selected["category"]["1"]}>B</option> <option value="2"{$selected["category"]["2"]}>C</option> <option value="3"{$selected["category"]["3"]}>D</option> </select> </form> {$selected["category"]["0"]}という部分がよくわかりません。 二次元配列みたいなものなのでしょうか? ぜひとも教えてください。

  • submit

    例えば <form method="get" action="このページ自身"> <select name="type"> <option value="myA" selected>A</option> <option value="myB">B</option> <option value="myC">C</option> </select> <input type="submit" name="sbm" value="GO" /> となっていて これを onchange を用いて選択が変わったときに submit ボタンを自動で押したいのです。なおかつ submit ボタンを最初から隠したいのです。 誰か教えてください。

  • 1つのformに複数のaction

    質問です。 下のようにiframeが2つあり、一つのformによる結果をそれぞれに反映させる検索ページ(kensaku.php)があります。 <script> function sample(F) { F.action = 'ichiran_map.php' F.target = 'ichiran_map' F.submit(); setTimeout(function(){ F.action = 'ichiran.php' F.target = 'ichiran' F.submit(); },1); return false; } </script> <iframe src="A.php" name="A" > <iframe src="B.php" name="B" > <form method="post" onsubmit="return sample(this)"> <select name="area"><option selected value="">エリア選択 </option> <option value="01">あいうえお</option> <option value="02">かきくけお</option> </select> <select name="price"> <option selected value="">価格帯選択</option> <option value="01">1000円未満</option> <option value="02">1001円~2000円</option> <input type=submit value="絞込" /></form> 別のページ(例えばindex.php)に同じようなformを作り、検索結果をこの検索ページに反映させたいと思います。この場合、一つのformに3つのactionを設定したいのですが、どうすれば実現できるでしょうか? 表示画面はkensaku.phpにしたいのですが、そのkensaku.phpにある2つのiframe(A.phpとB.php)にformで指定した値を反映させたいのですが、どうすれば実現できるのでしょうか?どなかた教えて下さい。

  • 初心者です。一つのformで2つのactionを実現する方法を教えて下

    初心者です。一つのformで2つのactionを実現する方法を教えて下さい。 iframeが2つあり、一つのformによる結果をそれぞれに反映させたいのですが。 <iframe src="A.php" name="A" > <iframe src="B.php" name="B" > フォーム↓ <form method="post"> <select name="area"><option selected value="">エリア選択 </option> <option value="01">あいうえお</option> <option value="02">かきくけお</option> <option value="03">さしすせそ</option> </select> <select name="price"> <option selected value="">価格帯選択</option> <option value="01">1000円未満</option> <option value="02">1001円~2000円</option> <option value="03">2001円~3000円</option> <option value="04">3001円以上</option></select> <input type=submit value="絞込" /></form> この結果をA.phpとB.phpに反映させて、それぞれのiframeに表示させたいのですが。 javaを使えばできるそうなのですが、やり方ご存知の方いらっしゃれば教えてくれませんか?よろしくお願いします。

  • 初心者です。一つのformで2つのactionを実現する方法を教えて下

    初心者です。一つのformで2つのactionを実現する方法を教えて下さい。 iframeが2つあり、一つのformによる結果をそれぞれに反映させたいのですが。 <iframe src="A.php" name="A" > <iframe src="B.php" name="B" > フォーム↓ <form method="post"> <select name="area"><option selected value="">エリア選択 </option> <option value="01">あいうえお</option> <option value="02">かきくけお</option> <option value="03">さしすせそ</option> </select> <select name="price"> <option selected value="">価格帯選択</option> <option value="01">1000円未満</option> <option value="02">1001円~2000円</option> <option value="03">2001円~3000円</option> <option value="04">3001円以上</option></select> <input type=submit value="絞込" /></form> この結果をA.phpとB.phpに反映させて、それぞれのiframeに表示させたいのですが。 javaを使えばできるそうなのですが、やり方ご存知の方いらっしゃれば教えてくれませんか?よろしくお願いします。

    • ベストアンサー
    • Java
  • select値でのフォームのaction値の変更

    以下のようなフォームでselectの値によって PHPでactionのURLを変更させるようなことは出来るでしょうか。 <form name="form" method="GET" action="ここをselect値により変更"> <input type="text" name="word" id="word" value="" /> <select name="select" id="select"><option selected="selected" value="01">値01</option> <select name="select" id="select"><option selected="selected" value="02">値02</option> <select name="select" id="select"><option selected="selected" value="03">値03</option> </select> </form> 以上、どうぞ宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • 複数 selectフォームから今回onchangeで変更した項目を知りたい

    phpプログラムで、画面上にある複数のselectフォームを使用してselectフォームの内容が選択されれば、selectフォームの値を取得してデータの 抽出を行い、選択された内容の表示を行なおうと思っています。 onChange='submit()' で選択された内容をpostで受け取って再表示を行い、項目にあったデータを取り出すことは出来てますが、直近に変更された項目が何か(どのselectフォームの内容(年度、組織、社員及び商品の項目)が変更されたのか?)を知りたいのですが、いい方法を教えていただけないでしょうか? よろしくお願いします。 sample.phpの内容 <?php $nen = $_POST['nend']; $sosi = $_POST['so']; $syin = $_POST['sa']; ?> <html> <body> <form action="sample.php" method="post"> <select name='nend' onChange='submit();'> <option value=2007 selected>2008</option> <option value=2006>2007</option> <option value=2005>2006</option> </select> <select name='so' onChange='submit();'> <option value=0 selected>全社</option> <option value=01 >本社</option> <option value=02 >A支店</option> <option value=03 >B支店</option> </select> <select name='sa' onChange='submit();'> <option value=0 selected>社員</option> <option value=1 >田中</option> <option value=2 >佐藤</option> <option value=3 >鈴木</option> </select> <select name='sy' onChange='submit();'> <option value=0 selected>商品</option> <option value=1 >A商品</option> <option value=2 >B商品</option> <option value=3 >C商品</option> </select> </form> </body> </html>

    • ベストアンサー
    • PHP
  • セレクトボックスの内容を次のページで受け取る方法

    <form action="./check.asp" method="POST"> <table> <tr> <td> <select name="year"> <option value="2006" >2006</option> <option value="2007" >2007</option> <option value="2008" >2008</option> </select> </td> </tr> <tr> <td align="center"><input type="submit" value="確認する"></td> </tr> </table> </form> として 次のページで YEAR =Trim(request("year")) Response.Write YEAR で受け取り表示しようとしていますが取れません。なぜですか?教えてください

  • 検索機能について

    <form action="******"method="post> 選択名<BR> <select name="数字"> <option value="1">1 <option value="2">2 <option value="3">3 </select><BR> <input type="submit" value="OK"> </form> 上のフォームで転送した時に1.2.3のページを表示できるようにしたいのですが、PHPスクリプト?を、どう書けばいいか教えて下さい。

    • ベストアンサー
    • PHP
  • formを連続してピッタリと上下に並べたいのですが

    DreamveaverでHTMLの編集をしております。 formを連続してピッタリと上下に並べたいのですが、 どうしてもformとformの間に隙間ができてしまいます。 これは仕方がないのでしょうか? 具体的には <form name="form1" method="post" action=""> <select name="select1"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <input type=submit value="order"> </form> <form name="form1" method="post" action=""> <select name="select2"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <input type=submit value="order"> </form> な感じなんですが。 どなたかアドバイスいただけると嬉しいです。