Foros del Web » Programando para Internet » PHP »

Desesperación total con While

Estas en el tema de Desesperación total con While en el foro de PHP en Foros del Web. Hola compañeros, llevo horas haciendo pruebas, pero en algo tan sencillo com un WHILE, entro en un bucle infinito que hace que se cuelgue el ...
  #1 (permalink)  
Antiguo 22/06/2015, 04:45
Avatar de Benderzuelo  
Fecha de Ingreso: mayo-2013
Ubicación: España
Mensajes: 223
Antigüedad: 11 años, 6 meses
Puntos: 5
Desesperación total con While

Hola compañeros,

llevo horas haciendo pruebas, pero en algo tan sencillo com un WHILE, entro en un bucle infinito que hace que se cuelgue el servidor.

Les voy a poner el código que lo causa pero antes de ello les explicaré que he repasado todo punto por punto, que todas las consultas que tiene el código si las ejecuto en phpmyadmin funcionan perfectamente.

Me pasó lo mismo en otra parte de la aplicación y lo solucioné haciendo la Conexión a la BBDD a mano, porque usaba una clase Mysql, en teoría hago l mismo de manera manual y además el resto de la aplicación está con la clase Mysql y funciona bien.

Bueno como digo en el momento que entra en el while entra en bucle infinito y tumba el server, el while genera este fallo aunque esté totalemente vacío, si quito el while funciona bien pero claro no me devuelve lo que necesito.

A lo mejor el fallo es muy simple y ya no soy capaz de verlo después de horas...

Código PHP:
Ver original
  1. function esDeLaEmpresa($idMod, $idUser, $permiso){
  2.     $cnx1 = mysqli_connect('localhost','user','pass','bbdd');
  3.    
  4.     $sql = "SELECT idRelacion, idPrimario FROM usuariosComunes WHERE idUsuario = $idMod";
  5.    
  6.     $res = mysqli_query($cnx1,$sql);
  7.    
  8.     if($res){
  9.         $row = mysqli_fetch_assoc($res);
  10.        
  11.         $idRelacionMod = $row['idRelacion'];
  12.         $idPrimarioMod = $row['idPrimario'];
  13.        
  14.         $sql1 = "SELECT idUsuario FROM usuariosComunes WHERE idPermiso > $permiso AND idRelacion = $idRelacionMod OR idPrimario = $idPrimarioMod";
  15.        
  16.         $res1 = mysqli_query($cnx1,$sql1);
  17.        
  18.         $ok = 0;
  19.        
  20.         if($res1){
  21.             $row1 = mysqli_fetch_assoc($res1);
  22.            
  23.             $filas = mysqli_num_rows($res1);
  24.            
  25.             if($filas > 1){
  26.                 while($row1){
  27.                     if($row1['idUsuario'] == $idUser){
  28.                         $ok = 1;
  29.                         continue;
  30.                     }
  31.                 }
  32.             }
  33.         }else{
  34.             $ok = 2;
  35.         }
  36.     }else{
  37.         $ok = 3;
  38.     }
  39.     return $ok;
  40. }

A ver si alguien localiza el fallo porque yo ya no soy capaz.

Muchas gracias por adelantado
  #2 (permalink)  
Antiguo 22/06/2015, 05:54
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 9 meses
Puntos: 67
Respuesta: Desesperación total con While

Aqui tienes la solución:

Código PHP:
Ver original
  1. if($res1){
  2.  
  3.    $filas = mysqli_num_rows($res1);
  4.            
  5.    if($filas > 1){
  6.  
  7.       while($row1 = mysqli_fetch_assoc($res1)){
  8.  
  9.          if($row1['idUsuario'] == $idUser){
  10.  
  11.             $ok = 1;
  12.  
  13.             continue;
  14.  
  15.          }
  16.  
  17.       }
  18.  
  19.    }
  20.  
  21. }else{
  22.  
  23.    $ok = 2;
  24.  
  25. }

Saludos.
__________________
No te preocupes si tu código no funciona bien. Si todo lo hiciera, no tendrías trabajo.
  #3 (permalink)  
Antiguo 22/06/2015, 08:46
Avatar de Benderzuelo  
Fecha de Ingreso: mayo-2013
Ubicación: España
Mensajes: 223
Antigüedad: 11 años, 6 meses
Puntos: 5
Respuesta: Desesperación total con While

Muchísimas gracias,

efectivamente así funciona, es más normalmente siempre lo hago así pero en este caso no se por qué estaba de esta manera, pero igualmente pensaba que estaba bien.

¿qué diferencia hay de que esté asociado dentro del while que fuera?

Pensaba que debería ser lo mismo.

Gracias de nuevo

Etiquetas: bucle, bucles, infinito
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 01:01.