ここでいくつかのことを理解しようとしていますが、かなり近いようですが、障害にぶつかっています。私の問題は、ドロップダウン オプション (多数の結果をフィルタリングするために使用) を選択した後、オートコンプリート ボックスに入力を開始したときに表示されるはずの結果が表示されないことです。ドロップダウンが渡す値をハードコードし、オートコンプリート ボックスに入力を開始すると、すべて正常に動作します。私が問題を抱えているのは、その値を渡したときだけです。
私は 2 つの PHP ページを持っています。1 つはドロップダウン (結果の SQL) とオートコンプリート ボックスを含むレイアウトを含み、もう 1 つはオートコンプリートの SQL を含みます。
検索.php
<select id="loc">
<?php
// sql for dropdown
while ($row = odbc_fetch_array($result)) {
echo "<option value\"".$row['Location']"\">".$row['Description']."</option>";
}
?>
</select>
<label for="search">Search: </label>
<input type="text" id="search" />
<script>
// Send value entered in the autocomplete box to data.php for it to be used in sql statement
$(document).ready(function(){
$('#search').autocomplete({
minLength: 3,
source: function(query, process) {
$.ajax({
url: 'data.php',
type: 'GET',
data: "name=" + $('#search').val(),
dataType: 'JSON',
async: true,
success: function(data) {
process(data);
}
});
}
});
});
// Append selected dropdown value to URL so it can be accessed
$(document).ready(function() {
$('#search').change(function() {
var res = $(this).val();
location.href = "search.php?src="+res;
});
});
</script>
data.php
<?php
if (isset($_GET['src'])) {
$loc = $_GET['src'];
$fullname = explode(" ", $_GET['name']);
$sql = "SELECT p.lastname + ', ' + p.firstname as fullname,
l.city as city
FROM people p
JOIN location l on p.city = l.city
WHERE p.lastname like '".$fullname[1]."%' AND p.firstname like '".$fullname[0]."%'
AND l.city = '$loc'
GROUP BY p.lastname + ', ' + p.firstname, l.city
ORDER BY p.lastname + ', ' + p.firstname";
// DB connection and execute connection here
$array = array();
while ($row = odbc_fetch_array($db)) {
$array[] = $row['fullname'];
}
echo json_encode($array);
}
?>
したがって、このようなコードを作成してドロップダウンからオプションを選択すると、選択した値が渡されるため、select ステートメントが実行されます。search.php ページで結果をエコーすると、それらは正しくフィルタリングされます。 data.php ページに直接移動し、正しいパラメーターをすべて渡します。ただし、選択を行ってオートコンプリート ボックスに入力を開始しても、結果が得られません。選択に基づいて何らかの方法で結果をフィルタリングし、それらの結果を取得して、入力を開始したときに別のクエリを実行する必要があると思いますか?
ご不明な点がありましたらお知らせください。