Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Direccionar resultado de un Live Search a un textbox especifico

Estas en el tema de Direccionar resultado de un Live Search a un textbox especifico en el foro de Frameworks JS en Foros del Web. tengo un live search que hize que jala datos de una tabla de mi BD, el live search me sale bien en lo que respecta ...
  #1 (permalink)  
Antiguo 16/04/2009, 08:51
Avatar de gokufast  
Fecha de Ingreso: abril-2007
Mensajes: 540
Antigüedad: 17 años, 8 meses
Puntos: 3
Direccionar resultado de un Live Search a un textbox especifico

tengo un live search que hize que jala datos de una tabla de mi BD, el live search me sale bien en lo que respecta a socio porque cuando elijo un resultado de la busqueda esta me sale en el textbox del socio.

El problema es cuando hago lo mismo para los garantes, cuando elijo una opcion de los resultados que salen este se va al textbox del socio y no asi al textbox del garante.

Se que es cosa de Ajax, y especificamente dentro el archivo buscar.js, en la funcion selected(choice), pero soy nuevo en esto de ajax y el codigo lo fui adaptando medianamente a mis necesidades pero me tranque en esto, ojala me puedan ayudar.

Aca esta una muestra de la tabla de mi BD.

Cita:
CREATE TABLE `socios` (
`SOC_COD` VARCHAR(20) COLLATE utf8_general_ci DEFAULT NULL,
`SOC_APP` CHAR(20) COLLATE utf8_general_ci DEFAULT NULL,
`SOC_APM` CHAR(20) COLLATE utf8_general_ci DEFAULT NULL,
`SOC_NOMB` CHAR(50) COLLATE utf8_general_ci DEFAULT NULL,
`SOC_CI` CHAR(20) COLLATE utf8_general_ci DEFAULT NULL
)ENGINE=InnoDB
COLLATE 'utf8_general_ci' INSERT_METHOD=NO;
COMMIT;

INSERT INTO `socios` (`SOC_COD`, `SOC_APP`, `SOC_APM`, `SOC_NOMB`, `SOC_CI`) VALUES
('100', 'aaa', 'bbb', 'ccc', '123'),
('200', 'ddd', 'eee', 'fff', '456'),
('300', 'ggg', 'hhh', 'iii', '789'),
('400', 'jjj', 'kkk', 'lll', '135'),
('500', 'mmm', 'nnn', 'ooo', '246');
01.php (la pagina principal)
Código HTML:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Tabla de Amortizaci&oacute;n de Pr&eacute;stamos</title>
<script type="text/javascript" src="buscar.js"></script>
</head>
<body>

<form method="get" id="searchform" action="">
<div align="center" class="titulo"><strong>Tabla de Amortizaci&oacute;n de Pr&eacute;stamos</strong></div><br>
<table border="1" align="center">
<tr>
   <td class="subtitulos" align="right">
   		Socio:   
   </td>
   <td colspan="5">
   	<input type="text" name="socio" id="socio" size="85" readonly="readonly"/>
   </td>
</tr>
<tr>
   <td align="right" class="subtitulos">Busqueda de Socio:</td>
   <td align="center">
   		<input type="text" value="" name="codigo" id="codigo" onkeyup="request_codigo_socio(this.value);" size="4" maxlength="5"/><br />
     	Numero Socio 
   </td>
</tr>
<tr align="center">
	<td colspan="6" align="left">
    	<div id="tag_update_socio"></div>
    </td>
</tr>
<tr>
   <td class="subtitulos" align="right">
   		Garante 1:   
   </td>
   <td colspan="5">
   	<input type="text" name="garante_1" id="garante_1" size="85" readonly="readonly"/>
   </td>
</tr>
<tr>
   <td align="right" class="subtitulos">Busqueda de Garante 1:</td>
   <td align="center">
   		<input type="text" value="" name="codigo" id="codigo" onkeyup="request_codigo_garante_1(this.value);" size="4" maxlength="5"/><br />
     	Numero Socio 
   </td>
</tr>
<tr>
	<td colspan="6" align="left" >
    	<div id="tag_update_garante_1"></div>
    </td>
