Foros del Web » Programando para Internet » PHP »

problema al comprobar campos

Estas en el tema de problema al comprobar campos en el foro de PHP en Foros del Web. hola chicos vengo con este problema que no logro solucionar, al momento de registrarse me dice que el email ya esta en uso, pero lo ...
  #1 (permalink)  
Antiguo 05/11/2012, 11:13
Avatar de polarubi  
Fecha de Ingreso: noviembre-2008
Mensajes: 243
Antigüedad: 15 años, 5 meses
Puntos: 2
Pregunta problema al comprobar campos

hola chicos vengo con este problema que no logro solucionar, al momento de registrarse me dice que el email ya esta en uso, pero lo que pasa es que me lo registra igual y se registra con el mismo email que otro usuario, ya no se como arreglarlo :S

este es el codigo de mi register-check-form.php

Código PHP:
<?php
include("../h.home.php");

$nick mysql_real_escape_string($_POST['username']);
$email mysql_real_escape_string($_POST['email']);

if(
trim($nick)){
$user mysql_query("SELECT * FROM usuarios WHERE nick = '$nick'") or die(mysql_error());
$u mysql_num_rows($user);
if(
$u==1) die('{"status":0,"error":"username","data":"El nick ya esta en uso"}');
else
echo
'{"status":1,"valid":"username"}';
}

if(
trim($email)){
if(!
filter_var($emailFILTER_VALIDATE_EMAIL)){
   die(
'{"status":0,"error":"email","data":"El email no es valido"}');
}
$user mysql_query("SELECT * FROM usuarios WHERE mail = '$email'") or die(mysql_error());
$u mysql_num_rows($user);
if(
$u==1) die('{"status":0,"error":"email","data":"El email ya esta en uso"}');
else
echo
'{"status":1,"valid":"email"}';
}
?>
cualquier ayuda no me vendria mal, gracias
  #2 (permalink)  
Antiguo 05/11/2012, 11:42
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: problema al comprobar campos

La consulta es correcta, lo que puedes tener es errores en la lógica de PHP que evalúa la respuesta.
te paso el post al foro de PHP para que te asistan.
Saludos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 05/11/2012, 11:44
 
Fecha de Ingreso: abril-2009
Ubicación: en un lugar de la mancha
Mensajes: 236
Antigüedad: 15 años
Puntos: 38
Respuesta: problema al comprobar campos

Creo ke mas bien es problema de logica, aqui he tratado de organizarlo algo, chequealo a ver si te sirve

Código PHP:
include("../h.home.php"); 

$nick  trim(mysql_real_escape_string$_POST['username'] )); 
$email trim(mysql_real_escape_string$_POST['email'] )); 

function 
chequearDatos($field$valor)
{
    
$query mysql_query"SELECT " $field " FROM usuarios WHERE " $field " = '$valor'" ) or die( mysql_error() ); 
    return 
mysql_num_rows$query ); 
}    

if ( !empty(
$nick) )
{
    if ( 
chequearDatos('nick'$nick) )
    { 
        throw new 
Exception('Username ya exsite');
    }
    
    echo
'{"status":1,"valid":"username"}'
    


if( ( !empty(
$email) )

    if( !
filter_input(INPUT_POST$emailFILTER_VALIDATE_EMAIL) );
    {    
        throw new 
Exception('Email no valido');
    }
    
    if ( 
chequearDatos('mail'$email) )
    {
        throw new 
Exception('Email en uso');
    }
    
    echo
'{"status":1,"valid":"email"}'
    

espero te ayude
buena suerte
  #4 (permalink)  
Antiguo 05/11/2012, 13:09
Avatar de polarubi  
Fecha de Ingreso: noviembre-2008
Mensajes: 243
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: problema al comprobar campos

Cita:
Iniciado por rolygc Ver Mensaje
Creo ke mas bien es problema de logica, aqui he tratado de organizarlo algo, chequealo a ver si te sirve

Código PHP:
include("../h.home.php"); 

$nick  trim(mysql_real_escape_string$_POST['username'] )); 
$email trim(mysql_real_escape_string$_POST['email'] )); 

