Ir al contenido


Foto

Alert si el registro existe en la base de datos al tabular.


  • Por favor identifícate para responder
49 respuestas en este tema

#1 madri09

madri09

    Advanced Member

  • Miembros
  • PipPipPip
  • 72 mensajes

Escrito 15 octubre 2012 - 02:52

Buenas noches:
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 y tabular al siguiente campo me diera un mensaje de alerta si existe en la base de datos para no duplicarlo.
Tengo una validación, podría poner la condición en ella?

[js]
function valida_envia(){
    //valido el nombre
    if (document.form1.telefono.value.length==0){
      alert("Insertar el Teléfono")
      document.form1.telefono.focus()
      return 0;
}
[/js]

Gracias.
  • 0

#2 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 15 octubre 2012 - 03:15

Si, puede ser que la condición la coloques ahí mismo con otro if

Saludox ! :)
  • 0

#3 madri09

madri09

    Advanced Member

  • Miembros
  • PipPipPip
  • 72 mensajes

Escrito 15 octubre 2012 - 03:23

Gracias, Fenareth por responder.
Pero como se haría? soy nuevo en esto y tengo muy pocos conocimientos.
Puede ser con esto, pero como lo integro en la funcion validar?


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

      $res=mysql_query($sql,Conectar::con());

      if(mysql_num_rows($res)>=1)
      {
        echo "<script type='text/javascript'>
        alert('El nº de teléfono ya existe');
        </script>";

      }

      else

      {

Gracias.
  • 0

#4 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 15 octubre 2012 - 04:02

si gustas amigo.. más tarde te pongo un ejemplo de como hacer esta validación :)
  • 0

#5 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 15 octubre 2012 - 07:41

Lo que requieres es sencillo de hacer, solo requiere algunos conocimientos básicos de javascript, ajax y php...

Como primer paso deberás crear un script en php que reciba como parámetro de entrada el número telefónido y responda si este existe o no... de acuerdo a lo que has hecho esto se haría de la manera:

valida.php


  <?php
      $telefono = $_REQUEST['telefono'];
      sql="SELECT telefono FROM usuarios WHERE telefono='$telefono'";
      $res=mysql_query($sql,Conectar::con());
      if(mysql_num_rows($res)>=1)
        echo "El nº de teléfono ya existe";
  ?>



Una vez que se tiene el script de php responsable  de responder si el teléfono existe crearemos la función en javascript que lo invocará... quedando de la manera:

[js] 

  //función responsable de crear el objeto para comunicación asíncrona
function nuevoAjax() {
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) {
if (!xmlhttp && typeof XMLHttpRequest!='undefined')
  xmlhttp=new XMLHttpRequest();
  }
}
return xmlhttp;
  }

  function TelefonoExiste(telefono) {
var ajax=nuevoAjax();
ajax.open("GET", "valida.php?telefono="+telefono, true);
ajax.onreadystatechange=function() {
  if (ajax.readyState==4)
TelefonoExiste=ajax.responseText;
}
ajax.send(null);
  }


