Foros del Web » Programando para Internet » PHP »

problemas con los else

Estas en el tema de problemas con los else en el foro de PHP en Foros del Web. hola amigos mi problema es con los else que no me muestran la respuesta correcta.....paso a dejarles el codigo y luego me explico mejor <?php ...
  #1 (permalink)  
Antiguo 22/10/2012, 01:39
 
Fecha de Ingreso: octubre-2012
Ubicación: Mendoza
Mensajes: 19
Antigüedad: 11 años, 6 meses
Puntos: 0
problemas con los else

hola amigos mi problema es con los else que no me muestran la respuesta correcta.....paso a dejarles el codigo y luego me explico mejor

<?php
session_start();

mysql_connect("localhost","root","") or die ("Error en conexion con base de datos:" . mysql_error());

mysql_select_db("regusuarios") or die ("Error en la seleccion de base de datos:" . mysql_error());

function quitar($mensaje)
{
$nopermitidos = array("'",'\\','<','>',"\"");
$mensaje = str_replace($nopermitidos, "", $mensaje);
return $mensaje;
}

$nombre=$_POST['nom_rec'];
$apellido=$_POST['app_rec'];
$usuario=$_POST['usr_rec'];
$email=$_POST['mail_rec'];
$pregunta=$_POST['preg_rec'];
$respuesta=$_POST['resp_rec'];

$result=mysql_query("select * from registros");

if($row = mysql_fetch_array($result)){

if($row["nombre"] == $nombre){

if($row["apellido"] == $apellido){

if($row["nombreusuario"] == $usuario){

if($row["email"] == $email){

if($row["preguntaseg"] == $pregunta){

if($row["respuesta"] == $respuesta){

header("Location:ultimo-paso-pass.html");
die;

}else{echo "La respuesta es incorrecta.";}

}else{echo "La pregunta de seguridad es incorrecta.";}

}else{echo "El email es incorrecto.";}

}else{echo "El nombre de usuario es incorrecto.";}

}else{echo "El apellido es incorrecto.";}

}else{echo "El nombre es incorrecto.";}
}

mysql_free_result($result);

mysql_close();
?>

el problema es que los echo de nombre, apellido y nombre de usuario me los muestra bien, pero los echo de email, pregunta de seguridad y respuesta me muestran el echo de nombre de usuario....no se cual es el problema espero que me puedan ayudar....gracias de antemano
  #2 (permalink)  
Antiguo 22/10/2012, 02:40
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 1 mes
Puntos: 26
Respuesta: problemas con los else

Son preguntas estupidas pero:
- estas seguro de que el nombre del usuario lo fuerzas para que no coincida con la variable para así passar al siguiente if?

- para comprobar que de verdad que los dos valores son diferentes podrias hacer un print_r($_POST) y un print_r($row) y ver si los valores coinciden o no.

