Vale, creo que ahora lo veo un poco mejor, y tu problema es la consulta SQL, que no devuelve lo que tú crees que devuelve. Según tú, la tabla horarios tiene estos campos:
- tabla_horarios: id_horario, horario, id_pista
Luego tendrás un registro para cada horario y cada pista. Si cada pista tiene 4 horas posibles y tienes tres pistas, tendrás 12 horarios en la tabla de horarios, por ejemplo.
Lo que tú quieres hacer es imprimir los mismos horarios para varios días, pero date cuenta que en la base de datos sólo los tienes puestos una vez. Ahí está el problema!!! Tu código hace la consulta fuera de la función y se la pasa a la función. La función ejecuta todos los fetchs para imprimir el primer día. Pero luego la vuelves a llamar con la misma consulta (es decir, con el mismo resultset), pero el fetch ya no va a devolver más resultados, porque ya ha llegado al final. Entiendes?
Solución: muy sencilla, mete la consulta dentro de la función y quítala del parámetro:
Código PHP:
Ver originalfunction horarios($dias) {
// ordenamos la aparicion de los horarios de las pistas en las celdas con id_pista
if ($valores['id_pista'] == 1) {
echo '<tr>';
/* verificamos que si es el primer registro mostramos la celda con el numero del dia y un rowspan para ocupar todas las celdas de horarios de un dia*/
if ($valores['id_horario'] == 1) {
echo '<td rowspan=11>Dia '.$dias.'</td>';
}
echo '<td>'.$valores['horario'].'</td>';
}
if ($valores['id_pista'] == 2) {
echo '<td>'.$valores['horario'].'</td>';
}
if ($valores['id_pista'] == 3) {
echo '<td>'.$valores['horario'].'</td></tr>';
}
}
}
Luego la llamas con:
Código PHP:
Ver original$dia=27;
while ($dia < $ultimodia) {
horarios($dia);
$dia++;
}
Creo que con esto ya está todo, ya que ahora cada vez que ejecutes la función se volverá a hacer la consulta y tendrás el $result listo para recorrer todos los horarios.
Un saludo.