</tr>
</table>    
</form>
</body>
</html> 
buscar.js
Código PHP:
var myAjax ajax();
function 
ajax() 
{
   var 
ajax null;
   if (
window.XMLHttpRequest
   {
      try 
      {
         
ajax = new XMLHttpRequest();
      }
      catch(
e) {}
   }
   else if (
window.ActiveXObject
   {
      try 
      {
         
ajax = new ActiveXObject("Msxm12.XMLHTTP");
      }
      catch (
e)
      {
         try
         {
            
ajax = new ActiveXObject("Microsoft.XMLHTTP");
         }
         catch (
e) {}
      }
   }
   return 
ajax;
}

//////////////////////////////////////////////////////////////////////////////
// Datos del Socio
//////////////////////////////////////////////////////////////////////////////
function request_codigo_socio(str) {
   
//Don't forget to modify the path according to your theme
   
myAjax.open("POST""ajax_codigo_socio.php");
   
myAjax.onreadystatechange result;
   
myAjax.setRequestHeader("Content-type""application/x-www-form-urlencoded");
   
myAjax.send("search="+str);
}
function 
result() 
{
   if (
myAjax.readyState == 4
   {
      var 
liste myAjax.responseText;
      var 
cible document.getElementById('tag_update_socio').innerHTML liste;
      
document.getElementById('tag_update_socio').style.display "block";
   }
}

function 
selected(choice)
{
   var 
cible document.getElementById('socio');
      var 
posc 0;
      for (var 
i=cible.value.length-1i>=0i--)   
      {
         var 
caracter cible.value[i];
         if (
caracter==" ")
         {
            
posc i+1;
            break;
         }
      }
   
cible.value cible.value.substring(0,posc)+""+choice+" ";
      
cible.focus();
   
document.getElementById('tag_update_socio').style.display "none";
}

//////////////////////////////////////////////////////////////////////////////
// Datos del Garante 1
//////////////////////////////////////////////////////////////////////////////
function request_codigo_garante_1(str) {
   
//Don't forget to modify the path according to your theme
   
myAjax.open("POST""ajax_codigo_garante_1.php");
   
myAjax.onreadystatechange result_garante_1;
   
myAjax.setRequestHeader("Content-type""application/x-www-form-urlencoded");
   
myAjax.send("search="+str);
}
function 
result_garante_1() 
{
   if (
myAjax.readyState == 4
   {
      var 
liste myAjax.responseText;
      var 
cible_garante_1 document.getElementById('tag_update_garante_1').innerHTML liste;
      
document.getElementById('tag_update_garante_1').style.display "block";
   }
}

function 
selected_garante_1(choice)
{
   var 
cible_garante_1 document.getElementById('garante_1');
      var 
posc 0;
      for (var 
i=cible_garante_1.value.length-1i>=0i--)   
      {
         var 
caracter cible_garante_1.value[i];
         if (
caracter==" ")
         {
            
posc i+1;
            break;
         }
      }
   
cible_garante_1.value cible_garante_1.value.substring(0,posc)+""+choice+" ";
   
cible_garante_1.focus();
   
document.getElementById('tag_update_garante_1').style.display "none";

ajax_codigo_socio.php
Código PHP:
<?php
if (isset($_POST['search']))
    
$search htmlentities($_POST['search']);
else
   
$search ='';
$db mysql_connect('localhost','root','xXx'); //Don't forget to change
mysql_select_db('ufv'$db);           //theses parameters
$arreglo explode(' '$search);
if(
$arreglo[count($arreglo)-1]=="" || $arreglo[count($arreglo)-1]==" "){
   
mysql_close();
   die();
}
$sql "SELECT soc_cod,soc_app,soc_apm,soc_nomb,soc_ci from socios WHERE soc_cod LIKE '".$arreglo[count($arreglo)-1]."%' ORDER BY soc_cod";
$req mysql_query($sql) or die();
echo 
"<ol>";
while (
$data mysql_fetch_array($req))
{
   echo 
"<li><a href='#' onclick='selected(this.innerHTML);'>";
   echo 
$data['soc_cod']." ";
   echo 
$data['soc_app']." ";
   echo 
$data['soc_apm']." ";
   echo 
$data['soc_nomb']." ";
   echo 
$data['soc_ci'];
   echo 
"</a></li>";
}
echo 
"</ol>";
mysql_close();
?>
ajax_codigo_garante_1.php
Código PHP:
<?php
if (isset($_POST['search']))
    
$search htmlentities($_POST['search']);
else
   
$search ='';
$db mysql_connect('localhost','root','xXx'); //Don't forget to change
mysql_select_db('ufv'$db);           //theses parameters
$arreglo explode(' '$search);
if(
$arreglo[count($arreglo)-1]=="" || $arreglo[count($arreglo)-1]==" "){
   
mysql_close();
   die();
}
$sql "SELECT soc_cod,soc_app,soc_apm,soc_nomb,soc_ci from socios WHERE soc_cod LIKE '".$arreglo[count($arreglo)-1]."%' ORDER BY soc_cod";
$req mysql_query($sql) or die();
echo 
"<ol>";
while (
$data mysql_fetch_array($req))
{
   echo 
"<li><a href='#' onclick='selected(this.innerHTML);'>";
   echo 
$data['soc_cod']." ";
   echo 
$data['soc_app']." ";
   echo 
$data['soc_apm']." ";
   echo 
$data['soc_nomb']." ";
   echo 
$data['soc_ci'];
   echo 
"</a></li>";
}
echo 
"</ol>";
mysql_close();
?>
espero me haya expresado bien y me puedan ayudar.
  #2 (permalink)  
Antiguo 16/04/2009, 10:09
Avatar de eall  
Fecha de Ingreso: noviembre-2008
Ubicación: Concepcion
Mensajes: 127
Antigüedad: 16 años, 1 mes
Puntos: 8
Respuesta: Direccionar resultado de un Live Search a un textbox especifico

Basicamente es porque tus campos tienen el mimo ID (codigo) cambia los nombre a codigoSocio y codigoGarante y así te va a funcionar sin problemas.

Espero que sea el unico problema que tengas.

Saludos.
  #3 (permalink)  
Antiguo 16/04/2009, 11:34
Avatar de gokufast  
Fecha de Ingreso: abril-2007
Mensajes: 540
Antigüedad: 17 años, 8 meses
Puntos: 3
Respuesta: Direccionar resultado de un Live Search a un textbox especifico

te refieres al id del textbox donde se realiza la busqueda?
  #4 (permalink)  
Antiguo 16/04/2009, 14:12
Avatar de eall  
Fecha de Ingreso: noviembre-2008
Ubicación: Concepcion
Mensajes: 127
Antigüedad: 16 años, 1 mes
Puntos: 8
Respuesta: Direccionar resultado de un Live Search a un textbox especifico

ahora que veo tu codigo con mayor detención, probablemente sea la funcion selected. lo mas seguro es que al haber una respuesta siempre llame a esta función y no a la que tu definiste.

yo tampoco se mucho de ajax pero he hecho un tutorial de autocomple con jQuery más un plugin y lo puedes utilizar para tantos texbox quieras. si quieres puedes ver mi blog en mi perfil.

disculpa por la respuesta anterior, fue muy a la rapida.

Exito.
  #5 (permalink)  
Antiguo 17/04/2009, 09:34
Avatar de gokufast  
Fecha de Ingreso: abril-2007
Mensajes: 540
Antigüedad: 17 años, 8 meses
Puntos: 3
Respuesta: Direccionar resultado de un Live Search a un textbox especifico

pues no me salen en la lista los resultados de mi query
  #6 (permalink)  
Antiguo 17/04/2009, 10:28
Avatar de eall  
Fecha de Ingreso: noviembre-2008
Ubicación: Concepcion
Mensajes: 127
Antigüedad: 16 años, 1 mes
Puntos: 8
De acuerdo Respuesta: Direccionar resultado de un Live Search a un textbox especifico

descarga este plugin http://plugins.jquery.com/project/autocompletex y jQuery

incluyes estos archivos
Código javascript:
Ver original
  1. <script type="text/javascript" src="js/jquery.js"></script>
  2. <script type='text/javascript' src="js/jquery.autocomplete.js"></script>
  3. <link rel="stylesheet" type="text/css" href="js/jquery.autocomplete.css" />
  4. <script type="text/javascript" src="js/jquerymenu/jqueryslidemenu.js"></script>
  5. <script type='text/javascript' src="js/jquery.autocomplete.js"></script>

luego creas la función javascript jQuery
Código javascript:
Ver original
  1. <script type="text/javascript" >
  2.  
  3. $(document).ready(function(){
  4.  
  5.         $('#txtNombre').autocomplete('search.php?tip=a&opt=1', {
  6.             width: 260,
  7.             selectFirst: false
  8.         }).result(function(event, data, formatted) {
  9.             $('#txtNombre').val(data[1]);
  10.             $('#txtEdad').val(data[2]);
  11.             $('#txtDireccion').val(data[3]);
  12.             $('#selSexo').val(data[4]);
  13.             $('#selEstCivil').val(data[5]);
  14.         });
  15. });
  16. </script>

luego creas un archivo llamado search.php y le colocas este codigo y reemplazas la consulta y el resultado

Código php:
Ver original
  1. <?php
  2. require_once ("conexion/class.conexionDB.inc.php");
  3. $conn = new conexionBD ( );
  4. extract ( $_GET );
  5.  
  6. /* Consulta a Bases de datos. */
  7. if (isset ( $tip ) && $tip == 'a'){
  8.     if ($opt == 1) {
  9.         $sql = " SELECT DISTINCT
  10.                    PER_NOMBRE,
  11.                    PER_EDAD,
  12.                    PER_DIRECCION,
  13.                    PER_SEXO,
  14.                    PER_ESTCIVIL
  15.                FROM
  16.                    PERSONA";
  17.         if($q != ""){
  18.             $sql .= " WHERE
  19.                        (PER_NOMBRE like N'%$q%')  ";
  20.         }
  21.         $sp = $conn->EjecutarSQL ( $sql );
  22.         //$separador = "MOD: ";
  23.         while ( $row5 = $conn->FetchArray( $sp ) ) {
  24.             $str .= trim ( $row5 [PER_NOMBRE] ) . " $row5[PER_EDAD] - $row5[PER_SEXO]";  //LO QUE SERA MOSTRADO EN EL RECUADRO DESPLEGABLE
  25.             $str .= '|';
  26.             $str .= trim ( $row5 [PER_NOMBRE] ); //LO QUE ASIGNAREMOS AL CAMPO NOMBRE
  27.             $str .= '|';
  28.             $str .= trim ( $row5 [PER_EDAD] );
  29.             $str .= '|';
  30.             $str .= trim ( $row5 [PER_DIRECCION] );
  31.             $str .= '|';
  32.             $str .= trim ( $row5 [PER_SEXO] );
  33.             $str .= '|';
  34.             $str .= trim ( $row5 [PER_ESTCIVIL] );
  35.             $str .= "\n";
  36.         }
  37.     }
  38. }
  39.  
  40. echo $str;
  41. ?>

recuerda colocar nombres e ID distintas para cada campo, ya que JS trabaja con las ID.

Que estes bien y espero que te resulte.
  #7 (permalink)  
Antiguo 17/04/2009, 13:26
Avatar de gokufast  
Fecha de Ingreso: abril-2007
Mensajes: 540
Antigüedad: 17 años, 8 meses
Puntos: 3
Respuesta: Direccionar resultado de un Live Search a un textbox especifico

gracias!!! lo probare.

Bueno analizando practicamente linea a linea ya di con el problema, que tenia

en el archivo ajax_codigo_garante_1.php estaba direccionando a la funcion selected() del socio en el archivo buscar.js

este es el archivo ajax_codigo_socio.php

Cita:
<?php
if (isset($_POST['search']))
$search = htmlentities($_POST['search']);
else
$search ='';
$db = mysql_connect('localhost','root','xXx'); //Don't forget to change
mysql_select_db('ufv', $db); //theses parameters
$arreglo = explode(' ', $search);
if($arreglo[count($arreglo)-1]=="" || $arreglo[count($arreglo)-1]==" "){
mysql_close();
die();
}

En el primer echo del while podemos ver que al hacer clic llama a la funcion selected del socio en el archivo buscar.js.

ahora veremos que en la misma fila en el archivo ajax_codigo_garante_1.php tiene que llamar a la funcion selected_garante_1() del archivo buscar.js

ajax_codigo_garante_1.php


$sql = "SELECT soc_cod,soc_app,soc_apm,soc_nomb,soc_ci from socios WHERE soc_cod LIKE '".$arreglo[count($arreglo)-1]."%' ORDER BY soc_cod";
$req = mysql_query($sql) or die();
echo "<ol>";
while ($data = mysql_fetch_array($req))
{
echo "<li><a href='#' onclick='selected(this.innerHTML);'>";
echo $data['soc_cod']." ";
echo $data['soc_app']." ";
echo $data['soc_apm']." ";
echo $data['soc_nomb']." ";
echo $data['soc_ci'];
echo "</a></li>";
}
echo "</ol>";
mysql_close();
?>

ajax_codigo_garante_1.php

Cita:
<?php
if (isset($_POST['search']))
$search = htmlentities($_POST['search']);
else
$search ='';
$db = mysql_connect('localhost','root','xXx'); //Don't forget to change
mysql_select_db('ufv', $db); //theses parameters
$arreglo = explode(' ', $search);
if($arreglo[count($arreglo)-1]=="" || $arreglo[count($arreglo)-1]==" "){
mysql_close();
die();
}
$sql = "SELECT soc_cod,soc_app,soc_apm,soc_nomb,soc_ci from socios WHERE soc_cod LIKE '".$arreglo[count($arreglo)-1]."%' ORDER BY soc_cod";
$req = mysql_query($sql) or die();
echo "<ol>";
while ($data = mysql_fetch_array($req))
{
echo "<li><a href='#' onclick='selected_garante_1(this.innerHTML);'>";
echo $data['soc_cod']." ";
echo $data['soc_app']." ";
echo $data['soc_apm']." ";
echo $data['soc_nomb']." ";
echo $data['soc_ci'];
echo "</a></li>";
}
echo "</ol>";
mysql_close();
?>
con este cambio da exactamente como quiero que salga.

espero que le sea de ayuda a alguien porque me pase vaaarias horas probando varios codigos live search que se acomode a lo que buscaba hasta que di con este y lo fui acomodando, a mis necesidades.

saludos
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 18:57.