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

Verificar existencia de un registro en onblur

Estas en el tema de Verificar existencia de un registro en onblur en el foro de Frameworks JS en Foros del Web. Saludos... Amigos... si alguien me puede ayudar ... le estare infinitamente agradecido... al grano... Sucede que llevo mucho tiempo buscando una forma de hacer que ...
  #1 (permalink)  
Antiguo 03/03/2009, 15:46
 
Fecha de Ingreso: febrero-2009
Mensajes: 5
Antigüedad: 15 años, 2 meses
Puntos: 0
Pregunta Verificar existencia de un registro en onblur

Saludos...

Amigos... si alguien me puede ayudar ... le estare infinitamente agradecido... al grano...

Sucede que llevo mucho tiempo buscando una forma de hacer que cuando se digite el codigo de algun usuario y en el momento que se oprima tabulacion o se pierda el foco (onblur) se llenen los demas campos del formulario... al fin encontre algo que me funciona, o por lo menos en parte, pues logro hacer la consulta de los datos pero no logro hacer que esos datos pasen nuevamente al formulario... espero me puedan ayudar... apenas estoy empezando a tocar php, mysql y nunca habia usando ajax... hay algunas cosas del codigo que no las entiendo... pues las tome de este foro...


En la el input text nombre quiero que se escriba el nombre del mensajero, en este caso.

index.php

