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

Mensaje de alert para cuando el regisrtro existe en la base de datos

Estas en el tema de Mensaje de alert para cuando el regisrtro existe en la base de datos en el foro de Frameworks JS en Foros del Web. Tengo un formulario en donde entre otros datos, ingreso números de teléfono y quisiera que al rellenar el campo de número de teléfono me diera ...
  #1 (permalink)  
Antiguo 15/10/2012, 08:15
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Mensaje de alert para cuando el regisrtro existe en la base de datos

Tengo un formulario en donde entre otros datos, ingreso números de teléfono y quisiera que al rellenar el campo de número de teléfono me diera un mensaje de alerta si existe en la base de datos para no duplicarlo.
  #2 (permalink)  
Antiguo 15/10/2012, 09:14
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Mensaje de alert para cuando el regisrtro existe en la base de datos

lo ideal es usar ajax para hacer una consulta en el servidor (en caliente) y mostrar dicha advertencia

de todos modos no omitas la validación al insertar, las validaciones en el servidor aseguran tu aplicación, AJAX lo usas para ofrecer una mejor GUI al usuario, tenlo en cuenta
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 15/10/2012, 10:52
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Mensaje de alert para cuando el regisrtro existe en la base de datos

Hola Maycol otra vez, tambien me estas contestando en php.Muchas gracias por tu interes, bueno como ya te dije soy novato en esto y lo que me dices de GUI no me suena.
Me puedes explicar un poco o con un ejemplo?
Tengo esto para validar, podría hacerlo aquí mismo?

