• ベストアンサー

テキストフォームからの受け取り

初めまして、よろしくお願いします。 PHPを使ってのことですが まず、Aというフレームに作ってあるテキストフォームが10個あって、そこに文字が含まれている分だけBフレームにテーブルを自動生成して表示するプログラムを組みたいのです。 例えば、5個のテキストフォームに文字が入っていたら5個のテーブルを。3個なら3個のテーブル・・・と表示される状態にしたいのですが。 Aフレームのテキストフォームに入っている文字を読み取り、Bフレームに書き出すところだけでも結構です。 よろしくお願いします。

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

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.4

こんにちは。 <frameset cols="30%,*"> <frame src="./input.php" name="f_top"> <frame src="./tdisp.php" name="f_bot"> </frameset> ---- input.php <form action="tdisp.php" method="post" target="f_bot" name="tinput"> <input type="text" name="txData[]"> //これを10個 <input type="text" name="txData[]"> <input type="text" name="txData[]"> <input type="submit" value="テーブル生成"> </form> ---- tdisp.php <?php $txDate = $_POST['txDate']; // テキストフィールドの値を取得 print "<table width=\"200\" border=\"1\"> // txDateの数ループ for ( $i = 0; $i < count($txDate); $i ++ ) { // 入ってない場合は書き出しを終了 if ( empty($txDate) ) { break; } print "<tr><td>" . $txDate[$i] . "</td></tr>\n"; } print "</table>\n"; -------------------------------------------------------------- >Aフレームのテキストフォームに入っている文字を読み取り、Bフレームに書き出すところだけでも結構です。 もし、これが、Bフレームにリンクが用意されていてそれを選択すると Aフレームにあるテキストを読み取ってということであれば、 Bフレームに以下のJavaScriptが必要になります。 <script type="text/javascript"> <!-- function createTable () { top.f_top.tinput.submit(); } //--> </script> ・・・ <a href="JavaScript:createTable();">テーブル生成</a> --------------------------------------------------------- 的を得ていなかったら申し訳ないのですが補足お願いいたします。

okcoce
質問者

お礼

長文のご解説ありがとうございました! 大変役に立ちました!!

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

もしデータの受渡しがわからないのでしたら こんな感じです。 ベースのhtml(base.htm)を左右にわけて 1.phpと2.phpがあるとして //base.htm <frameset cols="50%,*"> <frame src="1.php" name="a_frame"> <frame src="2.php" name="b_frame"> </frameset> //1.php <form action="2.php" target="b_frame"> ・・・・ </form> 余談ですがjavascriptで書くとこんな感じです //base.htm <html> <frameset cols="50%,*"> <frame src="1.htm" name="a_frame"> <frame src="2.htm" name="b_frame"> </frameset> </html> //1.htm <form> 1.<input type="text"><br> 2.<input type="text"><br> 3.<input type="text"><br> 4.<input type="text"><br> 5.<input type="text"><br> 6.<input type="text"><br> 7.<input type="text"><br> 8.<input type="text"><br> 9.<input type="text"><br> 10.<input type="text"><br> <input type="button" onClick="send(this.form)" value="send"> </form> <script language=javascript> function send(num){ t=parent.b_frame.document.getElementById("t") var t_body=""; for (var i=1;i < num.length -1 ;i++){ if (num[i-1].value!=""){ t_body +="<tr><td>"+num[i-1].value+"</td></tr>"; } } t.innerHTML="<table border=1>"+t_body+"</table>"; } </script> //2.htm <span id="t"></span>

okcoce
質問者

お礼

余談のスクリプトが意外と役に立ちました♪ ありがとうございました!!

すると、全ての回答が全文表示されます。
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

予想で。 Aページ <input type="text" name="txt[]"> <input type="text" name="txt[]"> <input type="text" name="txt[]"> ・・・(10個作る) Bページ foreach ($_POST['txt'] as $tx) { print "<table border=\"1\"><tr><td>$tx</td></tr></table>\n"; }

すると、全ての回答が全文表示されます。
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 テキストフォームに入った文字列をテーブルに書き出すということでしょうか? 例えば、1~10のうちの3,5,7に「あいうえお」がそれぞれ入っていたとして、 それをBで受け取り、 あいうえお あいうえお あいうえお とテーブルのセルに出すのか、 あいうえお 毎のテーブルがあるのか。 テーブルの表示の仕方を補足お願いいたします。

okcoce
質問者

補足

ご回答ありがとうございます。 補足します。 まず前提としてAフレームに10個のテキストフォームがあり、そこにある操作によって文字列等が入力されます。 次にその10個のテキストフォームには1個目から順に文字列等が入り、飛び越して空白のテキストフォームはないこととします。 つまり、空白があればその後のテキストフォームも全部空ということ。 そのあとにBフレームがリンクなどにより呼び出された時に、自動でAフレームのテキストフォームから文字列等が入っている分と同じ数だけのセルを生成し表示する。 つまり、テキストフォームは10個常にあるがそのうちの3個にしか文字列等が入力されていなければ3個のセルしか生成しないということです。テーブルは1個です。 この説明で伝わりますでしょうか。

すると、全ての回答が全文表示されます。

関連するQ&A