更新
这是来自http://www.trulia.com/的表格
<div class="searchbox">
<form id="searchbox_form" class="searchbox_form form man" method="get" action="/submit_search/" autocomplete="off">
<div class="field man">
<span class="select">
<div id="homepage-select" class="selectPretty">
<select id="search_options" class="h5 man txtL" name="display_select" data-previous-selection="for_sale">
<option value="for_sale">Buy</option>
<option value="for_rent">Rent</option>
<option value="sold">Recently sold</option>
</select>
<div class="selectDisplay btn btnLrg btnDefault rrn backgroundBasic pts plm">
<span class="selectLabel h5">Buy</span>
<span class="selectTrigger pts"><i class="iconDownOpen"></i></span>
</div>
</div>
</span>
<span class="text">
<div style="display: none; top: 129px; left: 297.5px; width: 370px;" class="autosuggest_list"><ul><li class="location-get-me">Current Location</li></ul></div><input id="searchbox_form_location" type="text" name="search" class="searchbox_form_location searchInput text searchByLocation typeWeightNormal h5 man" value="" placeholder="Search by neighborhood, city, zip or address" autocomplete="off">
<input type="hidden" name="locationId" value="">
<input type="hidden" name="locationType" value="">
<input type="hidden" name="tst" class="searchbox_form_type" value="h">
<input type="hidden" name="ac_entered_query" value="">
<input type="hidden" name="ac_index" value="">
<input type="hidden" name="propertyId" value="">
<input type="hidden" name="propertyIndex" value="">
<input type="hidden" name="display" class="searchbox_form_type_display" value="for sale">
<button class="btn btnPrimary submit"><span class="h5 typeEmphasize"><i class="iconSearch h4"></i>SEARCH</span></button>
</span>
</div>
</form>
</div>
此外,如果您过滤页面发出的 GET 请求,您可以看到,当您在文本 bax 中插入一个值时,json 正在由 ajax 请求:
{
"locations": [{
"value": "47977",
"altValue": null,
"display": "19901",
"type": "zipCode",
"propertyIndex": "",
"index": 0
}, {
"value": "47978",
"altValue": null,
"display": "19902",
"type": "zipCode",
"propertyIndex": "",
"index": 1
}, {
"value": "47979",
"altValue": null,
"display": "19903",
"type": "zipCode",
"propertyIndex": "",
"index": 2
}, {
"value": "47980",
"altValue": null,
"display": "19904",
"type": "zipCode",
"propertyIndex": "",
"index": 3
}, {
"value": "47981",
"altValue": null,
"display": "19905",
"type": "zipCode",
"propertyIndex": "",
"index": 4
}],
"suggestions": [],
"success": true,
"errors": []
}
这类似于我第一次给你的最后一个例子(使用 ajax 为你的搜索设置一个隐藏的 vaule 输入),然后在你的 php 文件中你可以切换到那个隐藏的输入值,在 json 中是 @987654327 @
您可以使用这些附加信息再次阅读最后一个方法。
如果我理解错了,请告诉我,希望对你有所帮助。
如果您想为客户将搜索的每种搜索类型获取分隔列表,您可以输入另一个输入来引用搜索类型:
<select name="field">
<option value="zip">Zip Code</option>
</select>
<input type="text" name="keyword" />
然后在你的 php 代码中:
$field = $_REQUEST['field'];
$keyword = $_REQUEST['keyword'];
$query = "SELECT * FROM tbl_property";
$where = "";
switch ($field) {
case 'zip':
$where = " WHERE zip = " . $keyword;
break;
case 'addr':
$where = " WHERE addr like " . $keyword . "%";
break;
case 'city':
$where = " WHERE city like " . $keyword . "%";
break;
}
$query = $query . $where . " GROUP BY zip LIMIT 0,5";
这将为您提供一个单独的列表,具体取决于客户搜索的内容。
其他形式是分析关键字中的数据,例如你知道如果你只有一个也可以转换为数字的单词,它指的是一个邮政编码
您可以为此使用数组:
$keyword = $_REQUEST['keyword'];
$query = "SELECT * FROM tbl_property";
$where = "";
$parms = split(" ", $keyword);
if(count($parms) == 1 && intval($parms[0], 10) > 0){
$where = " WHERE zip = " . $keyword;
}elseif (count($parms) > 1){
$where = " WHERE addr like %" . $keyword . "%";
}
这取决于你自己的逻辑。
如果我理解错了,请告诉我,希望对你有所帮助。
MOD 03/05/2015 8:00:00 p.m.
您还可以使用 javascript 和 ajax 获取您拥有的城市、邮政编码和地址列表,并在隐藏输入中设置您将进行的搜索类型。例如,使用 jQuery:
<input type="text" name="keyword" id="keyword" />
<input type="hidden" name="field" id="field" value="all" />
<div id="lists"></div>
<script>
$('#keyword').change(function() {
$.ajax({
type: "POST",
url: "req.php",
data:{ key: $(this).val() },
success: function(data){
$('#lists').html(data);
}
});
});
$('#lists ul li').click(function(){
$('#keyword').val($(this).html());
$('#field').val($(this).parent().data('field'));
});
</script>
关于 req.php
$key = $_POST['key'];
$db = new mysqli('localhost', 'user', 'pass', 'db');
$query = "SELECT zip FROM tbl_property WHERE zip like " . $key . "%;";
$zips = $db->query($query);
$query = "SELECT addr FROM tbl_property WHERE addr like " . $key . "%;";
$addrs = $db->query($query);
echo ('<h1>Zips</h1><ul data-field="zip">');
while($row = $zips->fetch_assoc()){
echo ("<li>" . $row['zip'] . "</li>");
}
echo ('</ul><hr /><h1>Addrs:</h1><ul data-field="addr">');
while($row = $addrs->fetch_assoc()){
echo ("<li>" . $row['addr'] . "</li>");
}
echo ('</ul>');
$db->close();
如果我没有错过任何东西,它应该可以工作。
如果我理解错了,请告诉我,希望对你有所帮助。