JQuery - Como re-Utilizar el mismo Autocomplete de Jquery para diferentes tablas en un mismo formulario ?

 
Vista:
Imágen de perfil de Pedro

Como re-Utilizar el mismo Autocomplete de Jquery para diferentes tablas en un mismo formulario ?

Publicado por Pedro (2 intervenciones) el 19/03/2017 19:48:23
Como re-Utilizar el mismo Autocomplete de Jquery para diferentes tablas en un mismo formulario ?

PHP HTML MYSQL JQUERY JS

Tengo un formulario con varios campos:
- Nombre de Cliente
- Nombre de Asociado
- Nombre de Contratista.


Para cada uno de estos, existe una tabla:
- Tabla para Clientes: tclientes (id_cli INT(5)PK, codigo_cli INT(5), nombre_cli VARCHAR(30))
- Tabla para Asociados tasociados (id_aso INT(5)PK, codigo_aso INT(5), nombre_aso VARCHAR(30))
- Tabla para Contratistas: tcontratistas (id_con INT(5)PK, codigo_con INT(5), nombre_con VARCHAR(30))
y por ultimo, la tabla tproyectos que es donde se grabaran los datos.


En el formulario debo seleccionar de una lista el nombre de cada uno y mostrarlo en su cuadro de texto (con Autocomplete de Jquery),


Lo que hice:

Antes del input "Nombre del Cliente", le asigno el valor "cli" a la variable $control,
<?php $control = "cli"; ?> y lo paso al consulta.php, (donde se realizara la consulta).


En formulario.php:

<label for="user_nombrecli">Cliente<br /></label>
<input name="nomclie_pro" type="text" class="input" id="id_cli" onKeyUp="autocomplet()" value="" size="11">
<ul id="lista_id_cli"></ul>


(tambien se podia pasar en ...value="cli" del input)

este valor ("cli") lo llevo a consulta.php, para definir los parametros para la consulta,

switch ($control) {
case 'cli':
$vtabla = 'tclientes';
$vnombre = 'nombre_cli';
break;
case 'aso':
$vtabla = 'tasociados';
$vnombre = 'nombre_aso';
break;
case 'con':
$vtabla = 'tcontratistas';
$vnombre = 'nombre_con';
break;
}




asi, en "Nombre del Cliente", la tabla a escoger sera "tclientes" y el campo sera "nombre_cli"
las variables seran:

$vartabla = "tclientes";
$varnombre = "nombre_cli";

la consulta seria:

$sql = "SELECT * FROM $vartabla WHERE $varnombre LIKE (:keyword) ORDER BY $varnombre ASC LIMIT 0, 10";




El problema es que al colocar algo de codigo en consulta.php, ya no funciona el Autocomplete.

(probe pasar variables con $POST, include y con session) y es lo mismo.


Sabe alguien que es lo que estoy haciendo mal? o dejando de hacer ?'

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 141
Plata
Ha mantenido su posición en JQuery (en relación al último mes)
Gráfica de JQuery

Como re-Utilizar el mismo Autocomplete de Jquery para diferentes tablas en un mismo formulario ?

Publicado por kip (38 intervenciones) el 20/03/2017 03:26:32
Hola, no colocas tu codigo javascript, seria bueno verlo. Por ahora puedo decirte que ese valor que sera el de la variable $control en tu archivo consulta.php deberias enviarlo desde la misma peticion AJAX que realizas en el autocomplete., si ya lo haces por favor coloca el codigo....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Pedro

Como re-Utilizar el mismo Autocomplete de Jquery para diferentes tablas en un mismo formulario ?

Publicado por Pedro (2 intervenciones) el 20/03/2017 22:29:11
Saludos !

Gracias, KIP por responder tan pronto. Este es el codigo autocomplete.js:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// ESTE ES EL SCRIPT UTTILIZADO
function autocomplet() {
	var min_length = 0;
	var keyword = $('#id_cli').val();
	if (keyword.length >= min_length) {
		$.ajax({
			url: 'refresh_cli.php',
			type: 'POST',
			data: {keyword:keyword},
			success:function(data){
				$('#lista_id_cli').show();
				$('#lista_id_cli').html(data);
			}
		});
	} else {
		$('#lista_id_cli').hide();
	}
}
 
// Funcion para colocar el valor en el input y "recoger" la lista
function set_item(item) {
	// Para el input
	$('#id_cli').val(item);
	// Para recoger la lista
	$('#lista_id_cli').hide();
}

Tambien te envio el refresh_cli.php , qu es donde hago la consulta y alli es que necesito que funcionen las variables $vartabla y $varnombre (la consulta esta en // comentario). Gracias .

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
// PDO connect *********
function connect() {
   return new PDO('mysql:host=localhost;dbname=dbg', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
}
 
 
$pdo = connect();
$keyword = '%'.$_POST['keyword'].'%';
$sql = "SELECT * FROM tclientes WHERE nombre_cli LIKE (:keyword) ORDER BY nombre_cli ASC LIMIT 0, 10";
 
 
 
//$sql = 'SELECT * FROM ' .$vartabla. ' WHERE '.$varnom.' LIKE (:keyword) ORDER BY '.$varnom.' ASC LIMIT 0, 10' ;
 
 
 
$query = $pdo->prepare($sql);
$query->bindParam(':keyword', $keyword, PDO::PARAM_STR);
 
 
 
$query->execute();
$list = $query->fetchAll();
foreach ($list as $rs) {
	// put in bold the written text
 
	$nombre_cli = str_replace($_POST['keyword'], '<b>'.$_POST['keyword'].'</b>', $rs['nombre_cli']);
	// add new option
    echo '<li onclick="set_itemcli(\''.str_replace("'", "\'", $rs['nombre_cli']).'\')">'.$nombre_cli.'</li>';
}
 
 
?>
FIN
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar