la opcion mas facil es algo asi:
1-. saca un array con solo las fechas (sin repetir)
para obtener sin repetir puedes decirle a la db "SELECT DISTINCT aqui_nombre_de_tu_columna FROM aqui_tu_tabla"
2-.imprime la fila de las fechas
3.- saca un array con solo los nombres (sin repetir)
4.- con un for recorre los nombres
5.- imprime el nombre
6.- dentro del for, pide las fechas asociadas a ese nombre ("where nombre")
7.- recorre cada resultado usando un array_search($resultado, $array_fechas) si es true entonces imprime una columna con x si no, una columna vacia...
8.- repite paso 7 hasta que tengas todas las columnas
9.- repite desde paso 4 hasta que hayas impreso todos los nombres
(no te escribo el código porque me da pereza XD pero con eso deberías poder resolver algo... )
creo que es el método mas simple sin caer en arrays asociativos, ni multidimensionales D: o en búsquedas super locas
si tienes alguna duda vuelve a preguntar
