PHPに関しての質問です。PHPに関しては超初心者です。


<form method="GET" action="./index.php">
<input type="text" name="sample1" size="30" />
<input type="submit" value="検索1" />
</form>

<form method="GET" action="./index.php">
<input type="text" name="sample2" size="30" />
<input type="submit" value="検索2" />
</form>

「検索1」の結果、
URL: "/index.php?sample1=SAMPLE1"
「検索2」の結果、
URL: "/index.php?sample2=SAMPLE2"
は、正常に表示されます。

またURLに入力、
URL: "/index.php?sample1=SAMPLE1&sample2=SAMPLE2"
も正常に表示されます。

「検索1」後に「検索2」を実行すると正常に表示されません。

「検索1」を実行の際、
URL: "/index.php?sample1=SAMPLE1"

「検索2」を実行の際、
URL: "/index.php?sample1=SAMPLE1&sample2=SAMPLE2"

にするようにしたいのですが、どうすればよろしいでしょうか。

ご存知の方、または参考になりそうなページがあればよろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2007/05/29 12:40:50
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:jack_sonic No.1

回答回数124ベストアンサー獲得回数25

ポイント10pt
「検索1」を実行の際、
URL: "/index.php?sample1=SAMPLE1"

「検索2」を実行の際、
URL: "/index.php?sample1=SAMPLE1&sample2=SAMPLE2"

にするようにしたいのですが、どうすればよろしいでしょうか。

このことはPHPソースというよりPHP呼び出しのときの

HTMLからのフォーム送信の問題かと思うのですが、

このフォームの構成で

「検索2」を実行の際、

URL: "/index.php?sample1=SAMPLE1&sample2=SAMPLE2"

の呼び出しを作る場合は、

2番目のフォームにsample1という名前のhiddenメンバを作り、

onSubmitイベントでフォーム1のsample1から値を

コピーしてくればできますね。

(1例)

ソース(PHPのアドレスはテスト用のものに変えてあります。)

<html>
<body>
<script type="text/javascript">
function onSearch2()
{
	// フォーム1のsample1をコピー
	frm2.sample1.value = 
		frm1.sample1.value;

}
</script>

<form name="frm1" method="GET" action="http://f29.aaa.livedoor.jp/~morg/wiki/sample/disp_send.php">
<input type="text" name="sample1" size="30" />
<input type="submit" value="検索1" />
</form>

<form name="frm2" method="GET" action="http://f29.aaa.livedoor.jp/~morg/wiki/sample/disp_send.php"
 onSubmit="onSearch2()" >
<!-- hidden フィールド -->
<input type="hidden" name="sample1" value="" />
<input type="text" name="sample2" size="30" />

<input type="submit" value="検索2" />
</form>
</body>
<html>
id:Solais

>このことはPHPソースというよりPHP呼び出しのときのHTMLからのフォーム送信の問題かと思うのですが、

「index.php」で「index.tpl」を呼び出し、"display"で表示させている形だとたぶん思います。


<body>

<script type="text/javascript"></p> <p>function onSearch2()</p> <p>{</p> <p> // フォーム1のsample1をコピー</p> <p> frm2.sample1.value = </p> <p> frm1.sample1.value;</p> <p>}</p> <p></script>

部分を組み込むと、真っ白でなにも表示されなくなってしまいました。

<script type="text/javascript">~</script>

部分を外した状態で、

<form name="frm1" method="GET" action="./index.php">

<input type="text" name="sample1" size="30" />

<input type="submit" value="検索1" />

</form>

<form name="frm2" method="GET" action="./index.php"</p>

onSubmit="onSearch2()" >

<input type="hidden" name="sample1" value="" />

<input type="text" name="sample2" size="30" />

<input type="submit" value="検索2" />

</form>

「検索1」で、

URL: "/index.php?sample1=SAMPLE1"

「検索2」で

URL: "/index.php?sample1=&sample2=SAMPLE2"

以前は、"sample1=&sample2"と表示されず、"sample1=、"sample2="だったのでよくなっているとは思うのですが…。

2007/05/28 23:52:29

その他の回答3件)

id:jack_sonic No.1

回答回数124ベストアンサー獲得回数25ここでベストアンサー

ポイント10pt
「検索1」を実行の際、
URL: "/index.php?sample1=SAMPLE1"

「検索2」を実行の際、
URL: "/index.php?sample1=SAMPLE1&sample2=SAMPLE2"

