Codice PHP:
<?php
include "funzioni.php";
$html = <<<EOF
<form name="form" method="post" action ="pulsanteconferma.php">
<table border = "1" cellpadding="10" width = "1200" height = "1500" align = "center">
<br>
<tr>
<td>
</td>
<td align = "center">
09.00-10.00
</td>
<td align = "center">
10.00-11.00
</td>
<td align = "center">
11.00-12.00
</td>
<td align = "center">
12.00-13.00
</td>
<td align = "center">
13.00-14.00
</td>
<td align = "center">
14.00-15.00
</td>
<td align = "center">
15.00-16.00
</td>
<td align = "center">
16.00-17.00
</td>
</tr>
EOF;
for ($i = 1; $i < 32; $i++) {
$html .= <<<EOF
<tr>
<td align = "center"><span>$i dicembre</span></td>
EOF;
for ($j = 0; $j < 8; $j++) {
$check = "";
$db_res = leggiDB($i, $j);
if($db_res == 1){
$check = "<input type=\"hidden\" name=\"orario{$i}[$j]\" value=\"1\" />";
$check .= "<input type=\"checkbox\" disabled=\"disabled\" checked=\"checked\" />";
}else{
$check .= "<input type=\"checkbox\" name=\"orario{$i}[$j]\" value=\"1\" />";
}
$html .= <<<EOF
<td align = "center">
$check
<span></span>
</td>
EOF;
}
$html .= "</tr>";
}
$html .= <<<EOF
</table>
<br /><br />
<input type = "submit" name = "registra" value = "Registra" />
<br /><br />
</form>
EOF;
print $html;
?>
file pulsanteconferma.php
Codice PHP:
<?php
session_start();
include "funzioni.php";
$handle = fopen ("orario.txt", "r") or die("Non sono capace di leggere il file");
$testo = fgets($handle);
$parti = explode (";", $testo);
$mese = "$parti[0]";
$html = <<<EOF
<html>
<head>
<title> Mese di $mese</title>
</head>
<body>
EOF;
$id = 0; // inserire id utente
$numore = 0; // variabile per il conteggio delle ore selezionate totali
$stringaOrari = array("09.00-10.00", "10.00-11.00","11.00-12.00","12.00-13.00","13.00-14.00","14.00-15.00","15.00-16.00","16.00-17.00");
$_SESSION["prenotazioni"] = "";
for($numday=1; $numday<32; $numday++){ //per ogni giorno
if(isset($_POST["orario$numday"])){ //controlla se è stato selezionato uno o più checkbox
$orario = $_POST["orario$numday"]; //salva il giorno selezionato nella variabile $orario
$numerofasceselezionate = count($orario); //Utilizzo count per contare il numero di valori contenuti nell'array
$html .= "<table border = \"1\">"; //stampo la tabella
foreach($orario as $fascia => $bool){
$gia_prenotato = leggiDB($numday, $fascia);
if($gia_prenotato == $bool){
// il valore era già presente nel DB, skippiamolo
$numerofasceselezionate = $numerofasceselezionate - 1;
}else{
scriviDB ($numday, $fascia, $bool, $id);
$_SESSION["prenotazioni"] .= "" . $numday . ":" . $fascia . ";";
$html .= "<tr><td>fascia oraria</td>";
$html .= "<td>{$stringaOrari[$fascia]}</td>";
$html .= "</tr>";
$html .= "<tr><td> per il giorno </td>" . "<td>$numday dicembre " . "</td></tr><br>";
$numore++;
}
}
$html .= "<tr><td> numero ore prenotate al giorno </td>";
$html .= "<td>$numerofasceselezionate</td>"; //stampa le ore giornaliere
}
}
$html .= "</tr></table>"; //stampa la fine della tabella
if ($numore == 0){ //se non è stata selezionata alcuna fascia, allora l'output sarà Non hai selezionato alcuna fascia oraria
$html .= "Non hai selezionato alcuna fascia oraria <br>";
}else{
$html .= "<br><table border =\"1\"><tr><td> numero delle ore prenotate </td>";
$html .= "<td>$numore </td>"; //stampa le ore totali, la somma di quelle di tutti i giorni ($numore)
}
$html .= "</tr></table><br>";
$html .= "<form name=\"form\" method=\"post\" action=\"sceglioradicembre.php\"><input type=\"submit\" name=\"annulla\" value=\"Annulla Prenotazione\" /></form>";
$html .= "<form name=\"form\" method=\"post\" action=\"registrazione.php\"><input type=\"submit\" name=\"continua\" value=\"Continua\" /></form>";
print $html;
?>
da aggiungere al file funzioni.php
Codice PHP:
<?php
/*
nota by brodik
struttura file orario
mese;giorno;orario;prenotazione;id
[string];[int];[bool];[int]
dicembre;1;0;0;1
orario:
0 => 09.00-10.00
1 => 10.00-11.00
2 => 11.00-12.00
3 => 12.00-13.00
4 => 13.00-14.00
5 => 14.00-15.00
6 => 15.00-16.00
7 => 16.00-17.00
*/
function leggiDB($giorno, $ora, $internal = false){
// Apriamo il file con il DB
$file = fopen("orario.txt", "r") or die("Non sono capace di leggere il file");
if($internal == true){
$value = array();
while (!feof($file)){
$value[] = fgets($file);
}
}else{
while (!feof($file)){
$riga = fgets($file);
$parti = explode(";", $riga);
// parti[0] = mese, parti[1] = giorno, parti[2] = orario, parti[3] = prenotazione, parti[4] = id
if (intval($parti[1]) == $giorno && intval($parti[2]) == $ora){
// Siamo nel giorno e nell'ora giusta, è prenotato?
$value = $parti[3];
}
}
}
fclose($file);
return $value;
}
function scriviDB($giorno, $ora, $prenotato, $id=0){
// Ogni volta che questa funzione viene chiamata
// sovrascrive l'intero file
// mese;giorno;orario;prenotazione;id
$db_esistente = leggiDB($giorno, $ora, true);
$file = fopen("orario.txt", "w+") or die("Non sono capace di leggere il file");
$this_value = "dicembre;".$giorno.";".$ora.";";
$new_value = "dicembre;".$giorno.";".$ora.";".$prenotato.";".$id;
foreach($db_esistente as $riga => $valore){
if (strpos($valore, $this_value) !== false) {
$valore = $new_value.PHP_EOL;
}else{
$valore = $valore;
}
fwrite($file, $valore);
}
fclose($file);
}
?>
file base orari.txt
codice:
dicembre;1;0;0;0
dicembre;1;1;0;0
dicembre;1;2;0;0
dicembre;1;3;0;0
dicembre;1;4;0;0
dicembre;1;5;0;0
dicembre;1;6;0;0
dicembre;1;7;0;0
dicembre;2;0;0;0
dicembre;2;1;0;0
dicembre;2;2;0;0
dicembre;2;3;0;0
dicembre;2;4;0;0
dicembre;2;5;0;0
dicembre;2;6;0;0
dicembre;2;7;0;0
dicembre;3;0;0;0
dicembre;3;1;0;0
dicembre;3;2;0;0
dicembre;3;3;0;0
dicembre;3;4;0;0
dicembre;3;5;0;0
dicembre;3;6;0;0
dicembre;3;7;0;0
dicembre;4;0;0;0
dicembre;4;1;0;0
dicembre;4;2;0;0
dicembre;4;3;0;0
dicembre;4;4;0;0
dicembre;4;5;0;0
dicembre;4;6;0;0
dicembre;4;7;0;0
dicembre;5;0;0;0
dicembre;5;1;0;0
dicembre;5;2;0;0
dicembre;5;3;0;0
dicembre;5;4;0;0
dicembre;5;5;0;0
dicembre;5;6;0;0
dicembre;5;7;0;0
dicembre;6;0;0;0
dicembre;6;1;0;0
dicembre;6;2;0;0
dicembre;6;3;0;0
dicembre;6;4;0;0
dicembre;6;5;0;0
dicembre;6;6;0;0
dicembre;6;7;0;0
dicembre;7;0;0;0
dicembre;7;1;0;0
dicembre;7;2;0;0
dicembre;7;3;0;0
dicembre;7;4;0;0
dicembre;7;5;0;0
dicembre;7;6;0;0
dicembre;7;7;0;0
dicembre;8;0;0;0
dicembre;8;1;0;0
dicembre;8;2;0;0
dicembre;8;3;0;0
dicembre;8;4;0;0
dicembre;8;5;0;0
dicembre;8;6;0;0
dicembre;8;7;0;0
dicembre;9;0;0;0
dicembre;9;1;0;0
dicembre;9;2;0;0
dicembre;9;3;0;0
dicembre;9;4;0;0
dicembre;9;5;0;0
dicembre;9;6;0;0
dicembre;9;7;0;0
dicembre;10;0;0;0
dicembre;10;1;0;0
dicembre;10;2;0;0
dicembre;10;3;0;0
dicembre;10;4;0;0
dicembre;10;5;0;0
dicembre;10;6;0;0
dicembre;10;7;0;0
dicembre;11;0;0;0
dicembre;11;1;0;0
dicembre;11;2;0;0
dicembre;11;3;0;0
dicembre;11;4;0;0
dicembre;11;5;0;0
dicembre;11;6;0;0
dicembre;11;7;0;0
dicembre;12;0;0;0
dicembre;12;1;0;0
dicembre;12;2;0;0
dicembre;12;3;0;0
dicembre;12;4;0;0
dicembre;12;5;0;0
dicembre;12;6;0;0
dicembre;12;7;0;0
dicembre;13;0;0;0
dicembre;13;1;0;0
dicembre;13;2;0;0
dicembre;13;3;0;0
dicembre;13;4;0;0
dicembre;13;5;0;0
dicembre;13;6;0;0
dicembre;13;7;0;0
dicembre;14;0;0;0
dicembre;14;1;0;0
dicembre;14;2;0;0
dicembre;14;3;0;0
dicembre;14;4;0;0
dicembre;14;5;0;0
dicembre;14;6;0;0
dicembre;14;7;0;0
dicembre;15;0;0;0
dicembre;15;1;0;0
dicembre;15;2;0;0
dicembre;15;3;0;0
dicembre;15;4;0;0
dicembre;15;5;0;0
dicembre;15;6;0;0
dicembre;15;7;0;0
dicembre;16;0;0;0
dicembre;16;1;0;0
dicembre;16;2;0;0
dicembre;16;3;0;0
dicembre;16;4;0;0
dicembre;16;5;0;0
dicembre;16;6;0;0
dicembre;16;7;0;0
dicembre;17;0;0;0
dicembre;17;1;0;0
dicembre;17;2;0;0
dicembre;17;3;0;0
dicembre;17;4;0;0
dicembre;17;5;0;0
dicembre;17;6;0;0
dicembre;17;7;0;0
dicembre;18;0;0;0
dicembre;18;1;0;0
dicembre;18;2;0;0
dicembre;18;3;0;0
dicembre;18;4;0;0
dicembre;18;5;0;0
dicembre;18;6;0;0
dicembre;18;7;0;0
dicembre;19;0;0;0
dicembre;19;1;0;0
dicembre;19;2;0;0
dicembre;19;3;0;0
dicembre;19;4;0;0
dicembre;19;5;0;0
dicembre;19;6;0;0
dicembre;19;7;0;0
dicembre;20;0;0;0
dicembre;20;1;0;0
dicembre;20;2;0;0
dicembre;20;3;0;0
dicembre;20;4;0;0
dicembre;20;5;0;0
dicembre;20;6;0;0
dicembre;20;7;0;0
dicembre;21;0;0;0
dicembre;21;1;0;0
dicembre;21;2;0;0
dicembre;21;3;0;0
dicembre;21;4;0;0
dicembre;21;5;0;0
dicembre;21;6;0;0
dicembre;21;7;0;0
dicembre;22;0;0;0
dicembre;22;1;0;0
dicembre;22;2;0;0
dicembre;22;3;0;0
dicembre;22;4;0;0
dicembre;22;5;0;0
dicembre;22;6;0;0
dicembre;22;7;0;0
dicembre;23;0;0;0
dicembre;23;1;0;0
dicembre;23;2;0;0
dicembre;23;3;0;0
dicembre;23;4;0;0
dicembre;23;5;0;0
dicembre;23;6;0;0
dicembre;23;7;0;0
dicembre;24;0;0;0
dicembre;24;1;0;0
dicembre;24;2;0;0
dicembre;24;3;0;0
dicembre;24;4;0;0
dicembre;24;5;0;0
dicembre;24;6;0;0
dicembre;24;7;0;0
dicembre;25;0;0;0
dicembre;25;1;0;0
dicembre;25;2;0;0
dicembre;25;3;0;0
dicembre;25;4;0;0
dicembre;25;5;0;0
dicembre;25;6;0;0
dicembre;25;7;0;0
dicembre;26;0;0;0
dicembre;26;1;0;0
dicembre;26;2;0;0
dicembre;26;3;0;0
dicembre;26;4;0;0
dicembre;26;5;0;0
dicembre;26;6;0;0
dicembre;26;7;0;0
dicembre;27;0;0;0
dicembre;27;1;0;0
dicembre;27;2;0;0
dicembre;27;3;0;0
dicembre;27;4;0;0
dicembre;27;5;0;0
dicembre;27;6;0;0
dicembre;27;7;0;0
dicembre;28;0;0;0
dicembre;28;1;0;0
dicembre;28;2;0;0
dicembre;28;3;0;0
dicembre;28;4;0;0
dicembre;28;5;0;0
dicembre;28;6;0;0
dicembre;28;7;0;0
dicembre;29;0;0;0
dicembre;29;1;0;0
dicembre;29;2;0;0
dicembre;29;3;0;0
dicembre;29;4;0;0
dicembre;29;5;0;0
dicembre;29;6;0;0
dicembre;29;7;0;0
dicembre;30;0;0;0
dicembre;30;1;0;0
dicembre;30;2;0;0
dicembre;30;3;0;0
dicembre;30;4;0;0
dicembre;30;5;0;0
dicembre;30;6;0;0
dicembre;30;7;0;0
dicembre;31;0;0;0
dicembre;31;1;0;0
dicembre;31;2;0;0
dicembre;31;3;0;0
dicembre;31;4;0;0
dicembre;31;5;0;0
dicembre;31;6;0;0
dicembre;31;7;0;0