function valida_envia(){
    //valido el nombre
    if (document.form1.telefono.value.length==0){
      alert("Insertar el Teléfono")
      document.form1.telefono.focus()
      return 0;
}
  else if (TelefonoExiste(document.form1.telefono.value).length==0) {
alert('El nº de teléfono ya existe');
}
else {
  //registra el número
}

  [/js]
  • 0

#6 madri09

madri09

    Advanced Member

  • Miembros
  • PipPipPip
  • 72 mensajes

Escrito 16 octubre 2012 - 01:11

Poliburro, muchas gracias he realizado los cambios, pero lo que estoy intentando hacer es que cuando ponga el campo teléfono y le de al boton de enviar en este caso es:

[js]<a class="dock-item" onclick="javascript:TelefonoExiste()"><span>Validar</span><img src="imagenes_menu/untitled.png" alt="Validar" /></a>[/js]

Quiero que me haga la funcion TelefonoExiste y la de la validacion pero he debido de hacerlo mal porque no funciona:

He puesto en otro archivo:

valida.php

<?php require_once('Connections/conexion.php'); ?>
<?php

      $telefono = $_REQUEST['telefono'];

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

      $res=mysql_query($sql,Conectar::con());

      if(mysql_num_rows($res)>=1)

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

  ?>



y en formulario:

[js]<script language=javascript>
//función responsable de crear el objeto para comunicación asíncrona

function nuevoAjax() {

  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) {

      if (!xmlhttp && typeof XMLHttpRequest!='undefined')

        xmlhttp=new XMLHttpRequest();

    }

  }

  return xmlhttp;

  }



  function TelefonoExiste(telefono) {

      var ajax=nuevoAjax();

      ajax.open("GET", "valida.php?telefono=" telefono, true);
   

      ajax.onreadystatechange=function() {

        if (ajax.readyState==4)

        TelefonoExiste=ajax.responseText;

      }

      ajax.send(null);

  }


    if (document.form1.telefono.value.length==0){

      alert("Insertar el Teléfono")

      document.form1.telefono.focus()

      return 0;

}

if (TelefonoExiste(document.form1.telefono.value).length==0) {

alert('El nº de teléfono ya existe');

}

    if (document.form1.tecnico.value.length==0){
      alert("Selecciona el Técnico")
      document.form1.tecnico.focus()
      return 0;
    }

    if (document.form1.situacion.value.length==0){
      alert("Selecciona la Situación del Aviso")
      document.form1.situacion.focus()
      return 0;
  }

if (document.form1.FECHA_EMISION.value.length==0){
      alert("Selecciona la fecha de emisión del Aviso")
      document.form1.FECHA_EMISION.focus()
      return 0;

}
if (document.form1.fecha_recepcion.value.length==0){
      alert("Selecciona la fecha de recepción del Aviso")
      document.form1.fecha_recepcion.focus()
      return 0;

}

  //el formulario se envia

    document.form1.submit();
}
</script>[/js]


Gracias
  • 0

#7 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 16 octubre 2012 - 07:19

Ok... antes que nada te recomiendo hacer las siguientes modificaciones:

En  el archivo  "valida.php"


<?php
      require_once('Connections/conexion.php');
      $telefono = $_REQUEST['telefono'];
      $sql="SELECT telefono FROM usuarios WHERE telefono='$telefono'";
      $res=mysql_query($sql,Conectar::con());
      if(mysql_num_rows($res)>=1)
        echo "El nº de teléfono ya existe";
  ?>


Luego te recomiendo que toda la parte de javascript la coloques en un arhivo funcdin.js


archivo: funcdin.js


[js]


//función responsable de crear el objeto para comunicación asíncrona
function nuevoAjax() {
  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) {
      if (!xmlhttp && typeof XMLHttpRequest!='undefined')
        xmlhttp=new XMLHttpRequest();
    }

  }
  return xmlhttp;
  }

function TelefonoExiste(telefono) {
      var ajax=nuevoAjax();
      ajax.open("GET", "valida.php?telefono=" telefono, true);
      ajax.onreadystatechange=function() {
      if (ajax.readyState==4)
        TelefonoExiste=ajax.responseText;
      }
      ajax.send(null);
  }


function GuardaFormulario() {

    if (document.form1.telefono.value.length==0){
      alert("Insertar el Teléfono")
      document.form1.telefono.focus()
      return 0;
    }
    else if (document.form1.tecnico.value.length==0){
        alert("Selecciona el Técnico")
        document.form1.tecnico.focus()
        return 0;
    }
    else if (document.form1.situacion.value.length==0){
        alert("Selecciona la Situación del Aviso")
        document.form1.situacion.focus()
        return 0;
    }
    else if (document.form1.FECHA_EMISION.value.length==0){
        alert("Selecciona la fecha de emisión del Aviso")
        document.form1.FECHA_EMISION.focus()
        return 0;

    }
    else if (document.form1.fecha_recepcion.value.length==0){
        alert("Selecciona la fecha de recepción del Aviso")
        document.form1.fecha_recepcion.focus()
        return 0;
    }
    else if (TelefonoExiste(document.form1.telefono.value).length==0) {
      alert('El nº de teléfono ya existe');
      document.form1.telefono.focus()
      return 0;
    }
    //el formulario se envia
    else
      document.form1.submit();
  }

