プロが教える店舗&オフィスのセキュリティ対策術

初めて質問させていただきます。
今、独学でPHP・MySQL・HTMLを使って、
検索結果を表示する画面を作っています。

作っているプログラムは、こんな感じです。
================================================
xxx.php
================================================
<?php
ここで、入力のエラーチェック
MySQLに接続
入力したコードに対応するデータを取得
?>
<html>
<form action="xxx.php" method="post">
<input type="text">
<select name="XX1"></select>
<select name="XX2"></select>
<input type="submit" name="submit" value="検索">
</html>
================================================

このプログラムでは、テキストタイプの部分にコードを
入力し、selectの部分で各項目を選択して、
最後に検索ボタンを押すと、
エラーチェックをした後に、検索結果のデータを
データベースから取得してHTMLで表示します。

毎回、検索ボタンを押すという動作を減らすため、
SELECTの部分が変わったら、
検索ボタンを押さなくても、上のPHPで記述されて
いる部分の処理に飛ばす方法がないかなあと
思いまして質問しました。

イメージ的にはJavaScriptの、onchangeみたいなものなのですが、何かいい方法は
ないでしょうか?

以前似たような質問があったかもしれませんが、
すみませんがよろしくお願いいたします。

A 回答 (3件)

XX1,XX2というのは2つのセレクトメニューがあると考えていいのでしょうか?


一応、2つのセレクトメニューがあると想定してタグを書くとこうなります。
(エラーが出るということですが、inputタグに入っているname="submit"の記述が原因です。不要)

<html>
<body>
<form action="xxx.php" method="post">
<input type="text">
<select name="XX1" onChange="javascript:submit()">
<option value="noselect">選択してください</option>
<option value="xx1-1">選択1</option>
<option value="xx1-2">選択2</option>
</select>
<select name="XX2" onChange="javascript:submit()">
<option value="noselect">選択してください</option>
<option value="xx2-1">選択1</option>
<option value="xx2-2">選択2</option>
</select>
<input type="submit" value="検索">
</form>
</body>
</html>

------- xxx.php ---------
<?php
echo $_POST['XX1'];// XX1の選択値
echo $_POST['XX2'];// XX2の選択値
?>

もっともこれだとどちらかのセレクトメニューを操作しただけでPOSTされてしまうので、入力済みの他のフォーム値がリセットされないような工夫が必要だと思います。
    • good
    • 0

クライアントの処理なのであなたの書かれている通り、JavaScriptのonChangeを用いるしかないように思えます。

この回答への補足

そうなのですが、そのonchangeの部分の書き方がよくわかりません。通常は、submitの検索ボタンを押すと、formのactionに書かれている、XXX.PHPに処理が飛びますよね?
onchangeのイベントで同様にxxx.phpに行かせたいのですが、そのまま書くと、エラーになってしまいます。というか、その部分の書き方がわからないのです。

補足日時:2005/03/31 08:04
    • good
    • 0

>JavaScriptの、onchangeみたいなものなのですが



というかその方法しかないのでは?

<select name="XX1" onChange='javascript:submit()'>
    • good
    • 0

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