ok, si miras un poco el script, verás un par de cosas. Te hago un ejemplo más fácil para que veas como se hace la tabla:
Código PHP:
Ver original<?php
$dias = array('L', 'M', 'X', 'J', 'V'); $horas = array(9,10,11,12,13,14,15,16);
$table = "<table border='1'>";
$table .= "<tr bgcolor='#CCCCCC'>";
$table .= "<td></td>"; //Extremo sup izq
foreach($dias as $dia)
{
$table .= "<td>$dia</td>";
}
$table .= "</tr>"; //Fin fila inicial dias
foreach($horas as $hora)
{//En estas filas vacias van las citas
$table .= " <tr>
<td bgcolor='#CCCCCC'>$hora</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>";
}
$table .= "</tr>"; //Fin fila inicial dias
echo $table;
?>
Hasta aquí, es lo mismo que tienes tú, faltan las citas.
Entonces:
1. Las citas van en el sitio indicado pero te falta una relación o dependencia entre dia / hora / cita. Cómo sabes qué cita va en cada dia / hora??: Respuesta: depende de lo que traiga la consulta, en el post no lo pones, pero para que funcione, cada registro de cita debe tener una referencia de dia, hora y text, como mínimo. Sabiendo esto entonces puedes poner cada cita en su lugar.
2. La
no parece muy apropiada. Si quieres mostrar una semana, coloca un WHERE... para consultar sólo la semana que te interesa. Según tu propio ejemplo, el número de la semana que el usuario quiere ver viene en $_GET['wk'], por tanto realiza la consulta como:
Código SQL:
Ver originalSELECT * FROM citas WHERE semana = '".$_GET['wk']."'
o lo que corresponda a tu esquema de BD.
3. Modifica la consulta para que cada registro de cita tenga la información de día y hora. Para esto deberás trabajar con los dias como enteros y no como caracteres. Ejemplo completo:
Código PHP:
Ver original<?php
$dias = array(0 => 'L', 1 => 'M', 2 => 'X', 3 => 'J', 4 => 'V'); $horas = array(9,10,11,12,13,14,15,16); //Supuesto resultado de la base de datos
//Cita = array(dia, hora, texto);
0 => array(0 => 0, 1 => 9, 2 => 'Estudiar PHP'), 1 => array(0 => 1, 1 => 10, 2 => 'Compras'), 2 => array(0 => 1, 1 => 11, 2 => 'Reunion'), 3 => array(0 => 2, 1 => 9, 2 => 'Dormir'), 4 => array(0 => 3, 1 => 13, 2 => 'Estudiar MySQL'), 5 => array(0 => 3, 1 => 14, 2 => 'Cenar'), 6 => array(0 => 4, 1 => 9, 2 => 'Nada'), );
$table = "<table border='1'>";
$table .= "<tr bgcolor='#CCCCCC'>";
$table .= "<td></td>"; //Extremo sup izq
foreach($dias as $dia)
{
$table .= "<td>$dia</td>";
}
$table .= "</tr>"; //Fin fila inicial dias
foreach($horas as $hora)
{//En estas filas vacias van las citas
$table .= " <tr>
<td bgcolor='#CCCCCC'>$hora</td>";
//Una celda por dia
for($i = 0; $i<count($dias); $i++) {
$table .="<td>";
//POr cada cita, comprobar que hay coincidencia
foreach($citas as $index => $cita){
if($cita[0] == $i && $cita[1] == $hora)
{//Hay coincidencia, imprimir el texto
$table .= $cita[2];
}
else $table .= " ";
}
$table .= "</td>";
}
}//Horas
$table .= "</tr>"; //Fin fila inicial dias
$table .= "</table>";
echo $table;
?>
Espero que sirva, saludos