PHPで検索ボタンを押さずに検索結果を返す方法とは?

このQ&Aのポイント
  • PHP・MySQL・HTMLを使用して、検索結果を表示する画面を作成している初心者です。検索結果を取得するため、テキストとセレクトの入力値を用いる PHP コードを作成しました。しかし、検索ボタンを押す度に処理するのは面倒です。セレクトの値が変更されたら、JavaScriptの onchange と同様にPHPの処理へ飛ばす方法はありますか?
  • PHPで検索ボタンを押さずに検索結果を取得するための方法を教えてください。初めて質問します。現在、PHP・MySQL・HTMLを学習中で、検索結果を表示する画面を作っています。入力された値に対応するデータを取得して表示する部分は完成しました。ただ、セレクトの値が変更されたタイミングで自動的に結果を取得する方法がわかりません。JavaScriptの onchange みたいに実装する方法はあるでしょうか?よろしくお願いします。
  • PHP・MySQL・HTMLを使用して、検索結果を取得する画面を作成しています。入力値に対応するデータを取得し、HTMLで表示するプログラムを作っています。現在、検索ボタンを押さなくてもセレクトの値が変更されたタイミングで自動的に結果を取得する方法を探しています。JavaScriptの onchange のような機能を実現する方法はありますか?お力添えいただけますと幸いです。
回答を見る
  • ベストアンサー

PHPで検索ボタンを押さずに検索結果を返したい

初めて質問させていただきます。 今、独学で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みたいなものなのですが、何かいい方法は ないでしょうか? 以前似たような質問があったかもしれませんが、 すみませんがよろしくお願いいたします。

  • CSS
  • 回答数3
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • ntm98
  • ベストアンサー率26% (73/273)
回答No.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されてしまうので、入力済みの他のフォーム値がリセットされないような工夫が必要だと思います。

その他の回答 (2)

  • wolfwood
  • ベストアンサー率50% (199/398)
回答No.2

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

mimi0115
質問者

補足

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

  • ntm98
  • ベストアンサー率26% (73/273)
回答No.1

>JavaScriptの、onchangeみたいなものなのですが というかその方法しかないのでは? <select name="XX1" onChange='javascript:submit()'>