Código:
<html>
<head>
<script type="text/javascript">
//comprueba el navegador para el uso de ajax
function nuevoAjax()
{
	/* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
	lo que se puede copiar tal como esta aqui */
	var xmlhttp=false;
	try
	{
		// Creacion del objeto AJAX para navegadores no IE
		xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch(e)
	{
		try
		{
			// Creacion del objet AJAX para IE
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(E) { xmlhttp=false; }
	}
	if (!xmlhttp && typeof XMLHttpRequest!="undefined") { xmlhttp=new XMLHttpRequest(); }
	return xmlhttp;
}

function compruebamsg(ellogin)
{
	//para enviar un mensaje
	var divMensaje=document.getElementById("error");
	//buton.disabled=true; 
	mensajero.disabled=true;
	var ajax=nuevoAjax();
	ajax.open("POST", "run.php", true);
	ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	var param='login='+ellogin.value;
	ajax.send(param);
	ajax.onreadystatechange=function()
	{
		if (ajax.readyState==4)
		{
			// Habilito nuevamente botones e inputs
			mensajero.value="";
			//boton.disabled=false; 
			mensajero.disabled=false;
			// Muestro el mensaje enviado desde el servidor
			//divMensaje.innerHTML=ajax.responseText;
		}
	}
}
</script>

</head>
<body>
<form id="frm" name="frm" action="">
	<input id="mensajero" type="text" name="mensajero" onBlur="compruebamsg(mensajero)"><br />
    <input id="nombre" type="text" name="nombre" ">
	<br><br>
	<input type="submit" name="boton" value="Enviar">
</form>
</body>
</html>

y aca es donde hago la consulta... todo esto funciona pues al mirar los datos que me entrega son los correctos... pero como hago para enviarlos al formulario de la pagina index.php???

run.php

Código:
<html>
<script>
function pasadato(nom)
{
	 	window.opener.document.frm.nombre.value=nom;
}
</script>
<?
$msg = $_POST['msg'];
echo "el codigo es $msg";
include "../../conecta.php";   //conexion. 
$link=Conectarse();
$datos = "SELECT mensajeros.cod_mensajero, mensajeros.nombre from mensajeros WHERE cod_mensajero = $msg";
$result  = mysql_query($datos,$link);
if ($result)
{
	$row = mysql_fetch_array($result);
    if ($row[1] <> null)
	{
		echo "El mensajero $row[1] Ya Existe ";
		pasadato($row[1]);
		
	}else{
    	echo "no existe";
	}
}else{
	echo "";
}
?>
</html>

Última edición por z_andres; 03/03/2009 a las 16:51
  #2 (permalink)  
Antiguo 03/03/2009, 16:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Verificar existencia de un registro en onblur

Es mejor si pasas los datos como un JSON, prueba lo siguiente:

run.php:
Código php:
Ver original
  1. <?php
  2. $msg = $_POST['msg'];
  3. include "../../conecta.php";   //conexion.
  4. $link=Conectarse();
  5. $datos = "SELECT mensajeros.cod_mensajero, mensajeros.nombre from mensajeros WHERE cod_mensajero = '$msg'";
  6. $result  = mysql_query($datos,$link);
  7. $resultado = array();
  8. if ($result) {
  9.     $row = mysql_fetch_array($result);
  10.         if ($row[1] <> null)    {
  11.         $resultado['mensaje'] = "El mensajero $row[1] Ya Existe ";
  12.                 $resultado['nombre'] = $row[1];
  13.     } else {
  14.                 $resultado['mensaje'] = "no existe";
  15.     }
  16. } else {
  17.     $resultado['mensaje'] = "error al obtener el query";
  18. }
  19.  
  20. echo json_encode($resultado);

pagina:
Código html:
Ver original
  1. <script type="text/javascript">
  2. //comprueba el navegador para el uso de ajax
  3. function nuevoAjax()
  4. {
  5.     /* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
  6.     lo que se puede copiar tal como esta aqui */
  7.     var xmlhttp=false;
  8.     try
  9.     {
  10.         // Creacion del objeto AJAX para navegadores no IE
  11.         xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
  12.     }
  13.     catch(e)
  14.     {
  15.         try
  16.         {
  17.             // Creacion del objet AJAX para IE
  18.             xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  19.         }
  20.         catch(E) { xmlhttp=false; }
  21.     }
  22.     if (!xmlhttp && typeof XMLHttpRequest!="undefined") { xmlhttp=new XMLHttpRequest(); }
  23.     return xmlhttp;
  24. }
  25.  
  26. function compruebamsg(ellogin)
  27. {
  28.     //para enviar un mensaje
  29.     var divMensaje=document.getElementById("error");
  30.     //buton.disabled=true;
  31.     mensajero.disabled=true;
  32.     var ajax=nuevoAjax();
  33.     ajax.open("POST", "run.php", true);
  34.     ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  35.     var param='login='+ellogin.value;
  36.     ajax.send(param);
  37.     ajax.onreadystatechange=function()
  38.     {
  39.         if (ajax.readyState==4)
  40.         {
  41.             // Habilito nuevamente botones e inputs
  42.             mensajero.value="";
  43.             //boton.disabled=false;
  44.             mensajero.disabled=false;
  45.             var json = eval( ajax.responseText );
  46.                         document.getElementById('nombre').value = json.nombre;
  47.                         document.getElementById('mensaje').value = json.mensaje;
  48.         }
  49.     }
  50. }
  51.  
  52. </head>
  53. <div id="mensaje"></div>
  54. <form id="frm" name="frm" action="">
  55.     <input id="mensajero" type="text" name="mensajero" onBlur="compruebamsg(mensajero)"><br />
  56.     <input id="nombre" type="text" name="nombre" id="nombre">
  57.     <br><br>
  58.     <input type="submit" name="boton" value="Enviar">
  59. </form>
  60. </body>
  61. </html>

Algo así te debería de funcionar para lo que quieres.

Saludos
  #3 (permalink)  
Antiguo 04/03/2009, 07:35
 
Fecha de Ingreso: febrero-2009
Mensajes: 5
Antigüedad: 15 años, 2 meses
Puntos: 0
Gracias amigo... voy a probar que tal me va... ;)

Saludos...

Gracias por tu respuesta...

me imagino que estas dos instrucciones
document.getElementById('nombre').value = json.nombre;
document.getElementById('mensaje').value = json.mensaje;

sirven para llevar la informacion a unas etiquetas o algo asi... pero no funciona... me faltara algo??

me sale un error en el FireBug que dice "invalid. label {"mensaje":"no existe"}"

captura del FireBug:

img187.imageshack.us/img187/1618/capturav.jpg



Por fin... problema solucionado....

leyendo y analizando... me pude dar cuenta que el problema radicaba en que al usar esta linea var json = eval(ajax.responseText); ... los datos se recibian mal... entonces la solcion fue colocar dicha linea de esta forma var json = eval("(" + ajax.responseText + ")"); es decir aumentar un parentesis al contenido... entonces el codigo corregido de index2.php quedaría...

Código HTML:
 <html>
      <head>
      <script type="text/javascript">
      //comprueba el navegador para el uso de ajax
      function nuevoAjax()
      {
          /* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
          lo que se puede copiar tal como esta aqui */
          var xmlhttp=false;
          try
          {
              // Creacion del objeto AJAX para navegadores no IE
              xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
          }
          catch(e)
          {
              /*try
              {
                  // Creacion del objet AJAX para IE
                  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
              }
              catch(E) { xmlhttp=false; }*/
          }
          if (!xmlhttp && typeof XMLHttpRequest!="undefined") { xmlhttp=new XMLHttpRequest(); }
          return xmlhttp;
      }
       
      function compruebamsg(ellogin)
      {
          //para enviar un mensaje
          var divMensaje=document.getElementById("error");
          //buton.disabled=true;
          mensajero.disabled=true;
          var ajax=nuevoAjax();
          ajax.open("POST", "run.php", true);
          ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
          var param='login='+ellogin.value;
          ajax.send(param);
          ajax.onreadystatechange=function()
          {
              if (ajax.readyState==4)
              {
                  // Habilito nuevamente botones e inputs
                  /*mensajero.value="";
                  boton.disabled=false;
                  mensajero.disabled=false;*/
				  
                  var json = eval("(" + ajax.responseText + ")");
                  document.getElementById('nombre').value = json.nombre;
                  document.getElementById('mensaje').value = json.mensaje;
              }
          }
      }
      </script>
      </head>
<body>

<form id="frm" name="frm" action="">
    <div align="justify">
        <input id="mensajero" type="text" name="mensajero" onBlur="compruebamsg(mensajero)">
        <br />
        <input id="nombre" type="text" value="" >
        <input id="mensaje" type="text" neme="mensaje" value="" >
        <br>
        <br>
        <input type="submit" name="boton" id="boton" value="Enviar">
      </div>
</form>
      </body>
      </html> 

Última edición por GatorV; 04/03/2009 a las 14:34
  #4 (permalink)  
Antiguo 04/03/2009, 14:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Verificar existencia de un registro en onblur

Me alegra que lo hayas solucionado, la verdad escribí el código de memoria y no lo probé, generalmente para eso uso Prototype.

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 09:51.