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

#21 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 19 octubre 2012 - 10:44

un consejo.... descarga el código fuente de mi ejemplo, comparalo con lo que llevas hecho y seguro encontrarás la solución.
  • 0

#22 madri09

madri09

    Advanced Member

  • Miembros
  • PipPipPip
  • 72 mensajes

Escrito 19 octubre 2012 - 12:01

Hola poliburro, puede ser que el ejemplo no funcione:
Me explico aquí falta una llave no? if (ajax.readyState==4) y no reconoce el php.
Y si le pones el alert ('Respuesta' + existe') ya si te hace el select en la base de datos porque si no siempre te dice que el pais no existe.
Entiendo que tú ya lo has probado pero es que yo ya me he descargado tus archivos y creado la base de datos y siempre te dice que el pais no existe aunque este creado.


[js]
if (ajax.readyState==4)
existe=ajax.responseText;
      }
      ajax.send(null);
      return existe;
  }
[/js]

Creo que puede ir así mas o menos:

[js]

if ((ajax.readyState==4) && (ajax.status==200)){
existe=ajax.responseText;
alert('Mensaje' + existe);
}
}
ajax.send(null);
return existe;
}

[/js]

Un saludo.
  • 0

#23 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 19 octubre 2012 - 12:13

:o que bueno que me lo avisas... revisaré el código y de tener errores volveré a subirlo...

ya lograste que funcionara el ejemplo? te ha dado una idea de como solucionar tu problema?
  • 0

#24 madri09

madri09

    Advanced Member

  • Miembros
  • PipPipPip
  • 72 mensajes

Escrito 19 octubre 2012 - 12:18

No, que va no lo he conseguido todavía.
Un saludo
  • 0

#25 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 19 octubre 2012 - 12:47

No, que va no lo he conseguido todavía.
Un saludo


El código como lo subí está correcto. El problema, y que no me habia dado cuenta es que php devuelve el valor incluyendo un retorno de carro.

la función validapaisen realidad debe estar así:

[java]
function validapais() {
    var pais = document.getElementById('val').value;
    if (pais.length==0){
      alert("Por favor escriba el nombre de un país");
      document.getElementById('val').focus;
      return false;
    }
    else {
      var existe = PaisExiste(pais);
      if (existe.indexOf("Encontrado", 0) == 0)
          alert(pais + " ya se encuentra registrado");       
        else
          alert(pais + " no ha sido registrado");       
    }
    return false;




}
    [/java]



he vuelto a subir el archivo con el código fuente... espero que ahora si te funcione
  • 0

#26 madri09

madri09

    Advanced Member

  • Miembros
  • PipPipPip
  • 72 mensajes

Escrito 19 octubre 2012 - 01:04

:cry: A mi me sigue sin funcionar.
  • 0

#27 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 19 octubre 2012 - 02:34

:cry: A mi me sigue sin funcionar.

:o :o
Pues... ya no se que pensar... el ejemplo en mi sistema funciona perfecto...
  • 0

#28 madri09

madri09

    Advanced Member

  • Miembros
  • PipPipPip
  • 72 mensajes

Escrito 19 octubre 2012 - 04:07

Poliburro creo que el error es mio en el php.


Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /Applications/MAMP/htdocs/sitiopruebas/buscapais.php on line 6


buscapais.php

<?php require_once('Connections/conexion1.php'); ?>
<?php
  $pais = isset($_GET['pais']) ? $_GET['pais']:"";
  $consulta=mysql_query("SELECT id, pais FROM Paises WHERE pais ='".$pais."'");
  mysql_close();
  if ( mysql_num_rows($consulta) )
  echo "Encontrado";
?>


Saludos
  • 0

#29 madri09

madri09

    Advanced Member

  • Miembros
  • PipPipPip
  • 72 mensajes

Escrito 20 octubre 2012 - 12:39

Una cosa compañeros como puedo reconstruir el archivo valida2.php para que el alert('el teléfono ya existe'); de la function TelefonoExiste me la haga solo en dicha funcion y no en el valida2.php?

[js]
function TelefonoExiste(telefono, _callback) {

    var ajax=nuevoAjax();

    ajax.open("GET", "valida2.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);

}
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]


valida2.php


<?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 introducido ya existe!";
}
?>

Gracias.
  • 0

#30 madri09

madri09

    Advanced Member

  • Miembros
  • PipPipPip
  • 72 mensajes

Escrito 22 octubre 2012 - 09:30

Poliburro por favor,estoy un poco liado.
  • 0

#31 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 22 octubre 2012 - 09:34

no entendí tu última pregunta amigo... podrías decirnos un poco más de la situación actual del problema? lograste hacer funcionar el ejemplo que te envié?
  • 0

#32 madri09

madri09

    Advanced Member

  • Miembros
  • PipPipPip
  • 72 mensajes

Escrito 22 octubre 2012 - 09:43

Hola Poliburro, no lo he hecho funcionar porque quiero que primero me devuelva bien los resultados el valida1.php, y quiero adaptarlo al ajax que te detallo en mi última consulta.
Porque el archivo ajax no reconoce el archivo php.
Me explico?
Un saludo
  • 0