[/js]


Luego en la página web donde está tu formulario colocarás al inicio:


<HTML>
  <HEAD>
    <title>el título</title>
    <script language="javascript" type="text/javascript" src="funcdin.js"></script>
  </HEAD>




Luego entonces en tu botón:


[js]
  <a class="dock-item" onclick="GuardaFormulario();">
      <span>Validar</span>
      <img src="imagenes_menu/untitled.png" alt="Validar"/>
  </a>
[/js]





Prueba con esto y si te sigue dando error me dices que mensaje  te manda el navegador
  • 0

#8 madri09

madri09

    Advanced Member

  • Miembros
  • PipPipPip
  • 72 mensajes

Escrito 16 octubre 2012 - 08:04

Poliburro hola, parece que no hace la llamada de la funcion TelefonoExiste porque empieza validando el campo vacio del teléfono sin llamar al validar.php o a lo mejor es el php el que no recoge la variable telefono?
He recortado un poco las condiciones para no hacerlo pesado:

funcdin.js

[js]
function nuevoAjax() {

  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) {

      if (!xmlhttp && typeof XMLHttpRequest!='undefined')

        xmlhttp=new XMLHttpRequest();

    }



  }

  return xmlhttp;

  }



function TelefonoExiste(telefono) {

      var ajax=nuevoAjax();

      ajax.open("GET", "valida.php?telefono="+telefono, true);

      ajax.onreadystatechange=function() {

      if (ajax.readyState==4)

        TelefonoExiste=ajax.responseText;

      }

      ajax.send(null);

  }





function GuardaFormulario() {



    if (document.form1.telefono.value.length==0){

      alert("Insertar el Teléfono")

      document.form1.telefono.focus()

      return 0;

    }

 

    else if (TelefonoExiste(document.form1.telefono.value).length==0) {

      alert('El nº de teléfono ya existe');

      document.form1.telefono.focus()

      return 0;

    }

    //el formulario se envia

    else

      document.form1.submit();

  }
[/js]

Gracias.
  • 0

#9 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 16 octubre 2012 - 08:20

Ok... probemos a detectar el problema... agregaremos alerts para ir dando seguimiento...

[js]


