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($sfonos, 0, -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
, pero no resulta lo que quiero hacer.
Obviamente si hay otra forma de hacerlo, por favor me guian, desde ya muchas gracias.