我正在使用所选的jquery插件,它将多选框改为facebook风格的选择器。我正在填写英国邮政编码以及显示选定的邮政编码。
由于我的PHP请求从我的邮政编码数据库中检索了大量数据,因此页面显然运行得非常慢,但我想只能在用户输入框中输入1个字符后才能检索数据。
我知道我必须使用Ajax并且我认为JSON,但现在确定如何?
这是我的代码
<select name="zipcode[]" style="width:600px; height:250px;" multiple class="chzn-select" id="zipcode">
<?php $arraypostcode = explode(",", $zipcode); ?>
<?php
do { // begin loop
?>
<option value="<?php echo $row_postcode['code']?>"<?php for ($i=0; $i<sizeof($arraypostcode); $i++) {if ($row_postcode['code'] == $arraypostcode[$i]) {echo " selected"; break;}}?>><?php echo $row_postcode['code']?></option>
<?php
} while ($row_postcode = mysql_fetch_assoc($postcode)); // end loop
$rows = mysql_num_rows($postcode);
if($rows > 0) {
mysql_data_seek($postcode, 0);
$row_postcode = mysql_fetch_assoc($postcode);
}
?>
</select>
PHP请求:
<?php
$postcode = mysql_query( "SELECT postcode.code FROM postcode");
$row_postcode = mysql_fetch_assoc($postcode);
$totalRows_postcode = mysql_num_rows($postcode);
?>
任何想法?
答案 0 :(得分:0)
使用ajax:
你可以运行
$postcode = mysql_query( "SELECT postcode.code FROM postcode WHERE code LIKE 'YOUR_USER_VALUE%'");
$row_postcode = mysql_fetch_assoc($postcode);
$totalRows_postcode = mysql_num_rows($postcode);
每次用户输入字符时都必须运行
LIKE'VALUE%'如果您熟悉其他编程语言为java或其他东西,那么sql中的这几乎意味着startsWith(“VALUE”)。
如果您的值存储为数字,那么您必须转换:
cast(code as char)
答案 1 :(得分:0)
你可以尝试这些方法。
在表格页面上:
<input type="text" name="postcodeSearch" onChange="getPostcodes(this.value); return false;">
<div id="postcodeSelector"></div>
使用Javascript:
function getPostcodes(input){
if(input.length >= 3){
searchPostcodes(input);
}
}
function searchPostcodes(input){
$.ajax({
url:'/url/to/postcodeSearch',
data: "input=" + input,
dataType: 'html',
timeout: 5000,
success: function(data, status) {
$("#postcodeSelector").html(data);
}
}
}
在/ usr / to / postcodeSearch页面:
$input = $_GET["input"];
## Do database search with 'input' string
$postcodes = $somedbconnection->searchPostcodes($input);
?>
<select name="postcode">
<? foreach($postcodes as $postcode){ ?>
<option value='<?=$postcode["id"]?>'><?=$postcode["postcode"]?></option>
<? } ?>
</select>