Ver Mensaje Individual
  #1  
Antiguo 27-03-2017
Avatar de Adrian Murua
Adrian Murua Adrian Murua is offline
Miembro
 
Registrado: oct 2003
Ubicación: Tucuman - Argentina
Posts: 45
Reputación: 0
Adrian Murua Va por buen camino
Saltar registros dentro de un foreach

Estimados Amigos:
Tengo dos tablas en mysql , una es de personas y otra es de telefonos relacionadas entre si por un campo "personas_id" en la tabla telefonos, tengo una consulta "seleccionar todos los telefonos que tiene una persona", la que arroja un conjunto de datos parecido a:

apellido telefono Personas_id
Roldan 541138451425 1
Roldan 541138111122 1
Roldan 541144444444 1
Perez 542614502354 2
Perez 542612222222 2
Juarez 543514542222 3


La he resumido en campos y registros. ;D

Como se puede ver si la persona tiene 2 o 3 numeros de telefonos tenemos un registro por cada numero, lo que yo deseo mostrar es una linea por cada persona y si tiene mas de un numero de telefono , en la columna telefono concatenar todos los numeros de esta persona, algo asi como:


apellido telefono Personas_id
Roldan 541138451425 | 541138111122 | 541144444444 1
Perez 542614502354 | 542612222222 2
Juarez 543514542222 3

Para esto uso el siguiente trozo de codigo, con dos foreach anidados:


Código PHP:
         if ($clientes){
            
            foreach(
$clientes->items as $cli){
               
               
$sfonos =  $cli->numero ' | '//variable que concatena el numero de telefono
 
               
foreach ($clientes->items as $cli1 ){
            
                  if (
$cli->personas_id == $cli1->personas_id){ // si es la misma persona concateno.
                     
                     
$sfonos .=  $cli1->numero ' | ';
                  }
                  
               }
               
               
$sfonos substr($sfonos0, -4); // quito el ultimo ' | ' agregado.
               
               
$this->aTelefonos[] = array(   // genero un array asociativo para mostrar
                     
'personas_id'=>$cli->personas_id,
                     
'apellido'=>$cli->apellido,
                     
'telefonos'=>$sfonos);
                   
// continue;
               
            
}
            
         } 
El codigo concatena correctamente, pero me sigue mostrando la misma cantidad de lineas como numero de telefonos tenga la persona , eso si me concatena en cada una de las lineas, lo que no se hacer es que en el foreach externo "salte" el registro que concatena , es decir cuando esta en "Roldan", tome el primer registro y salte los dos siguientes, como veran estuve probando con
Código PHP:
continue; 
, pero no resulta lo que quiero hacer.
Obviamente si hay otra forma de hacerlo, por favor me guian, desde ya muchas gracias.
__________________
Adrián Murúa.
Responder Con Cita