Php 如何从jquery ui自动完成保存ID和no数据?
我有以下代码: buscarcliente.phpPhp 如何从jquery ui自动完成保存ID和no数据?,php,jquery,sql,jquery-ui,Php,Jquery,Sql,Jquery Ui,我有以下代码: buscarcliente.php <?php include("../../conexion.php"); $nombre=$_GET["term"]; $sql_cliente="SELECT cod, nombre FROM rc_clientes WHERE nombre LIKE '%$nombre%'"; $buscar = mysqli_query($conexion,$sql_cliente); $json=array(); while($row =
<?php
include("../../conexion.php");
$nombre=$_GET["term"];
$sql_cliente="SELECT cod, nombre FROM rc_clientes WHERE nombre LIKE '%$nombre%'";
$buscar = mysqli_query($conexion,$sql_cliente);
$json=array();
while($row = mysqli_fetch_array($buscar)) {
array_push($json, $row['nombre']);
}
echo json_encode($json);
?>
renta_form.php HTML:
<tr>
<td><b>Cliente:</b><br><input id="cliente" name="cliente" type="text"></td>
</tr>
JavaScript:
$(function() {
$( "#cliente" ).autocomplete({
source: 'modulos/renta/buscarcliente.php',
select: function(event, ui)
{
$("#cliente").val(ui.item.label);
$("#cliente_cod").val(ui.item.value);
}
});
});
PHP
如果您的数据类似于:
cod nombre
1 Homer Simpson
2 Marge Simpson
3 Bart Simpson
4 Lisa Simpson
5 Maggie Simpson
运行SQL查询时,例如:
SELECT cod, nombre FROM rc_clientes WHERE nombre LIKE '%b%'
您将得到如下结果集:
3 Bart Simpson
当我们通过JSON将其传回时,我们需要一个值
和一个标签
。为了实现这一点,我们希望在PHP中执行以下操作。您需要调整PHP,因为它非常容易受到SQL注入的攻击
PHP代码片段
$json=array();
while($row = mysqli_fetch_array($buscar)) {
array_push($json, array('value' => $row['cod'], 'label' => $row['nombre']));
}
header('Content-Type: application/json');
echo json_encode($json);
<table>
<tr>
<td><b>Empleado:</b>
<br>
<input id="empleado" type="text">
<input id="empleado_cod" type="hidden">
</td>
</tr>
</table>
$(function() {
$("#empleado").autocomplete({
source: 'modulos/inspeccion/buscarcliente.php',
focus: function(event, ui){
$("#empleado").val(ui.item.label);
return false;
},
select: function(event, ui){
$("#empleado").val(ui.item.label);
$("#empleado_cod").val(ui.item.value);
return false;
}
});
});
生成的JSON数据应该是:
[
{
"value": 3,
"label": "Bart Simpson"
}
]
现在,我们可以处理我们在选择回调中使用的方法:
HTML代码片段
$json=array();
while($row = mysqli_fetch_array($buscar)) {
array_push($json, array('value' => $row['cod'], 'label' => $row['nombre']));
}
header('Content-Type: application/json');
echo json_encode($json);
<table>
<tr>
<td><b>Empleado:</b>
<br>
<input id="empleado" type="text">
<input id="empleado_cod" type="hidden">
</td>
</tr>
</table>
$(function() {
$("#empleado").autocomplete({
source: 'modulos/inspeccion/buscarcliente.php',
focus: function(event, ui){
$("#empleado").val(ui.item.label);
return false;
},
select: function(event, ui){
$("#empleado").val(ui.item.label);
$("#empleado_cod").val(ui.item.value);
return false;
}
});
});
请参阅更多:
欢迎使用堆栈溢出。请包含从PHP脚本返回的一些示例数据。查看您的JavaScript代码也可能会有所帮助。非常感谢!!但我有一个小问题,当我查找一个名称时,名称列表会出现,但当我选择名称时,输入(#empleado)(标签)会自动按cod(值)更改。你认为这里发生了什么事?@IvanJ。这表明您没有将值
委托到某个地方存储。请编辑您的帖子并包含更新的示例代码。我忘记了一个元素:returnfalse代码>。更新答案。