//función responsable de crear el objeto para comunicación asíncrona
function nuevoAjax() {
  alert('inicando ajax');
  var xmlhttp=false;
  try  {
      // Creacion del objeto AJAX para navegadores no IE
    alert('creamos no ajax');
      xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
  }
  catch(e)  {
    try  {
    alert('creamos ajax IE');
      // Creacion del objet AJAX para IE
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch(E) {
      if (!xmlhttp && typeof XMLHttpRequest!='undefined')
        xmlhttp=new XMLHttpRequest();
    }

  }
  return xmlhttp;
  }

function TelefonoExiste(telefono) {
    alert('inicia telefono existe');
      var ajax=nuevoAjax();
      var respuesta = '';
      alert('se ha creado ajax');
      ajax.open("GET", "valida.php?telefono="+telefono, true);
      ajax.onreadystatechange=function() {
      if (ajax.readyState==4)
        respuesta=ajax.responseText;
        alert('Respuesta de php' + respuesta);
        TelefonoExiste = respuesta;
      }
      ajax.send(null);
  }


function GuardaFormulario() {

    if (document.form1.telefono.value.length==0){
      alert("Insertar el Teléfono")
      document.form1.telefono.focus()
      return 0;
    }
  else if (TelefonoExiste(document.form1.telefono.value).length==0) {
      alert('El nº de teléfono ya existe');
      document.form1.telefono.focus()
      return 0;
    }
    //el formulario se envia
    else
      document.form1.submit();
  }

[/js]





Por cierto.... modificando el código encontré que tenia un error... en esta línea

      ajax.open("GET", "valida.php?telefono=" telefono, true);

deberia ser
      ajax.open("GET", "valida.php?telefono="+telefono, true);


  • 0

#10 madri09

madri09

    Advanced Member

  • Miembros
  • PipPipPip
  • 72 mensajes

Escrito 16 octubre 2012 - 11:24

Hola, se queda clavado en la respuesta de php y ya no hace nada mas.
El error ajax.open("GET", "valida.php?telefono=" telefono, true); esta bien es que no sale el + cuando te lo pongo en la consulta.
Puede ser que falte el ajax.status==200

y me al llegar a la respuesta de php me da el error:

Respuesta de php
<br />
<b>Fatal error</b>:  Class 'Conectar' not found in <b>C:\Inetpub\vhosts\xn--electrodiseo-khb.es\httpdocs\Wedserver\valida.php</b> on line <b>9</b><br />

y creo que el error esta el php aquí:

$res=mysql_query($sql,Conectar::con());



Ya esta solucionado :tongue:


<?php
 
      require_once('Connections/conexion.php');
 
      $telefono = $_REQUEST['telefono'];

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

      $result = mysql_query($query);

      if(mysql_num_rows($result)>=1)

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

  ?>



Muchas gracias.


  • 0

#11 madri09

madri09

    Advanced Member

  • Miembros
  • PipPipPip
  • 72 mensajes

Escrito 16 octubre 2012 - 03:58

Lo estoy probando en mi servidor local y funciona pero al subirlo al servidor me da error en:

if(mysql_num_rows($result)>=1)


Porque puede ser?
  • 0

#12 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 16 octubre 2012 - 04:05

Y cuál es el error que te da amigo ???

Saludox ! :)
  • 0

#13 madri09

madri09

    Advanced Member

  • Miembros
  • PipPipPip
  • 72 mensajes

Escrito 16 octubre 2012 - 04:07

Hola, este:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in......


Gracias.
  • 0

#14 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 16 octubre 2012 - 04:11

Si de manera local no tienes problemas pero en el servidor si, puede ser que estés teniendo algún problema para conectarte a MySQL desde el servidor... revisa por ese lado (y)

Saludox ! :)
  • 0

#15 madri09

madri09

    Advanced Member

  • Miembros
  • PipPipPip
  • 72 mensajes

Escrito 16 octubre 2012 - 04:18

Gracias Fenareth, tenia un error de conexion. :kiss:
Un saludo
  • 0

#16 madri09

madri09

    Advanced Member

  • Miembros
  • PipPipPip
  • 72 mensajes

Escrito 17 octubre 2012 - 12:49

Bueno ahora tengo el problema que no se envia el formulario y sale tres veces el mensaje de alert Respuesta de php.

[js]
function nuevoAjax() {


  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) {

      if (!xmlhttp && typeof XMLHttpRequest!='undefined')

        xmlhttp=new XMLHttpRequest();

    }



  }

  return xmlhttp;

  }



function TelefonoExiste(telefono) {

      var ajax=nuevoAjax();

      var respuesta = '';


      ajax.open("GET", "valida1.php?telefono="+telefono, true);

      ajax.onreadystatechange=function() {

      if (ajax.readyState==4)

        respuesta=ajax.responseText;

        alert('Respuesta de php' + respuesta);

        TelefonoExiste = respuesta;

      }

      ajax.send(null);

  }





function GuardaFormulario() {



    if (document.form1.telefono.value.length==0){

      alert("Insertar el Teléfono")

      document.form1.telefono.focus()

      return 0;

    }

  else if (TelefonoExiste(document.form1.telefono.value).length==0) {

      alert('El nº de teléfono ya existe')

      document.form1.telefono.focus()

      return 0;

    }

    //el formulario se envia

    else

  alert("El formulario se envio con exito!")
      document.form1.submit();
  }