関連するQ&A

  • PHPでの検索機能がうまく動きません

    PHPでの検索機能が動かなくて困っています。 <form>で入力した値を、MySQLのWHEREで条件付けて取り出したいのですがうまくいきません....。 最終的に、 1、formに検索ワードを入力 2、DBから条件にあったレコードを持ってくる 3、持ってきた値を表示 という機能にしたいのですが....。 --- --- --- --- --- --- --- --- --- --- --- --- <?php //データベースに接続 mysql_connect('xxx', 'xxx', 'xxx') or die(mysql_error()); mysql_select_db('xxx'); mysql_query('SET NAMES UTF8'); //フォームで送られてきた条件を元にSELECT文を作成 if (!empty($_POST['nm'])) { $q = $_POST['nm']; $sql = 'select * from test_tb where name like "%$q%"'; $record = mysql_query($sql) or die(mysql_error()); } ?> <html> <body> <form action="" method="post">    名前:<input type="text" name="nm">    <input type="submit" name="exec" value="検索"> </form> <?php while($row = mysql_fetch_assoc($record)): ?> <?php echo $row['id']; ?> <?php echo $row['name']; ?> <?php endwhile ?> </body> </html> --- --- --- --- --- --- --- --- --- --- --- --- エラーは表示されないのですが、結果も表示されません。 さまざまなサイトや他の方の質問、MySQLやPHPの本を参考にしたのですが うまくいかなかったのでご質問させていただきました。 プログラミング初心者の上、はじめての質問で不備があると思いますが、 どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • FORMで送信ボタンと戻るボタンを2つつけてそれぞれ遷移先を変えたい

       以下のような画面を作りたいのですが↓ -------------------------------------------------------------------------------- ● a.php (ユーザ情報入力画面) ※フォームに入力する画面    <FORM method="POST" action="b.php">   <INPUT type="text" name="mail">   <INPUT type="submit" name="submit" value="確認">  </FORM> ● b.php (ユーザ情報入力確認画面)※フォームに入力された値を表示する画面  <FORM method="POST" action="c.php">   <!-- ここには、フォームに入力された値を表示する -->   <INPUT type="submit" name="submit" value="登録"> // c.php に遷移する   <INPUT type="submit" name="submit" value="戻る"> // a.php に戻る  </FORM> ● c.php (完了画面) -------------------------------------------------------------------------------- b.php について質問なのですが、 b.phpにおいて、登録ボタンと戻るボタンを2つつけて、 それぞれ遷移先を変えたいのですが、どうすればいいんでしょうか・・・? <FORM method="POST" action="c.php">と書いてしまうと、 戻るボタンを押しても戻らずに、c.phpに遷移してしまいますよね?? こういう場合ってJavaScriptとかで遷移先を指定するんですか・・? もしそうでしたら、JavaScriptがよくわからないので できればサンプルコード示していただけると助かります・・・。   

  • formで複数のボタンを使いたい

    htmlの問題なので、カテゴリがhtmlかphpか迷いましたがphpで質問します。 htmlにおいて、form中にsubmitボタンを2個置きたいのです(例、修正ボタンと削除ボタン)。普通ならnameで区別しろということになり、飛び先(例えばaction=judge.php)中でnameで分岐させることになると思います。 ところが、現在phpフレームワークベースで開発しており、上記2つの処理を行うphpがすでにあるため、htmlからは、ボタンのactionによりそれぞれ別のphpを呼び出したいのです。以下に擬似コードを示しますが、以下のようにformが2つだと商品コード入力が2つになり、なんともおかしいので困っています。 form method=post action=edit.php input type=text 商品コード, input type=submit 修正 form method=post action=delete.php input type=text 商品コード, input type=submit 削除 質問のように1つのformに対して複数のsubmitを置くか、あるいは2つのformでも上記商品コードが1つであれば問題ないので、もしそのような方法があればご教示をよろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPのsubmitボタンが複数ある場合

    PHPのsubmitボタンが複数ある場合 PHPにて会計システムを開発しているのですが、計算ボタンと、更新してDBに追加するためのボタンとが混在している場合、 $_POST等で押されたボタンの処理を分けることは可能なのでしょうか?下の例は、 name="calculation"が押された場合は、val1とval2の値を計算し、totalへ値を入れます。 name="update"が押された場合は、それぞれのフォームの値をDBに更新をかけます。 <?php <form action="****.php" method="POST"> <input type="text" name="val1" value="20"/> <input type="text" name="val2" value="30"/> <input type="text" name="total" value="50"/> <input type="submit" name="calculation"/> <input type="submit" name="update"/> </form> ?> お分かりになる方、ご教授お願いいたします。

    • 締切済み
    • PHP
  • PHPでTEXTと同様なcheckBoxの処理

    下記のフォームから検索キーワードを入力してANDとORの検索はちゃんとできていますが、 チェックボックスを使いテキストフォームと同様のロジックで「りんご■メロン」と 文字と文字の間にスペース「■」で結合して送信し、PHPコード側で受けとるにはどうしたらよいかアドバイス下さい。 ちなみに、PHPコード側では$_REQUEST['word']に<input type=text name=word size=35 value="">と同じような処理を入れたいです。 (1)検索キーワード --------------------------------------- りんご■メロン *■は半角スペース文字とします。 HTMLフォーム --------------------------------------- <form action="test.php" action="POST"> <input type=hidden name=mode value="search"> 検索キーワード:<input type=text name=word size=35 value=""> <select name=option> <option value="and"> AND</option> <option value="or"> OR</option> </select> <input type=submit value="Search"> </form> ↓この処理では全然だめでした。 <form action="test.php" method="post"> <input type="checkbox" name="word[]" value="りんご"> <input type="checkbox" name="word[]" value="メロン"> <input type=submit value="Search"> </form> PHPコード foreach($_REQUEST['word'] as $val){ $_REQUEST['word'] = " "."$val"; }

    • 締切済み
    • PHP
  • JavaScript+PHPでのボタンの値について

    お世話になります。現在下記のようなコードです。 #Html側 <script language="JavaScript"><!-- function send1() { document.Form1.submit(); } function send2() { document.Form2.submit(); } // --></script> <form name="Form1" action="tesuto1.php" > 中略 </form> <form name="Form2" action="tesuto2.php" > 中略 </form> <form> <input type="button" name="botan" value="送信" onClick="send1()"> </form> <form> <input type="button" name="botan" value="取消" onClick="send2()"> </form> <form> <input type="button" name="botan" value="確認" onClick="send1()"> </form> #PHP側 tesuto1.php echo "値は".@$_POST["botan"]."です"; という感じで、どのボタンがクリックされたか判別するために、 ボタンの値を取得したいのですが。 よろしくお願いします。

  • 検索においてフィールド名+likeを複数使いたい

    環境:php+mysql ■やりたこと イメージ <form method="get"action="result.php"> <p> 検索ワード:<input type="text" name="key" /> 好きな果物: <select name="cate"> <option VALUE="0"> <option VALUE="りんご">りんご <option VALUE="みかん">みかん </select> <input type="submit" value="送信" />  <input type="reset" value="取り消し" /> </p> </form> と検索フォームをした場合 入力された内容が  検索ワード=愛媛  好きな果物=みかん だとすると みかんのカテゴリに属するレコードで 且つ  みかんのキーワードを含むname またはDescriptionフィールドに該当する 結果数を取得したいです。 補足: $cate(formのプルダウンで VALUE="xx" のxxが入ってきて  これはDB上フィールドに入っている日本語です。) $a(これは検索キーワードが入ってきます。) ■現在書いているphp $sql="select * from item where category=$cate and name like '%".$a."%' or Description like '%".$a."%' "; $datas = mysql_query($sql , $db ); $num = mysql_num_rows($datas); ←75行目 エラー結果 Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/xxx/result.php on line 75 おそらく、73行目の命令文が間違っていると思うのですが、どう対応するのか 検索しても対象になりそうなものがみつからず、、質問させていただきました。 アドバイスのほどよろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPでMySQLのレコードを削除したい

    現在「基礎からのMYSQL」という本でXAMPPを導入しMySQL,PHPの基礎を勉強中です。 (mysql_query() を初めて学習中です。) 例にならってスクリプトを書いてみたのですが、MySQL内にあるレコードを削除するためのスクリプトがうまく作動しません。 (SELECT, INSERT, SEARCH は正常に作動します。DELETEだけがなぜかうまくいきません。) ApacheとMySQLは起動しています。 考えられる原因をおしえていただけませんでしょうか。よろしくおねがいいたします。 ソースコードは下記のとおりです。 ★HTML(トップページ) //メッセージ表示のスクリプトを呼び出すフォーム <form method="post" action="kantan_select.php"> メッセージを表示します<br> <input type="submit" value="メッセージ表示"> </form> //挿入のスクリプトを呼び出すフォーム <form method="post" action="kantan_insert.php"> 名前を入力してください<input type="text" name="a1"><br> メッセージを入力してください<input type="text" name="a2" size=150><br> <input type="submit" value="送信"> </form> //☆☆☆削除のスクリプトを呼び出すフォーム☆☆☆ <form mothod="post" action="kantan_delete.php"> 削除番号<input type="text" name="b1"><br> <input type="submit" value="削除番号送信"> </form> //検索のスクリプトを呼び出すフォーム <form method="post" action="kantan_search.php"> 検索キーワード<input type="text" name="c1"><br> <input type="submit" value="検索開始"> </form> ★レコード削除のPHPスクリプト <?php $s=mysql_connect("localhost","root","パスワード") or die("接続失敗"); print "接続しました<br>"; mysql_select_db("db1"); $b1_d=$_POST["b1"]; mysql_query("delete from tbk where bang=$b1_d") ; $re=mysql_query("select * from tbk order by bang"); while($kekka=mysql_fetch_array($re)){ print $kekka[0]; print ":"; print $kekka[1]; print ":"; print $kekka[2]; print "<br>"; } mysql_close($s); print "<br><a href='kantan.html'>メニューに戻る</a>" ?> <環境> Windows 7 XAMPP導入するための付属CD-ROMの内容  ・Apache(HTTPD2.2.6 + Openssl0.9.8e)   ・MySQL(5.0.45)  ・PHP(5.2.4)  ・PHP(4.4.7)  ・phpMyAdmin(2.11.1)  ・Zend Optimizer

    • 締切済み
    • PHP
  • ボタンを消したい(二度押し抑制)

    <form method="post" action="xxx"> <input type="text" name="a"> <input type="submit" name="submit" value="SEND"> <input type="submit" name="submit" value="BACK"> </form> こういうソースがあります。 SENDボタンをクリックするとメールが送信されます。 BACKボタンをクリックすると入力画面に戻ります。 ここでSENDボタンを連打されるとメールが連続送信されてしまいます。 そうならないようにボタンをクリックした時2つのボタンを消してしまいたいのですが、どうすればよいでしょうか。 よろしくお願いします。

  • PHPで求めた変数をHTMLで使う方法

    HTMLのformタグで与えた引数を元に、ある値をPHPで求めた後、その求めた変数をHTMLに戻って使う方法をご教授下さい。 例えば、 index.html ↓↓↓ <form action="submit.php" method="post"> <input type="text" name="xxxxx"> <input type="text" name="yyyyy"> <input tyoe="submit" value="実行"> </form> <textarea name="answer"> 実行後ここに、下のPHPで求めた$zzzzzを表示したい。 </textarea> 上のHTMLでxxxxxとyyyyyを入力して実行ボタンを押します。 そしてPHP側は、 submit.php  ↓↓↓ $zzzzz = $_POST["xxxxx"] . "は、" . $_POST["yyyyy"] . "です。"; このように求めた$zzzzzを上のHTMLに戻って表示したいのですが、しばらく調べてみても見つかりませんでした。 どなたかご教授下さい、お願いします。

専門家に質問してみよう