Foros del Web » Programando para Internet » Jquery »

Jquery autocomplete y arrays

Estas en el tema de Jquery autocomplete y arrays en el foro de Jquery en Foros del Web. Esta consulta al foro va a ser algo extensa, agradezco de antemano a los que respondan. Necesito obtener un valor de un array multidimensional de ...
  #1 (permalink)  
Antiguo 11/09/2013, 15:35
 
Fecha de Ingreso: junio-2012
Ubicación: colombia
Mensajes: 48
Antigüedad: 11 años, 11 meses
Puntos: 0
Pregunta Jquery autocomplete y arrays

Esta consulta al foro va a ser algo extensa, agradezco de antemano a los que respondan.
Necesito obtener un valor de un array multidimensional de el plugin jquery-autocomplete, el array toma el valor de una consulta realizada a la base de datos desde php:
Código PHP:
$consulta "SELECT * FROM usuarios WHERE identificacion LIKE '%$nombre%' OR nombre LIKE '%$nombre%' ";
 
$result $conexion->query($consulta);
 
if(
$result->num_rows 0){
    while(
$fila $result->fetch_array()){
        
$nombres[] = "'".$fila['identificacion']."' '".$fila['nombre']."'";
        
    }
echo 
json_encode($nombres); 
la consulta se pude realizar mediante el nombre o la identificacion de la persona, y este trae los valores correspondientes. ejemplo, si escribo las letras ma en el input-text el muestra:
|ma | (este es el input-text con id="paciente")
|'121234''maria camila' |
|'664556''maria alejandra'| (estos dos son los resultados de las consultas)
(Guardar)--->Boton para guardar
este es el script que hace funcionar el autocomplete:
Código Javascript:
Ver original
  1. $( "#paciente" ).autocomplete({
  2.         source: "php/buscarPaciente.php",
  3.     });
  4.      
  5.  
  6.     });
tengo una tabla en la base de datos con varios campos entre esos estan identeficacion y usuario, pero como pueden ver el autocomplete me los trae como si fuesen uno solo, lo que quiero hacer es que al momento de seleccion por ejemplo:"maria camila", el divida ese arreglo y tome el valor de la identificacion y de el nombre como valores independientes.
esta es la funcion de java script que utilizo para guardar los datos:
Código Javascript:
Ver original
  1. start = $.fullCalendar.formatDate(start, "yyyy-MM-dd HH:mm:ss");
  2.         end = $.fullCalendar.formatDate(end, "yyyy-MM-dd HH:mm:ss");
  3.         nombre = $('#paciente').val(); //input que toma el valor del nombre
  4.         descripcion = $('#descripcion').val();
  5.         ini = $('#apptStartTime').val();//input-hidden que toma el valor de la hora inicial
  6.         fin = $('#apptEndTime').val();//input-hidden que toma el valor de la hora final
  7.       $.ajax({
  8.         url: 'php/agregar_eventos.php',
  9.         data: 'nombre='+ nombre+'&description='+ descripcion +'&start='+ ini +'&end='+ fin ,
  10.         type: "POST",
  11.         success: function(json) {
  12.         alert('OK');
  13.         }
  14.         });
  15.  
  16.    }

como pueden ver la variable nombre toma el valor del input-text, pero en ella estan los valores de identificacion y nombre, asi que necesito dividirlos, ejemplo:
cuando escribo 'ma' aparecen las dos opcion y selecciono la primera, inmediatamente en el input se llena con la opcion que seleccione supongamos que es la primera ->
|'121234''maria camila' | recuerden que este es el input-text con id="paciente" , pero quiero tomar el nombre y la identificacion de forma independiente para que al momento de guardarlas no esten en la base de datos juntas.
Espero haberme dado a entender, la verdad es que apenas estoy empezando a manejar javascript y se que necesito aprender mucho.
Muchas gracias.
  #2 (permalink)  
Antiguo 12/09/2013, 10:51
 
Fecha de Ingreso: septiembre-2013
Mensajes: 13
Antigüedad: 10 años, 7 meses
Puntos: 1
Respuesta: Jquery autocomplete y arrays

Hola yamidvo espero haber entendido bien tu pregunta quieres que lo que se guarde en el array se guarde por separado verdad?...

Bueno hay una forma de hacerlo aquí te lo dejo