Código Javascript:
Ver original
  1. function valida_envia(){
  2.     //valido el nombre
  3.     if (document.form1.telefono.value.length==0){
  4.        alert("Insertar el Teléfono")
  5.        document.form1.telefono.focus()
  6.        return 0;
  7. }

Gracias.
  #4 (permalink)  
Antiguo 16/10/2012, 06:10
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Mensaje de alert para cuando el regisrtro existe en la base de datos

Estoy intentando hacer esto pero no me sale:


Boton en index.php

Código Javascript:
Ver original
  1. <a class="dock-item" onclick="javascript:TelefonoExiste()"><span>Validar</span><img src="imagenes_menu/untitled.png" alt="Validar" /></a>

valida.php


Código PHP:
Ver original
  1. <?php require_once('Connections/conexion.php'); ?>
  2. <?php
  3.  
  4.       $telefono = $_REQUEST['telefono'];
  5.  
  6.       $sql="SELECT telefono FROM usuarios WHERE telefono='$telefono'";
  7.  
  8.       $res=mysql_query($sql,Conectar::con());
  9.  
  10.        if(mysql_num_rows($res)>=1)
  11.  
  12.         echo "El nº de teléfono ya existe";
  13.  
  14.    ?>

y la funcion js

Código Javascript:
Ver original
  1. <script language=javascript>
  2. ///function valor existe//////
  3. function nuevoAjax() {
  4.  
  5.    var xmlhttp=false;
  6.  
  7.    try   {
  8.  
  9.       // Creacion del objeto AJAX para navegadores no IE
  10.  
  11.       xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
  12.  
  13.    }
  14.  
  15.    catch(e)   {
  16.  
  17.      try  {
  18.  
  19.       // Creacion del objet AJAX para IE
  20.  
  21.       xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  22.  
  23.      }
  24.  
  25.      catch(E) {
  26.  
  27.       if (!xmlhttp && typeof XMLHttpRequest!='undefined')
  28.  
  29.         xmlhttp=new XMLHttpRequest();
  30.  
  31.      }
  32.  
  33.    }
  34.  
  35.    return xmlhttp;
  36.  
  37.   }
  38.  
  39.  
  40.  
  41.   function TelefonoExiste(telefono) {
  42.  
  43.       var ajax=nuevoAjax();
  44.  
  45.       ajax.open("GET", "valida.php?telefono="+telefono, true);
  46.  
  47.       ajax.onreadystatechange=function() {
  48.  
  49.         if (ajax.readyState==4)
  50.  
  51.          TelefonoExiste=ajax.responseText;
  52.  
  53.       }
  54.  
  55.       ajax.send(null);
  56.  
  57.   }
  58. </script>

Gracias.
  #5 (permalink)  
Antiguo 16/10/2012, 06:15
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Mensaje de alert para cuando el regisrtro existe en la base de datos

http://notasweb.com/articulo/ajax/ve...-con-ajax.html
  #6 (permalink)  
Antiguo 16/10/2012, 12:05
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Mensaje de alert para cuando el regisrtro existe en la base de datos

1 - GUI o interfaz gráfica del usuario: me parece que es un término que todo desarrollador debe conocer, si no es hora de que lo busque, porque es muy facil de conseguir.

2 - consulte un manual de ajax, le falta varificar ajax.status==200, que problema con esos tutoriales desactualizados, si me puede pasar el link del que lo sacó para comentar el error que presenta.

recomiendo:

http://librosweb.es/ajax/index.html
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #7 (permalink)  
Antiguo 16/10/2012, 15:11
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Mensaje de alert para cuando el regisrtro existe en la base de datos

He hecho cambios y se me para el alert en Respuesta de php.

Código Javascript:
Ver original
  1. //función responsable de crear el objeto para comunicación asíncrona
  2.  
  3. function nuevoAjax() {
  4.  
  5.    alert('inicando ajax');
  6.  
  7.    var xmlhttp=false;
  8.  
  9.    try   {
  10.  
  11.       // Creacion del objeto AJAX para navegadores no IE
  12.  
  13.      alert('creamos no ajax');
  14.  
  15.       xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
  16.  
  17.    }
  18.  
  19.    catch(e)   {
  20.  
  21.      try  {
  22.  
  23.      alert('creamos ajax IE');
  24.  
  25.       // Creacion del objet AJAX para IE
  26.  
  27.       xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  28.  
  29.      }
  30.  
  31.      catch(E) {
  32.  
  33.        if (!xmlhttp && typeof XMLHttpRequest!='undefined')
  34.  
  35.         xmlhttp=new XMLHttpRequest();
  36.  
  37.      }
  38.  
  39.  
  40.  
  41.    }
  42.  
  43.    return xmlhttp;
  44.  
  45.   }
  46.  
  47.  
  48.  
  49. function TelefonoExiste(telefono) {
  50.  
  51.      alert('inicia telefono existe');
  52.  
  53.       var ajax=nuevoAjax();
  54.  
  55.       var respuesta = '';
  56.  
  57.       alert('se ha creado ajax');
  58.  
  59.       ajax.open("GET", "valida.php?telefono="+telefono, true);
  60.  
  61.       ajax.onreadystatechange=function() {
  62.  
  63.        if (ajax.readyState==4)
  64.  
  65.         respuesta=ajax.responseText;
  66.  
  67.         alert('Respuesta de php' + respuesta);
  68.  
  69.         TelefonoExiste = respuesta;
  70.  
  71.       }
  72.  
  73.       ajax.send(null);
  74.  
  75.   }
  76.  
  77.  
  78.  
  79.  
  80.  
  81. function GuardaFormulario() {
  82.  
  83.  
  84.  
  85.     if (document.form1.telefono.value.length==0){
  86.  
  87.       alert("Insertar el Teléfono")
  88.  
  89.       document.form1.telefono.focus()
  90.  
  91.       return 0;
  92.  
  93.     }
  94.  
  95.    else if (TelefonoExiste(document.form1.telefono.value).length==0) {
  96.  
  97.       alert('El nº de teléfono ya existe');
  98.  
  99.       document.form1.telefono.focus()
  100.  
  101.       return 0;
  102.  
  103.     }
  104.  
  105.     //el formulario se envia
  106.  
  107.     else
  108.  
  109.        document.form1.submit();
  110.  
  111.   }

Gracias.
  #8 (permalink)  
Antiguo 16/10/2012, 15:31
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Mensaje de alert para cuando el regisrtro existe en la base de datos

Creo que el error esta en el php en:

Código PHP:
Ver original
  1. $res=mysql_query($sql,Conectar::con());

Código PHP:
Ver original
  1. <?php require_once('Connections/conexion.php'); ?>
  2. <?php
  3.  $telefono = $_REQUEST['telefono'];
  4.  $sql="SELECT telefono FROM usuarios WHERE telefono='$telefono'";
  5.  $res=mysql_query($sql,Conectar::con());
  6. f(mysql_num_rows($res)>=1)
  7.  echo "El nº de teléfono ya existe";
  8. ?>


Solucionado el error estaba en

Código PHP:
Ver original
  1. $res=mysql_query($sql,Conectar::con());


Y este es el bueno:


Código PHP:
Ver original
  1. <?php
  2.  
  3.    
  4.  
  5.       require_once('Connections/conexion.php');
  6.  
  7.      
  8.  
  9.       $telefono = $_REQUEST['telefono'];
  10.  
  11.  
  12.  
  13.       $query="SELECT telefono FROM usuarios WHERE telefono='$telefono'";
  14.  
  15.  
  16.  
  17.       $result = mysql_query($query);
  18.  
  19.  
  20.  
  21.        if(mysql_num_rows($result)>=1)
  22.  
  23.  
  24.  
  25.         echo "El nº de teléfono ya existe";
  26.  
  27.  
  28.  
  29.    ?>

Muchas gracias.

Última edición por satjaen; 16/10/2012 a las 15:46
  #9 (permalink)  
Antiguo 17/10/2012, 08:41
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Mensaje de alert para cuando el regisrtro existe en la base de datos

todavía no corrige el ajax.status==200 después del ajax.readyState==4 así que puede fallar en algunos navegadores, favor aplique los cambios pertinentes y comente si le funciona o no


consulte un manual de AJAX

if ((ajax.readyState==4) && (ajax.status==200))
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Última edición por maycolalvarez; 17/10/2012 a las 08:51
  #10 (permalink)  
Antiguo 17/10/2012, 09:11
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Mensaje de alert para cuando el regisrtro existe en la base de datos

Mayco, perdona pero no me di cuenta de lo de if ((ajax.readyState==4) && (ajax.status==200)), lo he puesto y sigue sin funcionar bien porque me repite tres veces en las alert de Respuesta de php que el telefono existe siempre, estoy metiendo telefonos nuevos que no estan en la base de datos y me tendría que enviar el formulario.Puedes por favor echarle un vistazo?

Código Javascript:
Ver original
  1. //función responsable de crear el objeto para comunicación asíncrona
  2.  
  3. function nuevoAjax() {
  4.  
  5.  
  6.    var xmlhttp=false;
  7.  
  8.    try   {
  9.  
  10.       // Creacion del objeto AJAX para navegadores no IE
  11.  
  12.    
  13.  
  14.       xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
  15.  
  16.    }
  17.  
  18.    catch(e)   {
  19.  
  20.      try  {
  21.  
  22.  
  23.       // Creacion del objet AJAX para IE
  24.  
  25.       xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  26.  
  27.      }
  28.  
  29.      catch(E) {
  30.  
  31.        if (!xmlhttp && typeof XMLHttpRequest!='undefined')
  32.  
  33.         xmlhttp=new XMLHttpRequest();
  34.  
  35.      }
  36.  
  37.  
  38.  
  39.    }
  40.  
  41.    return xmlhttp;
  42.  
  43.   }
  44.  
  45.  
  46.  
  47.  function TelefonoExiste(telefono) {
  48.  
  49.       var ajax=nuevoAjax();
  50.  
  51.       var respuesta = '';
  52.  
  53.  
  54.       ajax.open("GET", "valida1.php?telefono="+telefono, true);
  55.  
  56.       ajax.onreadystatechange=function() {
  57.  
  58.        if ((ajax.readyState==4) && (ajax.status==200))
  59.        
  60.        respuesta = ajax.responseText
  61.        
  62.        alert('El télefono ya existe' + respuesta);
  63.  
  64.         TelefonoExiste = respuesta
  65.  
  66.       }
  67.  
  68.       ajax.send(null);
  69.  
  70.   }
  71.  
  72.  
  73.  
  74.  
  75.  
  76. function GuardaFormulario() {
  77.  
  78.  
  79.  
  80.     if (document.form1.telefono.value.length==0){
  81.  
  82.       alert("Insertar el Teléfono")
  83.  
  84.       document.form1.telefono.focus()
  85.  
  86.       return 0;
  87.  
  88.      }
  89.  
  90.    else if (TelefonoExiste(document.form1.telefono.value).length==0) {
  91.  
  92.      
  93.  
  94.       document.form1.telefono.focus()
  95.  
  96.       return 0;
  97.  
  98.     }
  99.  
  100.     //el formulario se envia
  101.  
  102.     else
  103.    
  104.        alert("El formulario se envio con exito!")
  105.        document.form1.submit();
  106.   }
  #11 (permalink)  
Antiguo 17/10/2012, 10:10
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Mensaje de alert para cuando el regisrtro existe en la base de datos

si te fijas bien NO has abierto y cerrado el bloque del if con las llaves {}, por lo tanto sólo la primera linea siguiente es tomada por la condición por ello se repite el alert() siguiente, ya que no es parte de dicho bloque, sino del general

un poco más de atención a lo que escribe, programar no es sólo copy&paste
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #12 (permalink)  
Antiguo 17/10/2012, 10:47
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Mensaje de alert para cuando el regisrtro existe en la base de datos

Otra vez gracias Maycol, lo he puesto bien pero sigue sin llegar al alert de envio de formulario con exito es decir no me manda el formulario y se me queda en alert('Mensaje') cuando meto un teléfono que no existe en la base de datos.

Código Javascript:
Ver original
  1. //función responsable de crear el objeto para comunicación asíncrona
  2.  
  3. function nuevoAjax() {
  4.  
  5.  
  6.    var xmlhttp=false;
  7.  
  8.    try   {
  9.  
  10.       // Creacion del objeto AJAX para navegadores no IE
  11.  
  12.    
  13.  
  14.       xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
  15.  
  16.    }
  17.  
  18.    catch(e)   {
  19.  
  20.      try  {
  21.  
  22.  
  23.       // Creacion del objet AJAX para IE
  24.  
  25.       xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  26.  
  27.      }
  28.  
  29.      catch(E) {
  30.  
  31.        if (!xmlhttp && typeof XMLHttpRequest!='undefined')
  32.  
  33.         xmlhttp=new XMLHttpRequest();
  34.  
  35.      }
  36.  
  37.  
  38.  
  39.    }
  40.  
  41.    return xmlhttp;
  42.  
  43.   }
  44.  
  45.  
  46.  
  47.  function TelefonoExiste(telefono) {
  48.  
  49.       var ajax=nuevoAjax();
  50.  
  51.       ajax.open("GET", "valida1.php?telefono="+telefono, true);
  52.  
  53.       ajax.onreadystatechange=function() {
  54.  
  55.        if ((ajax.readyState==4) && (ajax.status==200)){
  56.        
  57.      respuesta = ajax.responseText
  58.      
  59.      alert('Mensaje' + respuesta);
  60.  
  61.        }
  62.  
  63.         TelefonoExiste = respuesta
  64.      
  65.       }
  66.  
  67.       ajax.send(null);
  68.  
  69.   }
  70.  
  71.  
  72.  
  73.  
  74.  
  75. function GuardaFormulario() {
  76.  
  77.  
  78.  
  79.     if (document.form1.telefono.value.length==0){
  80.  
  81.       alert("Insertar el Teléfono")
  82.  
  83.       document.form1.telefono.focus()
  84.  
  85.       return 0;
  86.  
  87.      }
  88.  
  89.    else if (TelefonoExiste(document.form1.telefono.value).length==0) {
  90.  
  91.      
  92.  
  93.       document.form1.telefono.focus()
  94.  
  95.       return 0;
  96.  
  97.     }
  98.  
  99.     //el formulario se envia
  100.  
  101.     else
  102.    
  103.        alert("El formulario se envio con exito!")
  104.        document.form1.submit();
  105.   }
  #13 (permalink)  
Antiguo 17/10/2012, 12:58
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Mensaje de alert para cuando el regisrtro existe en la base de datos

le faltan muchos punto y coma ; (revise errores de sintaxis) además debe de usar una consola como firebug para verificar que le está llegando desde el servidor

TelefonoExiste = respuesta TelefonoExiste es el nombre de la función, no la puede tratar como una variable
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #14 (permalink)  
Antiguo 17/10/2012, 14:47
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Mensaje de alert para cuando el regisrtro existe en la base de datos

Maycol, he quitado la variable respuesta y ya no me hace nada:

Código Javascript:
Ver original
  1. //función responsable de crear el objeto para comunicación asíncrona
  2.  
  3. function nuevoAjax() {
  4.  
  5.  
  6.    var xmlhttp=false;
  7.  
  8.    try   {
  9.  
  10.       // Creacion del objeto AJAX para navegadores no IE
  11.  
  12.    
  13.  
  14.       xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
  15.  
  16.    }
  17.  
  18.    catch(e)   {
  19.  
  20.      try  {
  21.  
  22.  
  23.       // Creacion del objet AJAX para IE
  24.  
  25.       xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  26.  
  27.      }
  28.  
  29.      catch(E) {
  30.  
  31.        if (!xmlhttp && typeof XMLHttpRequest!='undefined')
  32.  
  33.         xmlhttp=new XMLHttpRequest();
  34.  
  35.      }
  36.  
  37.  
  38.  
  39.    }
  40.  
  41.    return xmlhttp;
  42.  
  43.   }
  44.  
  45.  
  46.  
  47.  function TelefonoExiste(telefono) {
  48.  
  49.       var ajax=nuevoAjax();
  50.  
  51.       ajax.open("GET", "valida1.php?telefono="+telefono, true);
  52.  
  53.       ajax.onreadystatechange=function() {
  54.  
  55.        if ((ajax.readyState==4) && (ajax.status==200)){
  56.        
  57.      TelefonoExiste = ajax.responseText
  58.  
  59.      
  60.       }
  61.  
  62.       ajax.send(null);
  63.  
  64.   }
  65.  
  66.  
  67.  
  68.  
  69.  
  70. function GuardaFormulario() {
  71.  
  72.  
  73.  
  74.     if (document.form1.telefono.value.length==0){
  75.  
  76.       alert("Insertar el Teléfono")
  77.  
  78.       document.form1.telefono.focus()
  79.  
  80.       return 0;
  81.  
  82.      }
  83.  
  84.    else if (TelefonoExiste(document.form1.telefono.value).length==0) {
  85.  
  86.      
  87.  
  88.       document.form1.telefono.focus()
  89.  
  90.       return 0;
  91.  
  92.     }
  93.  
  94.     //el formulario se envia
  95.  
  96.     else
  97.    
  98.        alert("El formulario se envio con exito!")
  99.        document.form1.submit();
  100. }

Gracias.
  #15 (permalink)  
Antiguo 17/10/2012, 15:11
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Respuesta: Mensaje de alert para cuando el regisrtro existe en la base de datos

satjaen revisa bien tu código esta todo MAL como menciona maycolalvarez te falta punto y comas te falta cerrar llaves ademas no puedes tener de esa manera estructurado tu codigo esta HORRIBLE, DIFICIL QUE ALGUIEN LO ENTIENDA y te AYUDE.

Varias veces te he ayudado y sigues haciendo lo mismo, esta es la ultima vez que ordeno tu código así debe estar para que este mas entendible

Código Javascript:
Ver original
  1. function nuevoAjax() {
  2.     var xmlhttp=false;
  3.     try {
  4.         xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
  5.     }
  6.         catch(e){
  7.         try{
  8.             xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  9.         }catch(E) {
  10.             if (!xmlhttp && typeof XMLHttpRequest!='undefined')
  11.                 xmlhttp=new XMLHttpRequest();
  12.         }
  13.     }
  14.     return xmlhttp;
  15. }
  16.  
  17. function TelefonoExiste(telefono) {
  18.     var ajax=nuevoAjax();
  19.     ajax.open("GET", "valida1.php?telefono="+telefono, true);
  20.     ajax.onreadystatechange=function() {
  21.         if ((ajax.readyState==4) && (ajax.status==200)){
  22.             TelefonoExiste = ajax.responseText;
  23.         }
  24.     }
  25.     ajax.send(null);
  26. }
  27.  
  28. function GuardaFormulario() {
  29.     if (document.form1.telefono.value.length==0){
  30.         alert("Insertar el Teléfono");
  31.         document.form1.telefono.focus();
  32.         return 0;
  33.        }else if (TelefonoExiste(document.form1.telefono.value).length==0) {
  34.         document.form1.telefono.focus();
  35.         return 0;
  36.       }
  37.       else{
  38.         alert("El formulario se envio con exito!");
  39.         document.form1.submit();
  40.     }
  41. }

Primero usa por favor colecciones tal como te pongo a continuacion lee por internet por favor como puedes hacerlo document.forms["form1"].elements["myelement"]

Segundo else if (TelefonoExiste(document.form1.telefono.value).len gth==0) como vas a hacer esto para validar el ajax esta completamente mal

Tercero porque asignas el resultado del ajax al mismo nombre de la funcion esto esta tambien mal TelefonoExiste = ajax.responseText;

Por favor corrige todo esto

Saludos
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #16 (permalink)  
Antiguo 17/10/2012, 15:33
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Mensaje de alert para cuando el regisrtro existe en la base de datos

Bueno Dradi7 y Maycol estais viendo que no se mucho de esto y hago lo que puedo.
Estos codigos los estoy sacando de internet y no se si estan bien o mal por eso hago las consultas.
Agradeceros vuestro esfuerzo y si no podeis hacer nada por hacerme y explicarme las rectificaciones no pasa nada.
Un saludo
  #17 (permalink)  
Antiguo 18/10/2012, 07:50
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Mensaje de alert para cuando el regisrtro existe en la base de datos

gracias @Dradi7, ahora si puedo ver claramente uno de los problemas y espero @satjaen que no tomes mal el regaño, yo ya estaba a punto de hacerlo, sólo ten en cuenta que no es nada personal y que nosotros queremos que aprendas

Volviendo al tema:

recuerda que AJAX es asíncrono, por lo tanto no puedes retornar a la función anterior el resultado de la petición AJAX, porque siempre te devolverá null o false, la solucíon radical para que funcione es que lo coloques de modo sincrono, lo cual NO es lo ideal.

La solución Ideal es pasar el callback, de esa forma no se pierde el flujo debido al desfase de la petición asíncrona, he aquí la técnica:

Código Javascript:
Ver original
  1. function nuevoAjax() {
  2.     var xmlhttp=false;
  3.     try {
  4.         xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
  5.     }
  6.         catch(e){
  7.         try{
  8.             xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  9.         }catch(E) {
  10.             if (!xmlhttp && typeof XMLHttpRequest!='undefined')
  11.                 xmlhttp=new XMLHttpRequest();
  12.         }
  13.     }
  14.     return xmlhttp;
  15. }
  16.  
  17. function TelefonoExiste(telefono, _callback) {
  18.     var ajax=nuevoAjax();
  19.     ajax.open("GET", "valida1.php?telefono=" + encodeURIComponent(telefono), true);
  20.     ajax.onreadystatechange=function() {
  21.         if ((ajax.readyState==4) && (ajax.status==200)){
  22.             //ejecutamos _callback como si fuese una función, pasandole el parámetro
  23.             _callback(ajax.responseText);
  24.         }
  25.     }
  26.     ajax.send(null);
  27. }
  28.  
  29. function GuardaFormulario() {
  30.     //usemos mejor las CoLECCIONES, y variables, así ahorramos codigo y lo hace fácil de mantener
  31.     var _telefono = document.forms['form1'].elements['telefono'];
  32.  
  33.     if (_telefono.value.length == 0){
  34.         alert("Insertar el Teléfono");
  35.         _telefono.focus();
  36.         return 0;
  37.     }
  38.    
  39.     //lamamos a AJAX:
  40.     TelefonoExiste(_telefono.value, function(resp) {
  41.         //evaluamos la respuesta del server, tengase en cuenta que responseText devuelve un string, por lo tanto hay que parsear a entero si se evalúa un numero:
  42.         if (parseInt(resp) == 1) {
  43.             //aqui seria bueno un mensaje
  44.             alert('el teléfono ya existe');
  45.             _telefono.focus();
  46.         } else {
  47.             //evaluar si se envía el form desde aquí, o se usa ajax para enviarlo.
  48.             alert("El formulario se envio con exito!");
  49.             document.forms['form1'].submit();
  50.         }
  51.     });
  52.     //como ajax es asincrono, JS NO se detendrá en la llamada anterior, por lo tando hay que retornar false o 0 como lo tienes:
  53.     return 0;
  54. }
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Última edición por maycolalvarez; 18/10/2012 a las 07:56
  #18 (permalink)  
Antiguo 18/10/2012, 14:36
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Mensaje de alert para cuando el regisrtro existe en la base de datos

Maycol, no me hace la function TelefonoExiste, es decir solo comprueba si el campo teléfono esta vacio y se va directamente a enviar el formulario y no me dice alert('el teléfono ya existe'); si meto un número que ya existe en la base de datos.
  #19 (permalink)  
Antiguo 19/10/2012, 09:44
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Mensaje de alert para cuando el regisrtro existe en la base de datos

sería bueno que mostraras tasmbien la parte del código HTML en donde llamas a la función GuardaFormulario que YO asumí debe de ser en el onsubmit del form

también la parte en PHP que procesa dicho teléfono, porque se SUPONE que debes de adaptar el ejemplo que te dí a lo que tienes hecho, programar no es sólo copy & paste, si no realizas los ajustes ¿como esperas que te funcione?, en el mismo código te lo indique porque obviamente YO desconozco esa parte.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #20 (permalink)  
Antiguo 19/10/2012, 10:09
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Mensaje de alert para cuando el regisrtro existe en la base de datos

Ok,

Html:

Código HTML:
Ver original
  1. <a class="dock-item" onclick="GuardaFormulario();"><span>Validar</span><img src="imagenes_menu/untitled.png" alt="Validar"/></a>


Php:

Código PHP:
Ver original
  1. <?php
  2.  
  3.    
  4.  
  5.       require_once('Connections/conexion.php');
  6.  
  7.      
  8.  
  9.       $telefono = $_REQUEST['telefono'];
  10.  
  11.  
  12.  
  13.       $query="SELECT telefono FROM usuarios WHERE telefono='$telefono'";
  14.  
  15.  
  16.  
  17.       $result = mysql_query($query);
  18.  
  19.  
  20.  
  21.        if(mysql_num_rows($result)>=1){
  22.            
  23.            echo"¡El nº de teléfono introducido ya existe!";
  24.            
  25.            }
  26.          
  27.    ?>

Un saludo
  #21 (permalink)  
Antiguo 19/10/2012, 10:15
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Mensaje de alert para cuando el regisrtro existe en la base de datos

¿se dio cuenta de lo que en PHP está devolviendo?:

echo "¡El nº de teléfono introducido ya existe!";

una de dos, o cambia el echo en php, o cambia la condición en Javascript, aplique los cambios y comente, ya es hora de que aplique los cambios, me parece que se le ayudó bastante, un poquito de empeño y ezfuerzo, saludos

recomendación:
-no use $_REQUEST, use $_GET
-realice una limpieza contra SQLInyection, investigue al respecto.
-no creo que haga falta el tag de cierre de PHP ( ?> )
-asegúrese que el archivo no tenga BOM
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #22 (permalink)  
Antiguo 19/10/2012, 13:57
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Mensaje de alert para cuando el regisrtro existe en la base de datos

Maycol, es solo quitar el echo del php?.Lo que se supone que hay que hacer es devolver el resultado que quieres mostrar y usar la función callback del evento readystatechange para insertar ese resultado.De verdad que no tengo ni idea de como modificar el archivo php.
Saludos.

Última edición por satjaen; 20/10/2012 a las 05:25
  #23 (permalink)  
Antiguo 21/10/2012, 11:30
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Mensaje de alert para cuando el regisrtro existe en la base de datos

Por favor, alguien sabe como puedo construir correctamente el archivo php (valida1.php) para que la funcion ajax (TelefonoExiste) reconozca la respuesta alert('el teléfono ya existe');?

valida1.php

Código PHP:
<?php
require_once('Connections/conexion.php');

$telefono $_GET['telefono'];

$query="SELECT telefono FROM usuarios WHERE telefono='$telefono'";

$result mysql_query($query);

?>

js

Código Javascript:
Ver original
  1. function TelefonoExiste(telefono, _callback) {
  2.  
  3. * * var ajax=nuevoAjax();
  4.  
  5. * * ajax.open("GET", "valida1.php?telefono=" + encodeURIComponent(telefono), true);
  6.  
  7. * * ajax.onreadystatechange=function() {
  8.  
  9. * * * * if ((ajax.readyState==4) && (ajax.status==200)){
  10.  
  11. * * * * * * //ejecutamos _callback como si fuese una función, pasandole el parámetro
  12.  
  13. * * * * * * _callback(ajax.responseText);
  14.  
  15. * * * * }
  16.  
  17. * * }
  18.  
  19. * * ajax.send(null);
  20.  
  21. }
  22.  
  23. *
  24.  
  25. function GuardaFormulario() {
  26.  
  27. * * //usemos mejor las CoLECCIONES, y variables, así ahorramos codigo y lo hace fácil de mantener
  28.  
  29. * * var _telefono = document.forms['form1'].elements['telefono'];
  30.  
  31. *
  32.  
  33. * * if (_telefono.value.length == 0){
  34.  
  35. * * * * alert("Insertar el Teléfono");
  36.  
  37. * * * * _telefono.focus();
  38.  
  39. * * * * return 0;
  40.  
  41. * * }
  42.  
  43. * *
  44.  
  45. * * //lamamos a AJAX:
  46.  
  47. * * TelefonoExiste(_telefono.value, function(resp) {
  48.    
  49.  
  50. * * * * //evaluamos la respuesta del server, tengase en cuenta que responseText devuelve un string, por lo tanto hay que parsear a entero si se evalúa un numero:
  51.  
  52. * * * * if (parseInt(resp) >= 1) {
  53.  
  54. * * * * * * //aqui seria bueno un mensaje
  55.  
  56. * * * * * * alert('el teléfono ya existe');
  57.  
  58. * * * * * * _telefono.focus();
  59.  
  60. * * * * } else {
  61.  
  62. * * * * * * //evaluar si se envía el form desde aquí, o se usa ajax para enviarlo.
  63.  
  64. * * * * * * alert("El formulario se envio con exito!");
  65.  
  66. * * * * * * document.forms['form1'].submit();
  67.  
  68. * * * * }
  69.  
  70. * * });
  71.  
  72. * * //como ajax es asincrono, JS NO se detendrá en la llamada anterior, por lo tando hay que retornar false o 0 como lo tienes:
  73.  
  74. * * return 0;
  75.  
  76. }

Gracias.
  #24 (permalink)  
Antiguo 22/10/2012, 09:05
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Mensaje de alert para cuando el regisrtro existe en la base de datos

si realmente le pusiera empeño se daría cuenta de que lo que php devuelve es lo que se valida en el onreadystatechange, por lo que debe ser igual

analice, use la lógica, pruebe, depure con una consola, está más claro que el agua; pero claro es muy fácil sentarse a esperar a que le resuelvan todo: se le corrigió el código, se le dió la solución con el callback, se le dio pistas, se le informa que debe hacer, se le da opción de cambiar o el php o el javascript para que la validación sea igual y no da con ello

francamente y discúlpeme, pero yo no ayudo a usuarios copy & paste, si quiere esperar a que alguien se lo resuelva, pues espere, de mi parte no le ofreceré más ayuda, lo siento mucho pero hay otros usuarios que si merecen y se ganan el apoyo de los miembros de la comunidad, saludos.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Última edición por maycolalvarez; 22/10/2012 a las 09:11
  #25 (permalink)  
Antiguo 22/10/2012, 09:24
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Mensaje de alert para cuando el regisrtro existe en la base de datos

Pongo todo el empeño al que puedo llegar y por eso hago la consulta, porque si yo supiera lo que hago no estaría molestando.
De todas formas aunque no sé de programación, leo muchas consultas que son muy sencillas de programadores que parecen ser que lo son y se les contesta con educación muy rapidamente.
Muchas gracias.
  #26 (permalink)  
Antiguo 22/10/2012, 11:19
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Mensaje de alert para cuando el regisrtro existe en la base de datos

Una última cosa.
Estudiaré y cuando se un superdotado volveré para hacer consultas.
Un saludo
  #27 (permalink)  
Antiguo 24/10/2012, 15:45
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Mensaje de alert para cuando el regisrtro existe en la base de datos

SOLUCIONADO

Vale he estado estudiando un poco aunque no soy programador el cod quedaría así:

Código PHP:
<?php
  
require_once('Connections/conexion.php');
  
$telefono = isset($_GET['telefono']) ? $_GET['telefono']:"";
  
$query=("SELECT telefono FROM usuarios WHERE telefono ='".$telefono."'");
  
$result mysql_query($query);
  
$rows mysql_num_rows($result);
  if (
$rows) {
  echo 
'1';
  } 
?>
Maycol y Dradi7 siento mucho lo acontecido pero algo tan simple para vosotros es un mundo para los que empezamos sin tener estudios en este dificil mundo.
Yo lo hago solo por ocupar mi tiempo en algo ya que hasta que no acabe esta maldita crisis....... y ademas dar mas facilidad de trabajo a mi negocio.
No quiero molestaros, simplemente si podeis contestarme bien y si no seguiré leyendo y dandoros gracias por vuestras respuestas.
Un saludo

Etiquetas: formulario, mensaje, alerta
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 02:16.