Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/06/2013, 08:28
gmonterog
 
Fecha de Ingreso: mayo-2012
Ubicación: Palma de Mallorca
Mensajes: 71
Antigüedad: 12 años
Puntos: 1
Repetir mismo while dos veces

Hola,

Me ha surgido un problema al poner dos veces el mismo bucle while (misma condición pero el código que se repite dentro del while es diferente en cada uno).

Por lo que he visto en esta entrada del foro http://www.forosdelweb.com/f18/repetir-while-922369/ no se puede repetir dos veces el mismo bucle while a no ser que lo encapsules en una función.

Este es mi código:

Código PHP:

    
//Si existe el recordset $datos_clientes...
    
if($datos_clientes){
                        
        
//Si hay algún registro en el recordset
        
if(mysqli_num_rows($datos_clientes)!=0){
            
            
//Abrimos un buffer
            
ob_start();
            
            
//Para cada cliente de la BBDD...
            
while($linea=mysqli_fetch_array($datos_clientes)){              
                
                
//Variables para el html (elemento-cliente.php)
                
$id_cliente=$linea['id_cliente'];
                
$formulario_borrar="index.php?vista=baja-clientes&id=$id_cliente";
                
$formulario_editar="index.php?vista=edicion-clientes&id=$id_cliente";
                
$nombre_empresa_cliente=$linea['nombre_empresa_cliente'];
                
                
//Incluimos el html con la plantilla del elemento tipo cliente
                
include('./site-media/html/modules/clientes/elemento-cliente.php');
                
            }
            
            
//Capturamos el buffer en una variable para la vista html (resultados.php) y lo cerramos
            
$contenido_elemento=ob_get_clean();
        
        }else{...

.
.
.
.
.
.
.

...
Y SE REPITE LA MISMA ESTRUCTURA...

    
//Si existe el recordset $datos_clientes...    
    
if($datos_clientes){
        
        
//Creamos un array para guardar los mails de los clientes...    
        
$mails_clientes=array();
        
        
//Si hay algún registro en el recordset
        
if(mysqli_num_rows($datos_clientes)!=0){
                         
            
//Para cada cliente de la BBDD...
           
            
while($linea=mysqli_fetch_array($datos_clientes)){
                
                
//Obtenemos el mail del cliente...
                
$mail_cliente=$linea['mail_cliente'];
                                
                
//Lo añadimos al array...
                
$mails_clientes[]=$mail_cliente;                
                
//Guardamos el array en una variable de sesión.
                
$_SESSION['mails_clientes']=$mails_clientes;
                                
            }
                        
        }
        
    } 
Tengo varias consultas al respecto:

- La primera: ¿como encapsulo el while en una función como se comenta en la entrada que he indicado?
- La segunda: ¿Alguien sabe el porque de este comportamiento. Es un tema de PHP o ocurre en más lenguajes?
- La tercera (y última):¿Ocurre lo mismo con otras estructuras de control (for, foreach...)?

Muchas gracias desde ya a todos.

Un saludo,

GMG