Espero puedan ayudarme. Practicamente el problema lo tengo en el primer fragmento de codigo, que es una parte del segundo codigo que he adjuntado (el script de la vista).
El problema que tengo es que quiero que al listar los profesores aparezca el nombre solo una vez, como he hecho con los grupos, pero no consigo hacer lo mismo para este campo.
Pueden decirme que estoy haciendo mal? LLevo horas intentando sacarlo, pero no hay manera.
Muchas gracias y un saludo.
Olvide añadir la consulta que me devuelve todas las propuestas, es la siguiente:
Código:
SELECT p.cod_propuesta, p.fecha,p.reserva,p.transporte,p.entrada, p.tipo_periodo, p.creado_por, p.fecha_creacion, p.modificado_por, p.fecha_modificacion, d.nombre as destino,d.direccion,g.nombre as grupo, concat_ws(' ', u.nombre,u.apellidos) as profesor FROM destinos d INNER JOIN propuestas p ON d.cod_destino=p.destino INNER JOIN grupos_participantes_propuesta gpp ON p.cod_propuesta = gpp.cod_propuesta INNER JOIN profesores_participantes_propuesta ppp ON p.cod_propuesta=ppp.cod_propuesta INNER JOIN grupos g ON gpp.id_grupo=g.id_grupo INNER JOIN usuarios u ON ppp.usuario=u.usuario
Código PHP:
Ver original
foreach ($propuestas as $unaPropuesta) { if($unaPropuesta->devuelveCod_propuesta() == $ultimaPropuesta){//Seguimo en la misma propuesta que la anterior if($unaPropuesta->devuelveGrupo() != $ultimoGrupo){ $contenidoGrupos .= "{$unaPropuesta->devuelveGrupo()} <br>"; $ultimoGrupo = $unaPropuesta->devuelveGrupo(); } if($unaPropuesta->devuelveProfesor() != $ultimoProfesor){ $contenidoProfesores .= "{$unaPropuesta->devuelveProfesor()} <br>"; $ultimoProfesor = $unaPropuesta->devuelveProfesor(); } }else{//Se ha producido un cambio de propuesta if($ultimaPropuesta > 0){//No se trata de la primera iteracion $contenido = $contenido . $contenidoAntes . $contenidoGrupos . "</td>" . $contenidoProfesores . "</td>" . $contenidoDespues; $contenidoAntes = ""; $contenidoGrupos = ""; $contenidoProfesores = ""; $contenidoDespues = ""; } $ultimaPropuesta = $unaPropuesta->devuelveCod_propuesta(); $ultimoGrupo = $unaPropuesta->devuelveGrupo(); $ultimoProfesor = $unaPropuesta->devuelveProfesor(); $contenidoAntes = " <tr> <td>{$unaPropuesta->devuelveFecha()}</td> <td>{$unaPropuesta->devuelveDestino()}</td> <td>{$unaPropuesta->devuelveReserva()}</td> <td>{$unaPropuesta->devuelveTransporte()}</td> <td>{$unaPropuesta->devuelveEntrada()}</td> "; $contenidoGrupos = "<td>{$unaPropuesta->devuelveGrupo()} <br>"; $contenidoProfesores = "<td>{$unaPropuesta->devuelveProfesor()} <br>"; $contenidoDespues = "<td>{$unaPropuesta->devuelveFecha_creacion()}</td> <td>{$unaPropuesta->devuelveCreado_por()}</td> <td>{$unaPropuesta->devuelveFecha_modificacion()}</td> <td>{$unaPropuesta->devuelveModificado_por()}</td> <td><a href=\"javascript:confirmaBaja('{$unaPropuesta->devuelveCod_propuesta()}')\"> <img src='{$img}lapiz.jpg' width='25' height='25' /></a></td> <td><a href=\"javascript:confirmaBaja('{$unaPropuesta->devuelveCod_propuesta()}')\"> <img src='{$img}aspa-roja.gif' width='25' height='25' /></a></td> </tr>"; } } if($ultimaPropuesta > 0){//Se ha recibido alguna propuesta $contenido = $contenido . $contenidoAntes . $contenidoGrupos . "</td>" . $contenidoProfesores . "</td>" . $contenidoDespues; }
Código PHP:
Ver original
<?php require_once "modelo/Propuesta.php"; require_once "conf/constantes.php"; class VistaListadoPropuesta { static function construye($propuestas) { $img = DIR_RAIZ_APP . '/img/'; $titulo = "Listado de Propuestas"; $contenido = " <h1>$titulo</h1> <table border='1' cellpadding='5' cellspacing='3'> <tr> <th>Fecha</th> <th>Destino</th> <th>Necesidad reserva</th> <th>Necesidad de transporte</th> <th>Necesidad de compra de entradas</th> <th>Grupos</th> <th>Profesores</th> <th>Fecha de creación</th> <th>Creado por</th> <th>Fecha de modificacion</th> <th>Modificado por</th> <th>Modificar</th> <th>Eliminar</th> </tr> "; $ruta = DIR_RAIZ_APP . INDEX; $ultimaPropuesta = 0; $ultimoGrupo = ""; $ultimoProfesor = ""; $profesorAnterior = ""; $contenidoAntes = ""; $contenidoGrupos = ""; $contenidoProfesores = ""; $contenidoDespues = ""; foreach ($propuestas as $unaPropuesta) { if($unaPropuesta->devuelveCod_propuesta() == $ultimaPropuesta){//Seguimo en la misma propuesta que la anterior if($unaPropuesta->devuelveGrupo() != $ultimoGrupo){ $contenidoGrupos .= "{$unaPropuesta->devuelveGrupo()} <br>"; $ultimoGrupo = $unaPropuesta->devuelveGrupo(); } if($unaPropuesta->devuelveProfesor() != $ultimoProfesor){ $contenidoProfesores .= "{$unaPropuesta->devuelveProfesor()} <br>"; $ultimoProfesor = $unaPropuesta->devuelveProfesor(); } }else{//Se ha producido un cambio de propuesta if($ultimaPropuesta > 0){//No se trata de la primera iteracion $contenido = $contenido . $contenidoAntes . $contenidoGrupos . "</td>" . $contenidoProfesores . "</td>" . $contenidoDespues; $contenidoAntes = ""; $contenidoGrupos = ""; $contenidoProfesores = ""; $contenidoDespues = ""; } $ultimaPropuesta = $unaPropuesta->devuelveCod_propuesta(); $ultimoGrupo = $unaPropuesta->devuelveGrupo(); $ultimoProfesor = $unaPropuesta->devuelveProfesor(); $contenidoAntes = " <tr> <td>{$unaPropuesta->devuelveFecha()}</td> <td>{$unaPropuesta->devuelveDestino()}</td> <td>{$unaPropuesta->devuelveReserva()}</td> <td>{$unaPropuesta->devuelveTransporte()}</td> <td>{$unaPropuesta->devuelveEntrada()}</td> "; $contenidoGrupos = "<td>{$unaPropuesta->devuelveGrupo()} <br>"; $contenidoProfesores = "<td>{$unaPropuesta->devuelveProfesor()} <br>"; $contenidoDespues = "<td>{$unaPropuesta->devuelveFecha_creacion()}</td> <td>{$unaPropuesta->devuelveCreado_por()}</td> <td>{$unaPropuesta->devuelveFecha_modificacion()}</td> <td>{$unaPropuesta->devuelveModificado_por()}</td> <td><a href=\"javascript:confirmaBaja('{$unaPropuesta->devuelveCod_propuesta()}')\"> <img src='{$img}lapiz.jpg' width='25' height='25' /></a></td> <td><a href=\"javascript:confirmaBaja('{$unaPropuesta->devuelveCod_propuesta()}')\"> <img src='{$img}aspa-roja.gif' width='25' height='25' /></a></td> </tr>"; } } if($ultimaPropuesta > 0){//Se ha recibido alguna propuesta $contenido = $contenido . $contenidoAntes . $contenidoGrupos . "</td>" . $contenidoProfesores . "</td>" . $contenidoDespues; } $contenido .= " </table> <script> function confirmaBaja(propuesta) { respuesta = confirm('¿Está seguro de querer eliminar la propuesta?'); if (respuesta) document.location.href = '{$ruta}propuesta/baja_propuesta?propuesta=' + propuesta; else alert('No se eliminará la propuesta'); } </script> <br /> "; return $contenido; } } ?>