Php 如何从jquery ui自动完成保存ID和no数据?

Php 如何从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 =

我有以下代码:

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 = 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。更新答案。