我正在尝试为phpdesktop-chrome中的输入表单获取自动完成选项,该选项从数据库中获取数据并在用户输入时代表输入区域附近。我正在使用的数据库是sqlite3数据库。
HTML
<form action="actionpage.php" method="POST" class="register-form" id="register-form" autocomplete="on" >
<label for="itemname"> Item Name</label>
<input type="text" name="itemname" id="itemname" required placeholder="Enter item name">
<input action="insertpage.php" type="submit" name="submit" value="Submit">
</form>
JS
<script>
var items = [ <?php
$result=$db->query("SELECT * FROM register WHERE itemname='$itemname'");
while($row=$result->fetchArray(SQLITE3_ASSOC)) {
$item=$row['itemname'];
} ?>
];
autocomplete(document.getElementById("itemname"), items);
</script>
答案 0 :(得分:0)
使用我的代码,它将起作用
按照这两个步骤,您可以获得解决方案
1.首先使用php函数
2.然后使用JavaScript
PHP函数
function pre_json($array,$view=false){
if($view) echo '<pre>';
echo json_encode($array, JSON_NUMERIC_CHECK | JSON_PRETTY_PRINT );
if($view) echo '</pre>';
}
function DBExecute($sql,$type){
global $db;
if($sql !='' && $type !=''){
switch (strtolower($type) ){
case 'select':
$result = $db->query($sql);
if($result){
$resultSet = array();
while($row = $result->fetch(PDO::FETCH_ASSOC)){
$resultSet[] = $row;
}
return $resultSet;
}else{
echo 'Error in Selection Query <br>'.$sql.'<br>';
$error = $db->errorInfo();
echo '<strong>'.$error[2].'</strong>';
exit();
}
break;
default :
return false;
}
}
}
?>
脚本
<script>
<?php
$sql = "SELECT * FROM `register` WHERE itemname='$itemname'";
$result = DBExecute($sql,'select');
?>
var json = <?=pre_json($result);?>;
$("#itemname").autocomplete({
source:json,
minLength:0,
select:function(event,ui) {
event.preventDefault();
// console.log(ui.item);
$("#itemname").val(ui.item.itemname);
}
}).focus(function(event) {
$(this).autocomplete("search");
});
</script>
那么它将自动绑定到您的输入字段中
<form action="actionpage.php" method="POST" class="register-form" id="register-form" autocomplete="on" >
<label for="itemname"> Item Name</label>
<input type="text" name="itemname" id="itemname" required placeholder="Enter item name">
<input action="insertpage.php" type="submit" name="submit" value="Submit">
</form>