function 
chequearDatos($field$valor)
{
    
$query mysql_query"SELECT " $field " FROM usuarios WHERE " $field " = '$valor'" ) or die( mysql_error() ); 
    return 
mysql_num_rows$query ); 
}    

if ( !empty(
$nick) )
{
    if ( 
chequearDatos('nick'$nick) )
    { 
        throw new 
Exception('Username ya exsite');
    }
    
    echo
'{"status":1,"valid":"username"}'
    


if( ( !empty(
$email) )

    if( !
filter_input(INPUT_POST$emailFILTER_VALIDATE_EMAIL) );
    {    
        throw new 
Exception('Email no valido');
    }
    
    if ( 
chequearDatos('mail'$email) )
    {
        throw new 
Exception('Email en uso');
    }
    
    echo
'{"status":1,"valid":"email"}'
    

espero te ayude
buena suerte
muchas gracias pero no me sirvio, al momento de poner cualquier nick, este en uso o no, me sale error :S
  #5 (permalink)  
Antiguo 05/11/2012, 13:43
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: problema al comprobar campos

Cita:
al momento de poner cualquier nick, este en uso o no, me sale error :S
¿Y te parece que decir "me sale error" es información suficiente para que sepamos qué pasó?
Por favor, trata de dar mejores detalles, como qué mensajes recibiste, qué códigos devuelve, con qué datos lo probaste, etc.
Es decir ALGO con qué empezar a analizar el problema.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 07/11/2012, 02:45
Avatar de polarubi  
Fecha de Ingreso: noviembre-2008
Mensajes: 243
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: problema al comprobar campos

perdon por mi ausencia pero el error es este, usando el codigo que me paso rolygc me pasa lo siguiente

http://screenshotuploader.com/s/01/gt9ole63x

Nick o email que ponga siempre me da ese error, este en uso o no :s ....
  #7 (permalink)  
Antiguo 07/11/2012, 03:31
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: problema al comprobar campos

Bueno, eso no dice absolutamente nada...
¿Que parte de tu código genera ese mensaje "Error", o es algo automático puesto por la interfaz d e desarrollo?
¿Le pusiste en alguna parte un control de excepciones que haga que la aplicación muestre o diga lo que está pasando?
Es decir: Eso que todos los desarrolladores hacen.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 07/11/2012, 08:30
 
Fecha de Ingreso: abril-2009
Ubicación: en un lugar de la mancha
Mensajes: 236
Antigüedad: 15 años
Puntos: 38
Respuesta: problema al comprobar campos

Estamos en el paso 1 nuevamente, no entender
  #9 (permalink)  
Antiguo 07/11/2012, 09:17
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: problema al comprobar campos

¿Sabes controlar excepciones?
¿Conoces los bloques Try/Catch?
¿Capturas los errores que puede devolver la base de datos ante un fallo de una consulta?

los dos primeros son lo mismo: Todo programa puede disparar un error por diversas cosas, y cada una de ellas es una excepción, numerada y con mensaje, que debe capturarse para evitar que genere la detención del programa.
¿Eso lo entiendes?
Cada lenguaje tiene su método, pero capturar el error es sólo la primera parte: Tienes que en el momento de capturarlo, el usuario peuda recibir un mensaje (en pantalla o en log) que explique qué pasó (para eso están clasificadas las Exception), y poder darle información al soporte de la misma.
También la ejecución con error de una consulta en la base de datos devuelve a la aplicación un numero de error y un mensaje. Y antes de hacer nada con el objeto que recibe el producto de la consulta se debe verificar si no existieron errores y si los hubieron, notificarlos, sin permitir que la operación prosiga (y obviamente genere más errores a nivel aplicación).
Incluso, aunque no haya errores, puede que una consulta SELECT no devuelva registros, porque ninguno cumple las condiciones pedidas. Entonces el result es un puntero nulo y si lo usas sin verificar se producirán errores.
Todo esto es el ABC del desarrollo de programas.

Si no estás haciendo en tu aplicación nada de eso, entonces jamás vas a saber qué pasa, y nosotros tampoco podremos ayudarte.

Entonces, ¿estás capturando esos errores y mostrando los mensajes, o simplemente le mandas a mostrar un aviso que dice "Error"?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: campos, select, sql
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 22:29.