にするようにしたいのですが、どうすればよろしいでしょうか。

このことはPHPソースというよりPHP呼び出しのときの

HTMLからのフォーム送信の問題かと思うのですが、

このフォームの構成で

「検索2」を実行の際、

URL: "/index.php?sample1=SAMPLE1&sample2=SAMPLE2"

の呼び出しを作る場合は、

2番目のフォームにsample1という名前のhiddenメンバを作り、

onSubmitイベントでフォーム1のsample1から値を

コピーしてくればできますね。

(1例)

ソース(PHPのアドレスはテスト用のものに変えてあります。)

<html>
<body>
<script type="text/javascript">
function onSearch2()
{
	// フォーム1のsample1をコピー
	frm2.sample1.value = 
		frm1.sample1.value;

}
</script>

<form name="frm1" method="GET" action="http://f29.aaa.livedoor.jp/~morg/wiki/sample/disp_send.php">
<input type="text" name="sample1" size="30" />
<input type="submit" value="検索1" />
</form>

<form name="frm2" method="GET" action="http://f29.aaa.livedoor.jp/~morg/wiki/sample/disp_send.php"
 onSubmit="onSearch2()" >
<!-- hidden フィールド -->
<input type="hidden" name="sample1" value="" />
<input type="text" name="sample2" size="30" />

<input type="submit" value="検索2" />
</form>
</body>
<html>
id:Solais

>このことはPHPソースというよりPHP呼び出しのときのHTMLからのフォーム送信の問題かと思うのですが、

「index.php」で「index.tpl」を呼び出し、"display"で表示させている形だとたぶん思います。


<body>

