Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Else no funciona

Estas en el tema de Else no funciona en el foro de PHP en Foros del Web. Porque mi else no funciona, ya intente hacer el cambio a else if @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original <?php session_start ( ) ;   ...
  #1 (permalink)  
Antiguo 27/08/2014, 17:05
Avatar de odek  
Fecha de Ingreso: julio-2011
Ubicación: México
Mensajes: 55
Antigüedad: 13 años, 4 meses
Puntos: 1
Else no funciona

Porque mi else no funciona, ya intente hacer el cambio a else if


Código PHP:
Ver original
  1. <?php
  2.  
  3. $usuario = $_POST['usuario'];
  4. $contrasena = $_POST['contrasena'];
  5.  
  6. $con = mysqli_connect("localhost","prueba","prueba","lolo");
  7. $sen = "SELECT * FROM personal WHERE usuario = '$usuario' AND contrasena = '$contrasena'";
  8. $res = mysqli_query($con,$sen);
  9.  
  10. while($fila = mysqli_fetch_array($res)){
  11.     $usbase = $fila['usuario'];
  12.     $conbase = $fila['contrasena'];
  13.    
  14.     if($usuario == $usbase && $contrasena == $conbase){
  15.         $_SESSION['usuario'] = $usuario;
  16.         $_SESSION['contrasena'] = $contrasena;
  17.         echo '
  18.         <html>
  19.         <head>
  20.         <meta http-equiv="refresh" content="0;url=../acceso/inicio.php">
  21.         </head>
  22.         </html>
  23.         ';
  24. } else {
  25.     echo '
  26.         <html>
  27.         <head>
  28.         <meta http-equiv="refresh" content="0;url=../index.php">
  29.         </head>
  30.         </html>
  31.         ';
  32. }
  33. }
  34. ?>
__________________
Mi life in pixel -_-
  #2 (permalink)  
Antiguo 27/08/2014, 17:31
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Else no funciona

Si no entra al else es porque la condición del if() se cumple, ¿no te parece lógico?

Puedes verificar los valores que comparas así:
Código PHP:
Ver original
  1. var_dump($usuario, $usbase, $contrasena, $conbase);
  2. var_dump($usuario == $usbase, $contrasena == $conbase);

¿Qué resultados obtienes?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 27/08/2014, 17:38
Avatar de bookmaster  
Fecha de Ingreso: febrero-2002
Ubicación: Toledo
Mensajes: 976
Antigüedad: 22 años, 9 meses
Puntos: 67
Respuesta: Else no funciona

No te funciona el else porque la consulta te va a devolver siempre un valor correcto por que se cumple con el WHERE, y en el caso de que no te lo devuelva, el while no tendrá efecto porque no tendrá nada que recorrer.
Tendrías que eliminar el while siempre y cuando solo obtengas un registro.
__________________
Decir si te a funcionado la respuesta es ¡GRATIS!. Por favor indicarlo.
http://www.lohacemosweb.net
http://tutoriales.lohacemosweb.net
  #4 (permalink)  
Antiguo 27/08/2014, 17:40
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Else no funciona

Con las condiciones de ese where, jamás entrará en el else...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 28/08/2014, 10:30
Avatar de odek  
Fecha de Ingreso: julio-2011
Ubicación: México
Mensajes: 55
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: Else no funciona

Ya cambie el where pero ahora el problema es que todo es negativo, no importa si el usuario y contraseña sean correctos

Código PHP:
Ver original
  1. <?php
  2. $con = mysqli_connect("localhost","prueba","prueba","lolo");
  3.  
  4. $usuario = mysqli_real_escape_string($con,$_POST['usuario']);
  5. $contrasena = mysqli_real_escape_string($con,$_POST['contrasena']);
  6.  
  7. $sen = "SELECT * FROM personal ";
  8. $query = htmlentities($sen);
  9. $res = mysqli_query($con,$query);
  10.  
  11. while($fila = mysqli_fetch_array($res)){
  12.     $usbase = $fila['usuario'];
  13.     $conbase = $fila['contrasena'];
  14.    
  15.     if($usuario == $usbase & $contrasena == $conbase){
  16.         $_SESSION['usuario'] = $usuario;
  17.         $_SESSION['contrasena'] = $contrasena;
  18.         echo '
  19.         funciona
  20.         ';
  21. } else {
  22.     echo '
  23.         No funciona
  24.         ';
  25. }}
  26. ?>
__________________
Mi life in pixel -_-

Última edición por odek; 28/08/2014 a las 10:59
  #6 (permalink)  
Antiguo 28/08/2014, 11:16
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Else no funciona

Más grave es que estás extrayendo todos los registros para comparar sólo uno.

Lo correcto es una sola consulta con el WHERE, y es muy simple: ya no necesitas ningún else.

Verificas con mysql_num_rows() si la consulta trae resultados, si no los hay sería lo mismo del else que intentabas hacer.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 28/08/2014, 11:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Else no funciona

En realidad lo estabas haciendo bastante bien al principio, pero evaluando incorrectamente lo que obtienes de la base, porque si el usuario es único, y su password también, entonces la query sólo devolvería registros si hay coincidencia, por lo que todo el while() y ese if eran innecesarios.
La cosa podría andar, basándome en tu propio código, mas o menos así:
Código PHP:
Ver original
  1. <?php
  2.  
  3. $usuario = $_POST['usuario'];
  4. $contrasena = $_POST['contrasena'];
  5. $con = mysqli_connect("localhost", "prueba", "prueba", "lolo");
  6. $sen = "SELECT * FROM personal WHERE usuario = '$usuario' AND contrasena = '$contrasena'";
  7. $res = mysqli_query($con, $sen);
  8. if (!res) {
  9.     echo '
  10.        <html>
  11.        <head>
  12.        <meta http-equiv="refresh" content="0;url=../index.php">
  13.        </head>
  14.        </html>
  15.        ';
  16. } else {
  17.     if (mysqli_num_rows($res) > 0) {
  18.         $fila = mysqli_fetch_array($res);
  19.         $usbase = $fila['usuario'];
  20.         $conbase = $fila['contrasena'];
  21.         $_SESSION['usuario'] = $usuario;
  22.         $_SESSION['contrasena'] = $contrasena;
  23.         echo '
  24.        <html>
  25.        <head>
  26.        <meta http-equiv="refresh" content="0;url=../acceso/inicio.php">
  27.        </head>
  28.        </html>
  29.        ';
  30.     } else {
  31.         echo '
  32.        <html>
  33.        <head>
  34.        <meta http-equiv="refresh" content="0;url=../index.php">
  35.        </head>
  36.        </html>
  37.        ';
  38.     }
  39. }
  40. ?>
__________________
¿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: html, mysql, select
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 12:14.