準・究極の選択

初めまして、よろしくお願いします。

PHPを使ってのことですが

まず、Aというフレームに作ってあるテキストフォームが10個あって、そこに文字が含まれている分だけBフレームにテーブルを自動生成して表示するプログラムを組みたいのです。

例えば、5個のテキストフォームに文字が入っていたら5個のテーブルを。3個なら3個のテーブル・・・と表示される状態にしたいのですが。

Aフレームのテキストフォームに入っている文字を読み取り、Bフレームに書き出すところだけでも結構です。

よろしくお願いします。

A 回答 (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>

---------------------------------------------------------

的を得ていなかったら申し訳ないのですが補足お願いいたします。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/09/23 23:58

もしデータの受渡しがわからないのでしたら


こんな感じです。
ベースの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>
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/09/23 23:57

予想で。


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";
}
    • good
    • 0

こんにちは。



テキストフォームに入った文字列をテーブルに書き出すということでしょうか?

例えば、1~10のうちの3,5,7に「あいうえお」がそれぞれ入っていたとして、
それをBで受け取り、

あいうえお
あいうえお
あいうえお

とテーブルのセルに出すのか、

あいうえお

毎のテーブルがあるのか。

テーブルの表示の仕方を補足お願いいたします。

この回答への補足

ご回答ありがとうございます。
補足します。

まず前提としてAフレームに10個のテキストフォームがあり、そこにある操作によって文字列等が入力されます。

次にその10個のテキストフォームには1個目から順に文字列等が入り、飛び越して空白のテキストフォームはないこととします。
つまり、空白があればその後のテキストフォームも全部空ということ。

そのあとにBフレームがリンクなどにより呼び出された時に、自動でAフレームのテキストフォームから文字列等が入っている分と同じ数だけのセルを生成し表示する。

つまり、テキストフォームは10個常にあるがそのうちの3個にしか文字列等が入力されていなければ3個のセルしか生成しないということです。テーブルは1個です。

この説明で伝わりますでしょうか。

補足日時:2005/09/21 00:59
    • good
    • 0

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


おすすめ情報