<?

  ##############################################################
  ##########  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>