<script type="text/javascript"></p> <p>function onSearch2()</p> <p>{</p> <p> // フォーム1のsample1をコピー</p> <p> frm2.sample1.value = </p> <p> frm1.sample1.value;</p> <p>}</p> <p></script>

部分を組み込むと、真っ白でなにも表示されなくなってしまいました。

<script type="text/javascript">~</script>

部分を外した状態で、

<form name="frm1" method="GET" action="./index.php">

<input type="text" name="sample1" size="30" />

<input type="submit" value="検索1" />

</form>

<form name="frm2" method="GET" action="./index.php"</p>

onSubmit="onSearch2()" >

<input type="hidden" name="sample1" value="" />

<input type="text" name="sample2" size="30" />

<input type="submit" value="検索2" />

</form>

「検索1」で、

URL: "/index.php?sample1=SAMPLE1"

「検索2」で

URL: "/index.php?sample1=&sample2=SAMPLE2"

以前は、"sample1=&sample2"と表示されず、"sample1=、"sample2="だったのでよくなっているとは思うのですが…。

2007/05/28 23:52:29
id:ktoshi No.2

回答回数107ベストアンサー獲得回数6

ポイント500pt

<form name="frm1" method="GET" action="./index.php">
<input type="text" name="sample1" size="30" />
<input type="submit" value="検索1" />
</form>

<form name="frm2" method="GET" action="./index.php">
<input type="hidden" name="sample1" value="<?php print $_GET['sample1']; ?>" />
<input type="text" name="sample2" size="30" />
<input type="submit" value="検索2" />
</form>

/index.php?sample1=SAMPLE1&sample2=SAMPLE2

$_GET['hoge'] でGETの値を取得できます。

print $_GET['sample1']; // SAMPLE1と表示される

print $_GET['sample2']; // SAMPLE2と表示される

?>

id:Solais

「検索1」の時点で、

URL: "/index.php?sample1=SAMPLE1"

と表示され、うまくいくのですが、

「検索2」の時点で、

URL: "/index.php?sample1=%3C%3Fphp+print+%24_GET%5B%27sample1%27%5D%3B+%3F%3E&title=SAMPLE2"

(デコード:/index.php?sample1=&title=SAMPLE2)

と表示され、うまくいきません。

こちらの知識の不十分さがありますので、なにかこちら側で問題があるかもしれません。

解決策があればまたご回答いただけると幸いです。

2007/05/29 01:58:11
id:jack_sonic No.3

回答回数124ベストアンサー獲得回数25

ポイント10pt

No.1です。

(返信より引用)

<script type="text/javascript"></p> <p>function onSearch2()</p> <p>{</p> <p> // フォーム1のsample1をコピー</p> <p> frm2.sample1.value = </p> <p> frm1.sample1.value;</p> <p>}</p> <p></script>

部分を組み込むと、

とのことですが、

No.1の回答コードでは<script>~</script>の中に

<p>,</p>など

を入れていないのですが、

なぜ変更が加えられているのでしょうか?

ありのまま正確にHTMLソースに加わるよう組み込まないと

正常に動作しません。

No.1のソースを正常に組み込んだ場合

こういう動きになります。(稼動サンプル: JavaScript有効の必要あり)

http://f29.aaa.livedoor.jp/~morg/wiki/sample/sample1.html


ページを作るときに何のソフトとブラウザを使っていらっしゃいますか?

(ソフトや操作によっては組み込むときに

勝手に不要なコードが挿入されるケースもあります)

  • 作成に使っているソフトと環境、
  • 記述するファイルは.htmlか、.phpファイルか
  • JavaScript有効/無効の設定

を知りたいです。

id:Solais

は、私も回答後、気になったのですが、

おそらくコピー&ペーストで返答したので、その経緯で

タグが挿入されてしまったのではないかと思います。

編集に使用しているソフトは、

・Dreamweaver MX

・MIcrosoft メモ帳

です。

.htmlファイルは使用していません。

.phpファイルにおいて、.tplファイルを呼び出して、"display"で表示する形を取って いると思います。javascriptは、.jsファイルで使用していると思います。

リンク先も確認しました。リンク先の動作でほぼ問題ないと思われます。

詳しくソース等も確認しないとおそらく判断が難しいだろうと思います。

すでに予定していたポイントを送信させていただきました。

よろしければ相談に応じていただければと思います。

2007/05/29 02:36:54
id:tezcello No.4

回答回数460ベストアンサー獲得回数69

ポイント500pt

> 「検索1」後に「検索2」を実行すると正常に表示されません。

> ...

> 「検索2」を実行の際、

> URL: "/index.php?sample1=SAMPLE1&sample2=SAMPLE2"

「検索2」をクリックした時には常に sample1フィールドの内容をクエリに加えたいのでしょうか?

それとも「検索1」のクリック後「検索2」をクリックした場合だけでしょうか?


> 「index.php」で「index.tpl」を呼び出し、"display"で表示させている形だとたぶん思います。

"display" ってなんでしょう?


こんなイメージでしょうか?

「検索1」クリック時に sample1フィールドの内容を同名の hidden フィールドに書き出しておくようにしました。

(sample1フィールドに何かある時だけ hiddenフィールドを追加するようにした)

"display"は、単に表示するだけと解釈しました。


・index.phpの内容
<?php
$html = _file_get_contents(index.tpl);
if ($_GET){
  // ここで送られてきたクエリに対しての処理をする
  $html = preg_replace('/(<input type="text" name="sample2")/',
   '<input type="hidden" name="sample1" value="'.$_GET['sample1']."\" />\n$1", $html);
}
print $htmlt;
?>

・index.tplの内容
<html>
<head><title>テスト</title></head>
<body>
<form method="GET" action="./index.php">
<input type="text" name="sample1" size="30" />
<input type="submit" value="検索1" />
</form>

<form method="GET" action="./index.php">
<input type="text" name="sample2" size="30" />
<input type="submit" value="検索2" />
</form>
</body>
</html>
id:Solais

.php部分を挿入するとうまく起動できません。

index.php側の問題だと思うのですが、よくわかりません。

一旦質問を終了したいと思います。

皆様ありがとうございました。

2007/05/29 12:39:47
  • id:jack_sonic
    >詳しくソース等も確認しないとおそらく判断が難しいだろうと思います。
    >すでに予定していたポイントを送信させていただきました。
    >よろしければ相談に応じていただければと思います。

    了解しました。解析させて頂きます。
  • id:tezcello
    思いもよらない高ポイントありがとうございます。

    今気が付いたのですが、タイプミスがありました。
    print $htmlt;
    ?>
    ではなく、
    print $html;
    ?>
    でした。おわびして訂正致します。

    > .php部分を挿入するとうまく起動できません。
    この意味がよくわかりません。
    ひょっとして,上記のタイプミスのせいでしょうか
  • id:Solais
    jack_sonic様、ktoshi様、tezcello様、
    コメント並びにポイント送信でのご回答感謝しております。

    とりあえず解決しましたが、問題として、
    require_once "Smarty.class.php";
    Smartyの利用が問題の一つとしてあったようです。

    未だ私の理解が不十分であり、また質問の説明が不十分であることを重々承知しておりますが、ご回答いただきましたこと御礼申し上げます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません