
Alert si el registro existe en la base de datos al tabular.
#21
Escrito 19 octubre 2012 - 10:44
#22
Escrito 19 octubre 2012 - 12:01
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.
#23
Escrito 19 octubre 2012 - 12:13

ya lograste que funcionara el ejemplo? te ha dado una idea de como solucionar tu problema?
#24
Escrito 19 octubre 2012 - 12:18
Un saludo
#25
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
#26
Escrito 19 octubre 2012 - 01:04

#27
Escrito 19 octubre 2012 - 02:34
A mi me sigue sin funcionar.


Pues... ya no se que pensar... el ejemplo en mi sistema funciona perfecto...
#28
Escrito 19 octubre 2012 - 04:07
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
#29
Escrito 20 octubre 2012 - 12:39
[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.
#30
Escrito 22 octubre 2012 - 09:30
#31
Escrito 22 octubre 2012 - 09:34
#32
Escrito 22 octubre 2012 - 09:43
Porque el archivo ajax no reconoce el archivo php.
Me explico?
Un saludo
#33
Escrito 22 octubre 2012 - 10:04
#34
Escrito 22 octubre 2012 - 10:46
#35
Escrito 22 octubre 2012 - 10:47
#36
Escrito 22 octubre 2012 - 10:54

#37
Escrito 23 octubre 2012 - 01:33
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.
#38
Escrito 23 octubre 2012 - 10:51
#39
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...

#40
Escrito 24 octubre 2012 - 07:26
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