
Ahora si Problemas con listado (producto cartesiano)
Publicado por anonymous (2 intervenciones) el 22/05/2015 09:00:32
Hola buenas a todos, espero que no se asusten al ver tanto codigo jeje.
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.
La consulta que me devuelve todas las propuestas, es la siguiente:
Como se ve mi listado:

Codigo PHP donde se pintan los grupos y profesores en la tabla:
Resto Codigo PHP de la vista:
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.
La consulta que me devuelve todas las propuestas, es la siguiente:
1
2
3
4
5
6
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
Como se ve mi listado:

Codigo PHP donde se pintan los grupos y profesores en la tabla:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
$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;
}
Resto Codigo PHP de la vista:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?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;
//Fragmento de codigo de arriba va aqui
$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;
}
}
?>
Valora esta pregunta


0