渡された引数に基づいて SQL クエリを生成するコードをいつでも作成できます。
ajax は、ユーザーが選択したものに基づいて、基本的な都市と日付から日付に加えて、一連の引数を使用してページをクエリできます。ページが以前に選択した検索オプションを保持している場合、ユーザーはさらにオプションを追加して、同じ方法でそれらを処理し続けることができるはずです。次に、php は、引数が $_POST または $_GET 変数に設定されているかどうかをテストし (一般的に ajax では $_POST の方が安全ですが、簡単にするために私の例では $_GET を使用します)、そのようなクエリを作成します。
例:
Javascriptは次のようなクエリを生成しますsearchAjaxHandler.php?city=Chicago&from=2012-03-01&to=2012-03-05&someColumnLowerRange=500&someColumnUpperRange=700
次に、php スクリプトは次のように処理されます。
$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 側は、以前のすべての結果を返された結果に置き換えることで、以前と同じことを行います。