Voy avanzando a duras penas... He conseguido colocar los días en las cabeceras y el nombre los consultores. Me falta recorrer los días por cada usuario y que me marque aquellos días en los que no haya accedido al sistema... alguien ve el error o se le ocurre cómo?
Código PHP:
<table border="1">
<tr><th>CONSULTOR </th> <?php
$usuario = new usuario();
$cons = $usuario->ObtenerConsultores();
foreach($cons as $consultores) {
$consultor_no_report = $consultores['Ident_consultor'];
$query2="Select calendario_dias.dia AS dia, consultores.consultor AS consultor from calendario_dias, consultores WHERE calendario_dias.mes = '$mes' AND dia NOT IN (SELECT DISTINCT trabajos.dia FROM trabajos INNER JOIN consultores ON trabajos.consultores_Ident_consultor = consultores.Ident_consultor WHERE mes = '$mes' AND ano = '$anos' AND (consultores.Ident_consultor) = '$consultor_no_report')AND (consultores.Ident_consultor) = '$consultor_no_report' AND (consultores.esconsultor) = '1' AND (consultores.reporte_habitual) = '1' AND ((consultores.f_fin)='' OR (consultores.f_fin) = '0000-00-00');";
/* $query="SELECT consultores.consultor AS consultor, mes.mes AS mes, round(SUM(trabajos.preciototalK25),2) AS preciototal FROM trabajos INNER JOIN consultores ON trabajos.consultores_Ident_consultor = consultores.Ident_consultor INNER JOIN mes ON trabajos.mes = mes.id_mes WHERE ((consultores.esconsultor) = '1' AND ((consultores.f_fin IS NULL) OR (consultores.f_fin) = '0000-00-00')) GROUP BY consultor, mes ORDER BY consultores.consultor, trabajos.ano, trabajos.mes ASC;";
*/
$consulta = new Consulta($query2);
$array=array();
while($row_tabla = $consulta->obtener_fila()) {//montar un array con el consultor como key
if(!array_key_exists($row_tabla['consultor'], $array)){
$array3[$row_tabla['consultor']]=array();
}
if(!array_key_exists($row_tabla['dia'], $array)){ //dentro de cada array otro array con la mes como key
$array2[$row_tabla['consultor']][$row_tabla['dia']]=0;
}
/* $array[$row_tabla['consultor']][$row_tabla['dia']]+=$row_tabla['preciototal'];//suma tiempos si hay mas de preciototal por mes */
}
?>
<?php
$cuenta_tareas=array();//array para guardar dias
$salida=''; //salida
foreach($array2 as $k=>$v){//crear cabecera de dias
foreach($v as $clave=>$valor){
if(!in_array($clave,$cuenta_tareas)){//si no ha salido
$cuenta_tareas[]=$clave;//la guardamos en el array y la mostramos
$salida.="<th>".$clave."</th>";
}
}
}
$salida.='</tr><tr>';//cerrar cabecera
$cuenta_filas=0;//contador de filas
foreach($array3 as $k=>$v){
$salida.="<tr>";
$salida.= "<td>". $k."</td>";//muestra el consultor
for($i=0;$i<count($cuenta_tareas);$i++){//recorre el array de cabeceras
if(array_key_exists($cuenta_tareas[$i],$v)){//si existe en la posicion actual mostramos el resultado
$salida.="<td>".$v[$cuenta_tareas[$i]]."</td>";
}else{//si no existe ponemos celda vacía
$salida.="<td>-</td>";
}
}
$salida.="</tr>";
if(count($array)>($cuenta_filas+1)){//cerrar filas si no es la última
$salida.='</tr><tr>';
}
$cuenta_filas++;
}
}
echo $salida;
?>
</tr>
<tr>
<td></td>
</form>
</table>
</div>
Gracias y un saludo