No muestras la estructura ni el
orden de los datos de la bbdd (infoProf???).
Tienes mezclado en el mismo script la construcción de la cabecera de la tabla con el body... no digo que no se pueda llegar a hacer pero es mas facil si lo separas.... la cabecera titulo (profesionales) fechas y dias de la semana es independiente de los datos de los profesionales y relativamente facil de construir. Divide y venceras.
En mi script doy por supuesto que la cabecera se ha creado, por eso solo construye el tbody. Corrijo y te lo comento a ver si con las adataciones que haga falta te sirve:
Código PHP:
Ver original$tablaBody="<tbody>"; // Variable donde construyo el string que al final imprimire
$arrayFechas // <--- array con la fechas
$arrayTareas // <--- datos de la bbdd ordenados por "order by profesional, fecha"
// como el ejemplo que he puesto con dos profesionales
// cada elemento es una tarea (profesional/fecha/tarea)
$profesional=""; //Variable de control
$ultFecha=0; //Variable de control
for($tarea=0;$tarea<count($arrayTareas);$tareas++){ // Bucle que recorre los datos de la bbdd if($profesional!=$arrayTareas[$tarea]["profesional"]){ //Cada vez que el profesional no es igual a la variable de control
//se inicia una row nueva
if($tarea!=0){//Si no estamos en la primera row
for($fecha=$ultFecha;$fecha<count($arrayFechas);$fecha++){ $tablaBody.="<td> </td>"; // Completo las columnas que falten entre ultima fecha y fecha maxima
//del profesional anterior
}
$tablaBody.="</tr><tr>"; //Cierro antes la row anterior siempre que no estemos en la primera
}else{
$tablaBody.="<tr>";
}
$tablaBody.="<td>".$arrayTareas[$tarea]["profesional"]."</td>"; //En la primera celda de la row imprimimos
//el nombre del profesional
$profesional=$arrayTareas[$tarea]["profesional"]; // Igualo la variable de control
//al profesional actual
$ultFecha=0; //Pongo a cero la variable de control de fechas
}
//Hasta aqui tenemos el inció de la row (y el cierre de la anterior si hace falta)
//y la primera columna con el nombre del profesional
//Apartir de aqui recorro el array de fechas comparando con la fecha de la tarea
for($fecha=$ultFecha;$fecha<count($arrayFechas);$fecha++){ //Bucle se inicia en ultFecha if($profesional==$arrayTareas[$tarea]["profesional"]){
if($arrayTareas[$tarea]["fecha"]==$arrayFachas[$fecha]["fecha"]){
$tablaBody.="<td>".$arrayTareas[$tarea]["tarea"]."</td>"; //Coinciden profesional
//y fecha imprimo la tarea
}else{
$tablaBody.="<td> </td>"; // No coincide la fecha pero si el profesional
//imprimo una celda vacia
}
$ultFecha++; //Actualizo ultima fecha
}
}
}
$tablaBody.="</tr></tbody>";///Cierro la ultima row y el tbody.
echo $tablaBody; /// Imprimo el tbody.
No es igual al del post anterior.