人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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"

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

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

●質問者: Solais
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:INDEX PHP URL 入力 初心者
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● じゃっくそにっく
●10ポイント ベストアンサー
「検索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="だったのでよくなっているとは思うのですが…。


2 ● ktoshi
●500ポイント

<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)

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

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

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


3 ● じゃっくそにっく
●10ポイント

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ファイルで使用していると思います。

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

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

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

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


4 ● tezcello
●500ポイント

> 「検索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側の問題だと思うのですが、よくわかりません。

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