<?
##############################################################
########## Esame Web Programming del 10/09/2004 ############
########## by Dalubar 09/12/04 ############
##############################################################
error_reporting(0);
$file = file('WP_10_09_04.txt');
#costruisce matrice a 3 dimensioni per organizzare i dati
foreach ($file as $row) {
$field = explode('#', $row);
$dati[trim($field[4])][$field[2]][$field[1]] = $field[3] . '#' . $field[0];
}
//array stringhe dei giorni
$day = array("Lun", "Mar", "Mer", "Gio", "Ven");
?>
<html>
<head>
<style>
select {width:160px;}
body, td {font-size:9pt; font-family:Verdana}
</style>
</head>
<body>
<form action="EsameWP_10_09_04(B).php" method=POST>
<table width=600 cellpadding=4 border>
<tr>
<td colspan=6 align=center>Aula
<select name=aula>
<? foreach($dati as $i => $dummy) {
$selected = ($_POST["aula"] == $i)? 'selected' : '';
echo "<option $selected>$i";
}
?>
</select>
<input type=submit value=ricerca>
</td>
</tr>
<?
if ($aula = $_POST["aula"]) {
//1°riga: mostra aula e giorni della settimana
echo "<tr align=center><td><b>$aula</b></td>";
foreach ($day as $i) echo "<td><b>$i</b></td>"; echo "</tr>";
//altre righe: mostra orario e materie dei vari giorni
ksort($dati[$aula]);
# righe della tabella: gli orari dalle 9 alle 19
for ($i = 9; $i <20; $i++)
if ($i != 13 && $i != 14) {
echo "\n<tr align=center height=40>\n<td>$i - " . ($i+1) . "</td>";
#cerca in $dati[$aula] se c'è l'orario specificato
$trovaorario = false;
foreach ($dati[$aula] as $orari => $dayofweek) {
if ((integer)$orari == (integer)$i) {
#una materia inizia in questo orario: scandaglia i giorni da Lun a Ven
$trovaorario = true;
for ($g = 0; $g < 5; $g++) {
#cerca in quali giorni c'è corrispondenza
$sw = false;
foreach ($dayofweek as $giorno => $materia) {
if ($giorno == $day[$g]) {
#trovato il giorno in cui c'è $materia: calcola quanto dura in ore
$endora = (integer)substr($materia, 0, strpos($materia, '#'));
$materia = substr($materia, strpos($materia, '#') + 1);
$rowspan = $endora - $orari;
//echo "<li>trovato giorno $giorno di $i ($materia) con rowspan=$rowspan";
echo "\n<td width='16%' bgcolor=#eeeeee rowspan=$rowspan>$materia</td>";
#marca una griglia, che rappresenta la tabella, per gestire i rowspan
for ($k=0; $k<$rowspan; $k++) $grid[$i + $k][$g] = true;
$sw = true;
}
}
if (!$sw)
if (!isset($grid[$i][$g])) echo "\n<td width='16%'>-</td>";
}
}
}
#controllo: se non trova materie per l'orario corrente riempie di celle vuote
#(saltando gli eventuali rowspan)
if (!$trovaorario)
for ($g = 0; $g < 5; $g++)
if (!isset($grid[$i][$g])) echo "\n<td width='16%'>-</td>";
#chide la riga corrente
echo "\n</tr>";
}
}
?>
</table>
</form>
</body>
</html>