次の列を持つ Device_tbl というテーブルがあります。
- 画像
- メーカー
- モデル
私のメーカーの例は次のとおりです。
- ソニー・エリクソン
- HTC
- モトローラ
私のモデルの例は次のとおりです。
- ワンエックス
- ワンエス
- Xperiaアーク
- Xperia X10
- ズーム
私が抱えている問題は、メーカーとモデルの組み合わせをクエリに渡すことです。例えば:
SELECT Image, Manufacturer, Model FROM Device_tbl WHERE Manufacturer LIKE 'Sony Ericsson Xperia Arc' OR Model LIKE 'Sony Ericsson Xperia Arc'
ご覧のとおり、これは何も返しません。私が求めているのは、上記の結果のみの正確な一致を返すことですが、Son を検索すると、Son がメーカーまたはモデルのいずれかに存在するすべての結果が返されます。
可能な解決策?
助けがあれば、JQuery Autocomplete 関数を使用してフルネームを生成しています。これらの提案は、メーカーとモデルを組み合わせた配列から生成されます。検索がより正確になるようにバックグラウンドで分割する方法があるかどうかわかりませんか?
<?php
mysql_select_db($database_database_connection, $database_connection);
$query = "SELECT * FROM Device_tbl";
$result=mysql_query($query, $database_connection) or die(mysql_error());
$findrow = array();
while($row = mysql_fetch_assoc($result)){
$manufac = $row['Manufacturer'];
$mod = $row['Model'];
$string = $manufac.' '.$mod;
$findrow[] = $string;
}
?>
<script type="text/javascript">
$(document).ready(function() {
var availableTags = <?php echo json_encode($findrow);?>;
$("#search_input").watermark("Begin Typing to Search");
$('#searchresultdata').append(sendSelected);
$( "#search_input" ).autocomplete({
source: availableTags,
select: function(event, ui) {
sendSelected(ui.item.value);
}
});
function sendSelected(_val){
var search_input = _val;
if (search_input =='') search_input ='*';
var dataString = 'keyword='+search_input;
if (search_input.length > 2 || search_input=='*') {
$.ajax({
type: "GET",
url: "core/functions/searchdata.php",
data: dataString,
success: function(server_response) {
$('#searchresultdata').empty();
$('#searchresultdata').append(server_response);
$('span#category_title').html(search_input);
}
});
}
}
});
</script>