- debo suponer que en tu tabla solo existes una fila, y que por eso haces el if($row... si no es así lo deberias coger con un bucle.

- en los else, si solo quieres hacer un echo puedes abstenerte de poner los '{}':
Código PHP:
if($verdadero=="falso"){
}else echo 
"hola!"
- Y por último, por favor, siempre que pegues código php ponlo en el embed php corresponiente para hacerlo visualmente mas atractivo.

Espero que esto sirva de algo...
__________________
Siempre fallaras el 100% de los tiros que no te atrevas a lanzar.
El 98% de los adolescentes han fumado, si eres del dichoso 2% que no lo ha hecho, copia y pega esto en tu firma.
  #3 (permalink)  
Antiguo 22/10/2012, 13:18
Avatar de tutorias  
Fecha de Ingreso: octubre-2012
Ubicación: Medellin
Mensajes: 69
Antigüedad: 11 años, 6 meses
Puntos: 13
De acuerdo Respuesta: problemas con los else

Un saludo, pruebe usted haciendo la comparación con la funcion strcmp de php. Recuerde que si el resultado de la funcion es igual a cero, entonces las cadenas son iguales. Su algoritmo lo probe y me funciono, pero falta ver que tipo de datos tenga en su BdeD.

Código PHP:
<?php
if($row mysql_fetch_array($result)){
    if(
strcmp($row["nombre"], $nombre) == 0){

        if(
strcmp($row["apellido"], $apellido) == 0){

            if(
strcmp($row["nombreusuario"], $usuario) == 0){

                if(
strcmp($row["email"], $email) == 0){

                    if(
strcmp($row["preguntaseg"], $pregunta) == 0){

                        if(
strcmp($row["respuesta"], $respuesta) == 0){

                            
header("Location:ultimo-paso-pass.html");
                            die;

                        }else{echo 
"La respuesta es incorrecta.";}

                    }else{echo 
"La pregunta de seguridad es incorrecta.";}

                }else{echo 
"El email es incorrecto.";}

            }else{echo 
"El nombre de usuario es incorrecto.";}

        }else{echo 
"El apellido es incorrecto.";}

    }else{echo 
"El nombre es incorrecto.";}
}
?>
  #4 (permalink)  
Antiguo 22/10/2012, 15:15
 
Fecha de Ingreso: octubre-2012
Ubicación: Mendoza
Mensajes: 19
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: problemas con los else

hola amigos gracias por las respuestas.....para aclarar un poco mas el tema:
1- en la base de datos los datos que tengo son los que aparecen en los $row: nombre, apellido, nombre de usuario, email, pregunta de seguridad y respuesta.

2-lo que estoy tratando de hacer es un sistema para recuperar contraseñas, como las voy a encriptar con md5 lo que quiero es que el usuario coloque sus datos en un formulario, si esos datos coinciden con los de la base de datos, entonces lo redirige a otra pagina donde colocara su nueva contraseña.

3-he estado corrigiendo un poco el codigo pero ahora siempre me salta "el nombre es incorrecto" y eso que lo estoy poniendo bien....no se que macana me mande.....paso a dejarles el codigo como esta ahora a ver si me pueden ayudar....

Código PHP:
Ver original
  1. <?php
  2.  
  3.     session_start();
  4.    
  5.     mysql_connect("localhost","root","") or die ("Error en conexion con base de datos:" . mysql_error());
  6.     mysql_select_db("regusuarios") or die ("Error en la seleccion de base de datos:" . mysql_error());
  7.    
  8.     function quitar($mensaje)
  9.     {
  10.         $nopermitidos = array("'",'\\','<','>',"\"");
  11.         $mensaje = str_replace($nopermitidos, "", $mensaje);
  12.         return $mensaje;
  13.     }    
  14.    
  15.     if(trim($_POST['nom_rec']) != "" && trim($_POST['app_rec']) != "" && trim($_POST['usr_rec']) != "" && trim($_POST['mail_rec']) != "" && trim($_POST['preg_rec']) != "" && trim($_POST['resp_rec']) != ""){
  16.    
  17.     $nombre=$_POST['nom_rec'];
  18.     $apellido=$_POST['app_rec'];
  19.     $usuario=$_POST['usr_rec'];
  20.     $email=$_POST['mail_rec'];
  21.     $pregunta=$_POST['preg_rec'];
  22.     $respuesta=$_POST['resp_rec'];
  23.    
  24.     $result=mysql_query('SELECT * from registros');
  25.    
  26.         if($row=mysql_fetch_array($result)){
  27.        
  28.             if($row["nombre"] == $nombre){
  29.            
  30.                 if($row["apellido"] == $apellido){
  31.                
  32.                     if($row["nombreusuario"] == $usuario){
  33.                    
  34.                         if($row["email"] == $email){
  35.                        
  36.                             if($row["preguntaseg"] == $pregunta){
  37.                            
  38.                                 if($row["respuesta"] == $respuesta){
  39.                                
  40.                                     header("Location:ultimo-paso-pass.html");
  41.                                     die;
  42.                                    
  43.                                 }else echo "La respuesta es incorrecta.";
  44.                                
  45.                             }else echo "La pregunta de seguridad es incorrecta.";
  46.                            
  47.                         }else echo "El email es incorrecto.";
  48.                        
  49.                     }else echo "El nombre de usuario es incorrecto.";
  50.                    
  51.                 }else echo "El apellido es incorrecto.";
  52.                
  53.             }else echo "El nombre es incorrecto.";
  54.         mysql_free_result($result);
  55.         }
  56.         }else echo "Debe completar todos los datos.";
  57.    
  58.        
  59.        
  60.     mysql_close();
  61.     ?>
espero que me puedan ayudar....muchas gracias....y perdon por poner el codigo anterior asi nomas....no sabia como ponerlo prolijo..jaja...gracias...
  #5 (permalink)  
Antiguo 22/10/2012, 15:21
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: problemas con los else

te falto abrir los ELSE {

Código PHP:
Ver original
  1.    
  2.     mysql_connect("localhost","root","") or die ("Error en conexion con base de datos:" . mysql_error());
  3.     mysql_select_db("regusuarios") or die ("Error en la seleccion de base de datos:" . mysql_error());
  4.    
  5.     function quitar($mensaje)
  6.     {
  7.         $nopermitidos = array("'",'\\','<','>',"\"");
  8.         $mensaje = str_replace($nopermitidos, "", $mensaje);
  9.         return $mensaje;
  10.     }    
  11.    
  12.     if(trim($_POST['nom_rec']) != "" && trim($_POST['app_rec']) != "" && trim($_POST['usr_rec']) != "" && trim($_POST['mail_rec']) != "" && trim($_POST['preg_rec']) != "" && trim($_POST['resp_rec']) != ""){
  13.    
  14.     $nombre=$_POST['nom_rec'];
  15.     $apellido=$_POST['app_rec'];
  16.     $usuario=$_POST['usr_rec'];
  17.     $email=$_POST['mail_rec'];
  18.     $pregunta=$_POST['preg_rec'];
  19.     $respuesta=$_POST['resp_rec'];
  20.    
  21.     $result=mysql_query('SELECT * from registros');
  22.    
  23.         if($row=mysql_fetch_array($result)){
  24.        
  25.             if($row["nombre"] == $nombre){
  26.            
  27.                 if($row["apellido"] == $apellido){
  28.                
  29.                     if($row["nombreusuario"] == $usuario){
  30.                    
  31.                         if($row["email"] == $email){
  32.                        
  33.                             if($row["preguntaseg"] == $pregunta){
  34.                            
  35.                                 if($row["respuesta"] == $respuesta){
  36.                                
  37.                                     header("Location:ultimo-paso-pass.html");
  38.                                     die;
  39.                                    
  40.                                 }else {echo "La respuesta es incorrecta.";
  41.                                
  42.                             }else{ echo "La pregunta de seguridad es incorrecta.";
  43.                            
  44.                         }else{ echo "El email es incorrecto.";
  45.                        
  46.                     }else{ echo "El nombre de usuario es incorrecto.";
  47.                    
  48.                 }else{ echo "El apellido es incorrecto.";
  49.                
  50.             }else{ echo "El nombre es incorrecto.";
  51.         mysql_free_result($result);
  52.         }
  53.         }else{ echo "Debe completar todos los datos.";
  54.    
  55.        
  56.        
  57.     mysql_close();
  #6 (permalink)  
Antiguo 22/10/2012, 23:56
 
Fecha de Ingreso: octubre-2012
Ubicación: Mendoza
Mensajes: 19
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: problemas con los else

muchas gracias a todos por sus respuestas.... estuve modificando el codigo y ahora funciona a la perfeccion....les dejo el codigo terminado a lo mejor a alguien le sirve y depaso para que lo vean porque cometi el grosero error de tener los else en el orden incorrecto....gracias por todo

Código PHP:
Ver original
  1. <?php
  2.  
  3.     session_start();
  4.    
  5.     mysql_connect("localhost","root","") or die ("Error en conexion con base de datos:" . mysql_error());
  6.     mysql_select_db("regusuarios") or die ("Error en la seleccion de base de datos:" . mysql_error());
  7.    
  8.     function quitar($mensaje)
  9.     {
  10.         $nopermitidos = array("'",'\\','<','>',"\"");
  11.         $mensaje = str_replace($nopermitidos, "", $mensaje);
  12.         return $mensaje;
  13.     }    
  14.    
  15. if(trim($_POST['nom_rec']) != "" && trim($_POST['app_rec']) != "" && trim($_POST['usr_rec']) != "" && trim($_POST['mail_rec']) != "" && trim($_POST['preg_rec']) != "" && trim($_POST['resp_rec']) != ""){
  16.    
  17.     $nombre=$_POST['nom_rec'];
  18.     $apellido=$_POST['app_rec'];
  19.     $usuario=$_POST['usr_rec'];
  20.     $email=$_POST['mail_rec'];
  21.     $pregunta=$_POST['preg_rec'];
  22.     $respuesta=$_POST['resp_rec'];
  23.    
  24.    
  25.     $result=mysql_query('SELECT * from registros WHERE nombreusuario=\''.$usuario.'\'');
  26.    
  27.         if($row=mysql_fetch_array($result)){
  28.        
  29.             if($row["nombre"] == $nombre){
  30.            
  31.                 if($row["apellido"] == $apellido){
  32.                    
  33.                         if($row["email"] == $email){
  34.                        
  35.                             if($row["preguntaseg"] == $pregunta){
  36.                            
  37.                                 if($row["respuesta"] == $respuesta){
  38.                                
  39.                                     header("Location:ultimo-paso-pass.html");
  40.                                     die;
  41.                                    
  42.                                 }else {echo "La respuesta es incorrecta.";}
  43.                                
  44.                             }else {echo "La pregunta de seguridad es incorrecta.";}
  45.                            
  46.                         }else {echo "El email es incorrecto.";}
  47.                    
  48.                 }else {echo "El apellido es incorrecto.";}
  49.                
  50.             }else {echo "El nombre es incorrecto.";}
  51.            
  52.         mysql_free_result($result);
  53.     }
  54.     else {echo "El nombre de usuario es incorrecto.";}
  55.    
  56. }else {echo "Debe completar todos los datos.";}
  57.    
  58.        
  59.        
  60. ?>

Etiquetas: html, mysql, registro, sql, usuarios
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 04:18.