<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」を実行の際、 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>
「検索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>
>このことは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="だったのでよくなっているとは思うのですが…。
<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と表示される
?>
「検索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)
と表示され、うまくいきません。
こちらの知識の不十分さがありますので、なにかこちら側で問題があるかもしれません。
解決策があればまたご回答いただけると幸いです。
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
ページを作るときに何のソフトとブラウザを使っていらっしゃいますか?
(ソフトや操作によっては組み込むときに
勝手に不要なコードが挿入されるケースもあります)
を知りたいです。
~
は、私も回答後、気になったのですが、おそらくコピー&ペーストで返答したので、その経緯で
~
タグが挿入されてしまったのではないかと思います。編集に使用しているソフトは、
・Dreamweaver MX
・MIcrosoft メモ帳
です。
.htmlファイルは使用していません。
.phpファイルにおいて、.tplファイルを呼び出して、"display"で表示する形を取って いると思います。javascriptは、.jsファイルで使用していると思います。
リンク先も確認しました。リンク先の動作でほぼ問題ないと思われます。
詳しくソース等も確認しないとおそらく判断が難しいだろうと思います。
すでに予定していたポイントを送信させていただきました。
よろしければ相談に応じていただければと思います。
> 「検索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>
.php部分を挿入するとうまく起動できません。
index.php側の問題だと思うのですが、よくわかりません。
一旦質問を終了したいと思います。
皆様ありがとうございました。
>このことは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="だったのでよくなっているとは思うのですが…。