Ecco l'epico parto di criric
il file che contiene il form vero e proprio:
e il file di supporto in php "sezioni"
p.s. Ho provato a fare la modifica che dicevi, ma temo che sia lesiva per i tecnolesi che non capiranno se hanno selezionato il numero giusto...meglio una casella singola...
Davvero non so come ringraziarvi, va bene cercare aiuto su forum, ma voi (tu criric) mi avete riscritto tutto il codice di sana pianta!
Non mancherà una citazione di ringraziamento sulla pagina quando sarà on line. Anche se non ci fate nulla...Anzi, probabilemente vi troverete invasi da incapaci come me che vi tortureranno!
Cmq, grazie
Stefania
il file che contiene il form vero e proprio:
PHP:
<?php
require_once "sezioni.php";
$messaggio = " ";
if (isset($_POST['prenota']) && $_POST['prenota']) {
$campi_vuoti = true;
foreach ($_POST as $key => $value) {
$_POST[$key] = protect($value);
if (empty($value)) {
$campi_vuoti = false;
$messaggio = ">>>>>>> Tutti i campi sono obbligatori <<<<<<<";
}
if ($key == "persone") {
// verifichiamo che persone sia un numero
if (is_numeric($_POST[$key])) {
// ricontrolliamo la disponibilita
$prenotati = conta($_POST['date'], $_POST['orario']);
if (($_POST[$key] + $prenotati) > 50) {
$campi_vuoti = false;
// ripuliamo la select dell'orario
unset($_POST['orario']);
$messaggio = ">>>>>>> I posti richiesti non sono più disponibili <<<<<<<";
}
} else {
$campi_vuoti = false;
$messaggio = ">>>>>>> Il campo persone deve essere numerico <<<<<<<";
}
}
// se troviamo un errore usciamo dal ciclo
if ($campi_vuoti == false) {
break;
}
}
if ($campi_vuoti) {
$connessione = mysql_connect("nome-server", "nome-utente", "password-utente", "nome-database");
$db = mysql_select_db("nome-database");
$query = "INSERT INTO utenti SET nome = '" . $_POST['nome'] . "',
cognome = '" . $_POST['cognome'] . "',
mail = '" . $_POST['mail'] . "',
telefono = '" . $_POST['telefono'] . "',
persone = " . $_POST['persone'] . ",
data = '" . $_POST['date'] . "',
orario = '" . $_POST['orario'] . "'";
$risultato = mysql_query($query);
mysql_close();
if ($risultato) {
unset($_POST);
$messaggio = ">>>>>> Prenotazione accettata <<<<<<< <br/><br/><a href='/home.html'>Torna alla home</a>";
} else {
unset($_POST);
$messaggio = ">>>>>>> Errore contatta la direzione <<<<<<< <br/> <a href='/home.html'>Torna alla home</a>";
}
}
}
echo "<p class='Sottotitolo' align='center'>$messaggio</p>";
?>
<table width="357" align="center">
<form method="post" action="">
<tr>
<td colspan="2">
<span class="Sottotitolo"><br/>Scegli la data : </span>
<select name="date" onchange="this.form.submit()">
<!-- qui le date disponibili -->
<option value=""></option>
<option value="2012-04-08"
<?php
if (isset($_POST['date']) && $_POST['date'] == "2012-04-08") {
echo " selected='selected'";
}
?>
>08 Aprile 2012</option>
<option value="2012-04-15"
<?php
if (isset($_POST['date']) && $_POST['date'] == "2012-04-15") {
echo " selected='selected'";
}
?>
>15 Aprile 2012</option>
</select> </td>
</tr>
<tr>
<td colspan="2" class="Testo_bianco">
<span class="Sottotitolo">Scegli l'orario : </span>
<select name="orario" onchange="this.form.submit()">
<?php
// qui metterai gli orari disponibili
$array_orari = array("14:00", "14:30", "15:00", "15:30", "16:00","16:30","17:00","17:30","18:00","18:30", "19:00");
if (isset($_POST['date'])) {
$data = $_POST['date'];
} else {
$data = "2012-04-08";
}
echo "<option value=''></option>";
foreach ($array_orari as $value) {
if (conta($data, $value) < 50) {
echo "<option value='$value'";
if (isset($_POST['orario']) && $_POST['orario'] == $value) {
echo " selected='selected'";
}
echo ">$value</option>";
}
}
?>
</select>
<span>
<?php
if (isset($_POST['orario']) && !empty($_POST['orario'])) {
$limite = (50 - conta($data, $_POST['orario']));
echo " " . (50 - conta($data, $_POST['orario'])) . " posti liberi";
}
?>
</span> </td>
</tr>
<tr>
<td colspan="2" class="Testo_bianco"><div align="center">
<p><span class="Sottotitolo"><br/>
Riempi i seguenti campi per prenotare :</span></p>
<p><span class="Sottotitolo"> <br/>
</span>
</p>
</div></td>
</tr>
<tr>
<td class="Sottotitolo">Nome:</td>
<td><input type="text" name="nome"
<?php
if (isset($_POST['nome'])) {
echo " value='" . $_POST['nome'] . "'";
}
?>/></td>
</tr>
<tr>
<td class="Sottotitolo">Cognome:</td>
<td><input type="text" name="nome"
<?php
if (isset($_POST['cognome'])) {
echo " value='" . $_POST['cognome'] . "'";
}
?>/></td>
</tr>
<tr>
<td class="Sottotitolo">Numero di telefono:</td>
<td><input type="text" name="telefono"
<?php
if (isset($_POST['telefono'])) {
echo " value='" . $_POST['telefono'] . "'";
}
?>/></td>
</tr>
<tr>
<td class="Sottotitolo">Indirizzo email:</td>
<td><input type="text" name="mail"
<?php
if (isset($_POST['mail'])) {
echo " value='" . $_POST['mail'] . "'";
}
?>/></td>
</tr>
<tr>
<td class="Sottotitolo">Numero di persone:</td>
<td class="Sottotitolo"><select name="persone">
<?php
if (isset($_POST['orario']) && !empty($_POST['orario'])) {
for ($i = 1; $i <= $limite; $i++) {
echo "<option value='$i'>$i</option>";
}
}
?>
</select></td>
</tr>
<td colspan="2" align="center"><input type="submit" name="prenota" value="Prenota"/></td>
</tr>
</form>
</table>
e il file di supporto in php "sezioni"
PHP:
<?php
function conta($data, $orario) {
$connessione = mysql_connect("nome-server", "nome-utente", "password-utente", "nome-database");
$db = mysql_select_db("nome-database");
$query = "SELECT sum(persone) as somma
FROM utenti WHERE data = '$data' && orario = '$orario' GROUP BY orario";
$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_array($result);
mysql_close();
return $row['somma'];
}
function protect($string) {
$string = strip_tags($string);
$string = htmlentities($string);
if (function_exists('get_magic_quotes_gpc') && !get_magic_quotes_gpc()) {
$string = addslashes($string);
}
return $string;
}
?>
p.s. Ho provato a fare la modifica che dicevi, ma temo che sia lesiva per i tecnolesi che non capiranno se hanno selezionato il numero giusto...meglio una casella singola...
Davvero non so come ringraziarvi, va bene cercare aiuto su forum, ma voi (tu criric) mi avete riscritto tutto il codice di sana pianta!
Non mancherà una citazione di ringraziamento sulla pagina quando sarà on line. Anche se non ci fate nulla...Anzi, probabilemente vi troverete invasi da incapaci come me che vi tortureranno!
Cmq, grazie
Stefania