[/js]

Gracias
  • 0

#17 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 18 octubre 2012 - 04:05

podrías indicarme la secuencia de los alerts? y el mensaje que muestran¡ :D vamos progresando
  • 0

#18 madri09

madri09

    Advanced Member

  • Miembros
  • PipPipPip
  • 72 mensajes

Escrito 18 octubre 2012 - 04:17

Hola, he modificado el cod pero no me hace el  alert('el teléfono ya existe');, metas el teléfono exista en la base de datos o no se va directamente a enviar formulario.

[js]
function nuevoAjax() {

    var xmlhttp=false;

    try {

        xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");

    }

        catch(e){

        try{

            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

        }catch(E) {

            if (!xmlhttp && typeof XMLHttpRequest!='undefined')

                xmlhttp=new XMLHttpRequest();

        }

    }

    return xmlhttp;

}

 

function TelefonoExiste(telefono, _callback) {

    var ajax=nuevoAjax();

    ajax.open("GET", "valida1.php?telefono=" + encodeURIComponent(telefono), true);

    ajax.onreadystatechange=function() {

        if ((ajax.readyState==4) && (ajax.status==200)){

            //ejecutamos _callback como si fuese una función, pasandole el parámetro

            _callback(ajax.responseText);

        }

    }

    ajax.send(null);

}

 

function GuardaFormulario() {

    //usemos mejor las CoLECCIONES, y variables, así ahorramos codigo y lo hace fácil de mantener

    var _telefono = document.forms['form1'].elements['telefono'];

 

    if (_telefono.value.length == 0){

        alert("Insertar el Teléfono");

        _telefono.focus();

        return 0;

    }

   

    //lamamos a AJAX:

    TelefonoExiste(_telefono.value, function(resp) {

        //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:

        if (parseInt(resp) == 1) {

            //aqui seria bueno un mensaje

            alert('el teléfono ya existe');

            _telefono.focus();

        } else {

            //evaluar si se envía el form desde aquí, o se usa ajax para enviarlo.

            alert("El formulario se envio con exito!");

            document.forms['form1'].submit();

        }

    });

    //como ajax es asincrono, JS NO se detendrá en la llamada anterior, por lo tando hay que retornar false o 0 como lo tienes:

    return 0;

}


[/js]

Es que me han ayudado un poco. :wink:
  • 0

#19 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 19 octubre 2012 - 08:38

amigo, he creado una entrada en mi blog incuyendo código fuente de como se hace esto:

http://elpoli.delphi...-base-de-datos/


saludox
  • 0

#20 madri09

madri09

    Advanced Member

  • Miembros
  • PipPipPip
  • 72 mensajes

Escrito 19 octubre 2012 - 10:40

Gracias, pero no me hace la function UsuarioExiste(telefono).

[js]
//función responsable de crear el objeto para comunicación asíncrona
function nuevoAjax() {
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) {
if (!xmlhttp && typeof XMLHttpRequest!='undefined')
xmlhttp=new XMLHttpRequest();
}
}
return xmlhttp;
}
function UsuarioExiste(telefono) {
var existe= "";
var ajax=nuevoAjax();
ajax.open("GET", "valida1.php?telefono="+telefono, true);
ajax.onreadystatechange=function() {
if (ajax.readyState==4)
existe=ajax.responseText;
}
ajax.send(null);
return existe;
}

function validatelefono() {
var telefono = document.getElementById('telefono').value;
if (telefono.length==0){
alert("Por favor, escriba un nº teléfono");
document.getElementById('telefono').focus;
return false;
}
else if (UsuarioExiste(telefono).length > 0) {
alert('El teléfono ya existe');
document.getElementById('telefono').focus;
return false;

}
else {
alert('El teléfono no existe');
document.getElementById('telefono').focus;
return false;
}

}
[/js]

Un saludo
  • 0




IP.Board spam blocked by CleanTalk.