problema con form

  • Creatore Discussione Creatore Discussione _Ania
  • Data di inizio Data di inizio
Ecco l'epico parto di criric ;)

il file che contiene il form vero e proprio:

PHP:
<?php 
require_once "sezioni.php"; 
$messaggio = "&nbsp;"; 
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&ugrave; 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> &nbsp;
                <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>&nbsp; 
                <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
 

Discussioni simili