Código PHP:
Ver original
  1. $consulta = "SELECT * FROM usuarios WHERE identificacion LIKE '%$nombre%' OR nombre LIKE '%$nombre%' ";
  2.  
  3. $result = $conexion->query($consulta);
  4.  
  5. if($result->num_rows > 0){
  6.     while($fila = $result->fetch_array()){
  7.         $nombres[$fila['identificacion']] = $fila['nombre'];
  8.          
  9.     }
  10. echo json_encode($nombres);

Ahora te explico un poco el código de arriba, los arrays tienen dos propiedades importantes una que es la clave y otra el valor.

La clave es el id que tiene un array y el valor (aunque suene redundante) es el valor que puede adquirir dicha clave. Ejm:

Código PHP:
Ver original
  1. $ejemplo[0] = "manzana";
  2. $ejemplo[1] = "pera";
  3. //La clave o id para manzana es 0
  4. //La clave o id para manzana es 1
  5.  
  6. $ejemplo["nombre"] = "Maria";
  7. $ejemplo["edad"] = 18;
  8. //La clave o id para Maria es nombre
  9. //La clave o id para 18 es edad

Ahora aclarado el tema del array vamos con el javascript lo modifique un poco:

Código Javascript:
Ver original
  1. var nombre = document.getElementById('nombres').value; //valor del input que toma el nombre
  2. var id = document.getElementById('nombres').id; //id del input que toma el nombre
  3. var descripcion = document.getElementById('descripcion').value
  4. var ini = document.getElementById('apptStartTime').value;//input-hidden que toma el valor de la hora inicial
  5. var fin = document.getElementById('apptEndTime').value;//input-hidden que toma el valor de la hora final
  6. $.ajax({
  7.         url: 'php/agregar_eventos.php',
  8.         data: 'nombre='+ nombre+'&description='+ descripcion +'&start='+ ini +'&end='+ fin ,
  9.         type: "POST",
  10.         success: function(data) {
  11.         alert('OK');
  12.         }
  13.         });

Respecto a este código no puse lo de la fecha porque no entendi de donde sacabas los datos pruebalo y espero que te sirva. Saludos!
  #3 (permalink)  
Antiguo 14/09/2013, 12:04
 
Fecha de Ingreso: junio-2012
Ubicación: colombia
Mensajes: 48
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Jquery autocomplete y arrays

Hola chiney92, gracias por la respuesta, demore porque no habia podido probar el codigo.
aun no he logrado integrar lo que escribiste con lo que yo tengo, hay una funcion en jquery que es indispensable para que se llenen los inputs, es la siguiente:
Código Javascript:
Ver original
  1. select: function(event, ui){
  2.       $("#nombre").val(ui.item.label);
  3.      $("#identificacion").val(ui.item.value);
  4.      return false;
  5.    }
al momento que se selecciona en el cuadro de autocompletar un nombre esta funcion hace que se llenen los dos inputs con el nombre y la identificacion correspondiente a la persona, pero esto solo funciona cuando declaro este array:
Código Javascript:
Ver original
  1. var datos = [
  2.    {
  3.       value: "12123",//identificacion
  4.       label:"pedro"//nombre
  5.    },
  6.    {
  7.       value: "1212",
  8.       label:"juan"
  9.    }];
cuando extraigo esos datos de la base de datos de esta forma:
Código PHP:
Ver original
  1. if($result->num_rows > 0){
  2.     while($fila = $result->fetch_assoc()){
  3.         $nombres=  array("label" => $fila['identificacion'], "value" => $fila['nombre']);
  4.        
  5.     }
  6. echo json_encode($nombres);
  7. }
esto es lo que me arroja la query en la consola:
{"label":"1212","value":"juan"}
como puedes ver label y value aparecen en comillas, tal vez por eso no funciona.
tu codigo no me funciona porque no veo la forma de utilizar la funcion select con el codigo que propones.
  #4 (permalink)  
Antiguo 16/09/2013, 08:37
 
Fecha de Ingreso: septiembre-2013
Mensajes: 13
Antigüedad: 10 años, 7 meses
Puntos: 1
Respuesta: Jquery autocomplete y arrays

Hola yamidvo, no te preocupes yo también e tenido algunas complicaciones con el programa que estoy haciendo uff :)

Pero bueno si el código que te propuse no te funciona porque no pones todo tu código completo y el script de tu base de datos para poder tener una mejor visión de lo que quieres hacer y poder ayudarte mejor.

Saludos!
  #5 (permalink)  
Antiguo 16/09/2013, 10:20
 
Fecha de Ingreso: junio-2012
Ubicación: colombia
Mensajes: 48
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Jquery autocomplete y arrays

Hola chiney92, cree un jsfiddle para explicar mejor lo que quiero, en la ultima parte del codigo javascript se encuentran las funciones que llenan el autocomplete, me toca declarar un array asociativo en javascript ya que jsfiddle no admite script php ni tampoco soporta lectura a mysql, en definitiva quiero que la lectura del array aosiativo en php tenga las mismas caracteristicas que el array asosiativo en javascript. en la parte css dejo unos comentario con enlaces a imagenes para que puedas ver mejor.
de antemano muchas gracias.
link:
http://jsfiddle.net/yamidvo/C3JaS/23/
nota: debes dar click sobre un dia de la semana para que ocurra la magia
  #6 (permalink)  
Antiguo 17/09/2013, 09:38
 
Fecha de Ingreso: septiembre-2013
Mensajes: 13
Antigüedad: 10 años, 7 meses
Puntos: 1
Respuesta: Jquery autocomplete y arrays

Hola yamidvo bueno estoy viendo tu codigo y funciona todo correcto me dices que el error te sale al llenar el array con la base de datos no?...

No se si tu consulta de php esta funcionando correctamente pero intenta poner las comillas de esta manera

Código PHP:
Ver original
  1. $consulta = "SELECT * FROM usuarios WHERE identificacion LIKE %'".$nombre."'% OR nombre LIKE %'"$nombre"'%";

Bueno si puedes mandame tus archivos en un .rar para ver si te hecho una mano ;)
  #7 (permalink)  
Antiguo 17/09/2013, 11:23
 
Fecha de Ingreso: junio-2012
Ubicación: colombia
Mensajes: 48
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Jquery autocomplete y arrays

Hola chiney, gracias por responder ya lo pude solucionar. :D
  #8 (permalink)  
Antiguo 17/02/2015, 15:57
 
Fecha de Ingreso: febrero-2013
Mensajes: 43
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Jquery autocomplete y arrays

Pues los foros están para que digas cómo lo solucionaste no para que digas "ya lo solucioné" y ya. Muchos tenemos el mismo problema. please comenta como lo resolviste, necesito exactamente eso que te estaba pasando a ti.

Por fa. Saludos

Etiquetas: ajax, arrays, funcion, input, javascript, js, php, select, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:52.