2012-04-13 6 views
3

で更新:検索は、私はPHP/MySQLとjQueryを使って次のようベストを尽くすためにどのように思っていたのjQuery

あなたは都市との対を入力して基本的な検索マスクがあります日付。検索結果ページを処理すると、特定のパラメータ(チェックボックス、jQueryスライダ、テキスト入力など)で検索結果を絞り込むことができます。検索結果は、ページ全体をリロードせずにオンザフライで更新する必要があります。

私はjQuery ajaxを使用して、別のPHPファイルに情報を送信することができます。 SELECTを実行して結果を検索の詳細ページに戻しますが、検索結果を絞り込むさまざまな変更を組み合わせる方法はわかりません。

さらに、すでにそこにある詳細ページになり、私は事は、各パラメータを狭くすることである...

をより多くの結果を追加しますが、もう合わない結果を「削除」する必要はありません。検索はデータベース内の別のテーブルに接続されます。どうすればよいのですか?元のクエリに結合を追加するにはどうすればよいですか?あるいは私は間違った方向に考えていますか?

答えて

2

はい、これは正しい方向です。

$(document).ready(function() { 

    $('#ID_OF_YOUR_ELEMENT_TO_LOAD_INTO').load("load.php?parameter1=<?php echo $parameter1; ?>&parameter2=<?php echo $parameter2; ?>"); 

}); 

ユーザーが初めてページにアクセスしたときに結果を得るために、あなたの都市とあなたの日付に従って結果を得るために使用してください。

パラメータが設定されているload.phpをチェックインし、クエリを構築するために設定されたパラメータを使用します。その後、フォーム(またはフォーム)に応じて、次のように.loadを再度使用する必要があります。

$('#ID_OF_YOUR_FORM_BEING_UPDATED').change(function() { 

    $('#ID_OF_YOUR_ELEMENT_TO_LOAD_INTO').load("load.php?parameter1=<?php echo $parameter1; ?>&parameter2=<?php echo $parameter2; ?>&parameter3=<?php echo $parameter3; ?>"); 

}); 
+0

はい、私は参照してください...あまりにも実用的な例で詳細な答えHelmutありがとう!準備が整ったドキュメントに読み込むこともおすすめです!ありがとう、トン! – Chris

1

PHP/MySQLで初期タプルを取得し、いくつかのJavascript構造に保存し、この構造からのJavaScriptでデータを表示するのに必要なhtmlを作成します。

データをフィルタリングしたい場合は、htmlを書き換えて、その場でフィルタ条件をチェックします。フィルタ条件に一致しないタプルを構造体から書き出さないでください。

あなたが、これはもちろん、これはただ一つの方法であるhttp://www.wowhead.com

で行われている者を確認することができます。 ;-)

+0

だから、毎回htmlを書き直す必要がありますか?これは私が不思議に思っていたものでした...あなたにバスティーに感謝、リンクは素晴らしいです! :) あなたはこれをやりましたか? – Chris

+0

これは私のサイトではありません。 ;-)各変更時にhtmlを書き換えるのは非効率的ですが、ユーザのブラウザで書き換えが行われるので問題ありません。ホールデータパッケージを一度サーバーに格納するだけで済みます。あなたも圧縮を使用することができます。 – Basti

0

渡された引数に基づいてSQLクエリを生成するためのコードを書くことができます。

ajaxは、ユーザーが選択した内容に基づいて、基本都市に加えて引数の束をページに照会できます。あなたのページが以前に選択された検索オプションを保持していれば、ユーザーはさらに多くのオプションを追加し、同じ方法でそれらを処理し続けることができるはずです。あなたのPHPは、引数が$ _POSTまたは$ _GET変数に設定されているかどうかをテストします($ _POSTは一般的にajaxの方が安全ですが、私の例では簡単に$ _GETを使用します)。

:javascriptの側だろうちょうどあなたがいた同じ事に、全てのその後

$query = "SELECT * FROM Data WHERE City=? AND Date > ? AND Date < ?"; 
$arguments = array($_GET['city'], $_GET['from'], $_GET['to']); 
if (isset($_GET['someColumnLowerRange'])) { 
    $query .= " AND someColumn > ?"; 
    $arguments[] = $_GET['someColumnLowerRange']; 
} 
if (isset($_GET['someColumnUpperRange'])) { 
    $query .= " AND someColumn < ?"; 
    $arguments[] = $_GET['someColumnUpperRange']; 
} 
//execute the query 
//using PDOs (google them...they are a good way to prevent sql injection and 
//support multiple database types without modifying code too much), create a 
//statement with the above query in put the statement in $statement 

$statement->execute($arguments); //this uses the $arguments array to fill in the prepared statement's ?'s 

//then do the stuff to get the retrieved rows out of the result returned 

Javascriptが次のようにsearchAjaxHandler.php?city=Chicago&from=2012-03-01&to=2012-03-05&someColumnLowerRange=500&someColumnUpperRange=700

PHPスクリプトのようなクエリは、その後処理生成これまでのすべての結果を元に戻した結果に置き換えることによって、前にやっています。

関連する問題