#33 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 22 octubre 2012 - 10:04

y que mensaje de error te devuelve
  • 0

#34 madri09

madri09

    Advanced Member

  • Miembros
  • PipPipPip
  • 72 mensajes

Escrito 22 octubre 2012 - 10:46

No me da ningún mensaje de error, lo que pasa es que valida.php no devuelve nada a la funcion TelefonoExiste(_telefono.value, function(resp)., y entonces no me da el mensaje de alert('el teléfono ya existe');.Como veras el php está mal construido.
  • 0

#35 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 22 octubre 2012 - 10:47

si estas de acuerdo enviame tus scripts para revisarlos y detectar el error
  • 0

#36 madri09

madri09

    Advanced Member

  • Miembros
  • PipPipPip
  • 72 mensajes

Escrito 22 octubre 2012 - 10:54

Pero si los tienes en « Respuesta #28 en: 20 de Octubre de 2012, 13:39:16 »? :cheesy:
  • 0

#37 madri09

madri09

    Advanced Member

  • Miembros
  • PipPipPip
  • 72 mensajes

Escrito 23 octubre 2012 - 01:33

Hola Poliburro haber te lo pongo como tú me explicaste, pero siempre me dice alert(telefono + " no ha sido registrado");, aunque el teléfono exista en la base de datos.

valida1.php

<?php
  require_once('Connections/conexion.php');
  $telefono = isset($_GET['telefono']) ? $_GET['telefono']:"";
  $consulta=mysql_query("SELECT telefono FROM usuarios WHERE telefono ='".$telefono."'");
  mysql_close();
  if ( mysql_num_rows($consulta))
  echo "Encontrado";
?>



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 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 GuardaFormulario() {
var telefono = document.getElementById('telefono').value;
if (telefono.length==0){
alert("Insertar el Teléfono");
document.getElementById('telefono').focus;
return false;
}
else {
var existe =  TelefonoExiste(telefono);
if (existe.indexOf("Encontrado", 0) == 0)
alert(telefono + " ya se encuentra registrado");
else
alert(telefono + " no ha sido registrado");
}
return false;
}
[/js]

Y me tira este error:

Mensaje
<br />
<b>Warning</b>:  mysql_num_rows(): supplied argument is not a valid MySQL result resource in <b>C:\Inetpub\vhosts\xn--electrodiseo-khb.es\httpdocs\Wedserver\valida1.php</b> on line <b>6</b><br />


He rectificado el valida1.php por este:

<?php
  require_once('Connections/conexion.php');
  $telefono = isset($_GET['telefono']) ? $_GET['telefono']:"";
  $query=("SELECT telefono FROM usuarios WHERE telefono ='".$telefono."'");
  $result = mysql_query($query);
  if(mysql_num_rows($result))
  echo"¡Encontrado!"; 
?>

y ya no me da el error pero me dice:

[object HTMLInputElement] no ha sido registrado


Gracias.
  • 0

#38 madri09

madri09

    Advanced Member

  • Miembros
  • PipPipPip
  • 72 mensajes

Escrito 23 octubre 2012 - 10:51

Por favor, no se si me estoy explicando correctamente?
  • 0

#39 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 23 octubre 2012 - 10:57

Por favor, no se si me estoy explicando correctamente?


En la noche lo reviso con calma amigo... y posteo el resultado... :) Saludos
  • 0

#40 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 24 octubre 2012 - 07:26

Por el error que he encontrado en tu código, me doy cuenta que no has revisado que hace cada función. Te aconsejo que no solo copies y pegues sino que en verdad estudies que hace cada bloque de código....

lo primero que hice fue verificar que valida1.php  funcionara correctamente de la siguiente manera:

escribí en mi navehador la ruta: http://urlservidor/v...ono=numtelefono y cuándo el teléfono ya existe en la base de datos arroja: ¡Encontrado! en caso contrario el navegador aparece en blanco.
Aquí te comento que como no colocaste el contenido de conexion.php quité esa línea y puse en el código de valida1.php lo siguiente:


  mysql_connect("host", "user", "password");
  mysql_select_db("pruebas");


Ya que validé la correcta función de valida1.php me puse a revisar tu javascript y encontré un error en este bloque:

[java]
  if (existe.indexOf("Encontrado", 0) == 0)
    alert(telefono + " ya se encuentra registrado");
  else
    alert(telefono + " no ha sido registrado");
[/java]


Aquí tienes un error de lógica, la razón es que el método indexof de la clase String te devuelve -1 al no encontrar la palabra buscada o en caso contrario, te devuelve la posición del primer caracter de la palabra buscada dentro de la cadena origen. Si tu script devuelve ¡Encontrado! eso quiere decir que Encontrado jamás tendrá índice 0, sino al contrario será mayor a cero...

con eso en mente modificamos el bloque antes referido

[java]
  if (existe.indexOf("Encontrado", 0) > 0)
    alert(telefono + " ya se encuentra registrado");
  else
    alert(telefono + " no ha sido registrado");

[/java]

aquí más info del método indexof

http://www.w3schools...ref_indexof.asp


  • 0




IP.Board spam blocked by CleanTalk.