Pagina 1 di 2 12 UltimaUltima
Risultati da 1 a 10 di 19

Discussione: campi obbligatori PHP

  1. #1
    Fabio90 è offline Utente del Forum
    Data Registrazione
    Feb 2012
    Messaggi
    206

    campi obbligatori PHP

    vorrei rendere i campi obbligatori ma non riesco in quanto anche se uno non completa tutti i campi viene inviata lo stesso la form e vorrei che questo non accadesse. Ecco il codice

    <?php


    if(!isset($_POST['sub'])) {
    echo '<form method="post" action="#"><br/>
    <h1>Dati personali</h1><br/>
    Il sottoscritto <input type="text" name="sottoscritto"><br/><br/>
    nato a <input type="text" name="dove"><br/><br/>
    il <input type="text" name="data"><br/><br/>
    Residente a <input type="text" name="residente"><br/><br/>
    CAP <input type="text" name="cap"><br/><br/>
    Prov <select>
    <option value="verona">VR</option>
    <option value="venezia">VE</option>
    <option value="padova">PD</option>
    <option value="belluno">BL</option>
    <option value="rovigo">RO</option>
    <option value="vicenza">VI</option>
    <option value="treviso">TV</option>
    </select>
    via <input type="text" name="via"><br/><br/>
    tel <input type="text" name="tel"><br/><br/>
    cell <input type="text" name="tel"><br/><br/>

    <input type="submit" value="Registrati" name="sub">
    </form>';
    }


    else {

    include 'config.php';
    include 'connect.php';

    $sottoscritto = $_POST['sottoscritto'];
    $dove = $_POST['dove'];
    $quando = $_POST['data'];
    $query = "INSERT INTO iscrizioni (sottoscritto, dove, data) VALUES ('{$sottoscritto}','{$dove}','{$quando}');";
    $result = mysql_query($query, $conn);

    if (trim($sottoscritto)=="") {
    print "Tutti i campi del form sono obbligatori...Torna indietro e inserisci il tuo nome!";
    } elseif (trim($quando)=="") {
    print "Tutti i campi del form sono obbligatori...Torna indietro e inserisci la data di nascita!";
    } elseif (trim($dove)=="") {
    print "Tutti i campi del form sono obbligatori...Torna indietro e inserisci dove sei nato!";
    }

    if(!$result) {
    echo 'errore';

    }

    }

    ?>
    grazie dell'aiuto
    Ultima modifica di Fabio90; 23-03-2012 alle 17:08

  2. #2
    L'avatar di borgo italia
    borgo italia è offline Super Moderatore
    Data Registrazione
    Feb 2008
    Località
    PR
    Messaggi
    11,242
    ciao
    prima racchiudi il codice negli appositi tag

  3. #3
    Fabio90 è offline Utente del Forum
    Data Registrazione
    Feb 2012
    Messaggi
    206
    è già negli appositi tag.. Almeno credo

  4. #4
    L'avatar di Komix
    Komix è offline Nuovo Iscritto
    Data Registrazione
    Mar 2012
    Messaggi
    8
    Per scrivere codice nel forum ci sono dei codici appositi che facilitano la visualizzazione
    inserisci tutto quel codice tra i tag [ PHP ] [ / PHP ] senza spazi.
    If you can think about it, you can code it :P

  5. #5
    L'avatar di borgo italia
    borgo italia è offline Super Moderatore
    Data Registrazione
    Feb 2008
    Località
    PR
    Messaggi
    11,242
    ciao
    prova in questo modo
    Codice PHP:
    <?php
    //..............
    }else {
        unset(
    $_POST['sub']);//elimini il post dal submit che comunque è pieno
        
    foreach($_POST as $chiave => $valore){
            if(
    trim($valore)==""){
                echo 
    "attenzione: tutti i campi sono obbligatori";
                
    //e ritorni alla pagina pulita dopo 3 secondi (content='3 )
                
    echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
            }
        
    //e qui tutto il resto
    }

    ?>
    p.s.
    hai usato il tag QUOTE non il PHP sulla stessa riga l'ultima iconcina (nell'ordine QUOTE HTML CODE PHP)

  6. #6
    Fabio90 è offline Utente del Forum
    Data Registrazione
    Feb 2012
    Messaggi
    206
    grazie mille lo script funziona infatti se i campi non sono compilati mi reinderizza però i dati vengono lo stessi scritti sul database.. perchè?

    Codice PHP:
    <?php
        
        
        
    if(!isset($_POST['sub'])) {
            echo 
    '<div id="form-iscrizione">
                    <form method="post" action="#"><br/>
            
            Il sottoscritto <input type="text" name="sottoscritto"><br/><br/>
            nato a <input type="text" name="dove"><br/><br/>
            il  <input type="text" name="data"><br/><br/>
            Residente in <input type="text" name="residente">
                Prov <select>
                      <option value="verona">VR</option>
                      <option value="venezia">VE</option>
                      <option value="padova">PD</option>
                     <option value="belluno">BL</option>
                    <option value="rovigo">RO</option>
                    <option value="vicenza">VI</option>
                    <option value="treviso">TV</option>
                 </select>  <br/><br/>
            via <input type="text" name="via"><br/><br/> 
            codice fiscale <input type="text" name="via"><br/><br/>
            
            in qualità rappresentante dell <br/><br/>  <input type="text" size="60" name="via"><br/><br/>
            con sede in <input type="text" size="35" name="via">
            Prov <select>
                      <option value="verona">VR</option>
                      <option value="venezia">VE</option>
                      <option value="padova">PD</option>
                     <option value="belluno">BL</option>
                    <option value="rovigo">RO</option>
                    <option value="vicenza">VI</option>
                    <option value="treviso">TV</option>
                 </select>  <br/><br/>
                 via <input type="text" size="45" name="via">
                 N. <input type="text" size="5" name="via"><br/><br/> 
                 P.IVA <input type="text" size="45" name="via"><br/><br/>
                
                <p>CHIEDE</p> <p>a codesto spettabile Consiglio di Amministrazione di essere ammesso a far parte del Consorzio Autoscuole Bus-Car
                con sede in Verona Via Selenia 12, in qualità di socio.</p> <br/>
                <p>Dichiara di aver preso visione dello Statuto della Società e si impegna ad osservarne il contenuto; si impegna altresì ad osservare
                le deliberazioni degli organi sociali</p><br/>
            
            <input type="submit" value="Registrati" name="sub">
            </form></div>' 
    ;
        }
            else {
        unset(
    $_POST['sub']);
        foreach(
    $_POST as $chiave => $valore){ 
             if(
    trim($valore)==""){ 
                 echo 
    "<div id='centrale'> attenzione: il campo '$chiave' è obbligatoro</div>"
                echo 
    "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>"
             }
        }
        include 
    'config.php';
        include 
    'connect.php';
        
        
    $sottoscritto $_POST['sottoscritto'];
        
    $dove $_POST['dove'];
        
    $quando $_POST['data'];
        
    $query "INSERT INTO iscrizioni (sottoscritto, dove, data) VALUES ('{$sottoscritto}','{$dove}','{$quando}');";
        
    $result mysql_query($query$conn);
        
        
     
        if(!
    $result) {        
            echo 
    'errore';            
        } 
        else {
            
    '<p>grazie per esserti registrato </p>';    
        }
            
    }
        
    ?>
    Ultima modifica di Fabio90; 29-03-2012 alle 09:39

  7. #7
    L'avatar di borgo italia
    borgo italia è offline Super Moderatore
    Data Registrazione
    Feb 2008
    Località
    PR
    Messaggi
    11,242
    ciao
    alla tua prima domanda
    E se invece di rendere tutti i campi obbligatori vorrei farne solo uno così potrebbe andare?
    no
    quando fai un foreach come quello che ti ho postato ricavi la chiave dell'array ed il suo valore (sia questa un array normale o superglobale)

    quindi non devi leggere il valore (valore dell'elemento array con una data chiave) ma la chiave

    quindi il tuo scrpt per rendere obbligatorio solo il campo data deve essere
    Codice PHP:
    <?php
    //....
    }else {
        unset(
    $_POST['sub']);//elimini il post dal submit che comunque è pieno
        
    foreach($_POST as $chiave => $valore){
            if(
    trim($valore)=="" && $chiave ="data"){//verifico che $_POST['data'] non abbia valore vuoto
                
    echo "attenzione: il campo $chiave è obbligatorio";//in questo caso  'data'
                //e ritorni alla pagina pulita dopo 3 secondi (content='3 )
                
    echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
            }
        
    //e qui tutto il resto
    }
    //...
    ?>
    per il secondo do un occhio poi ti so dire

  8. #8
    Fabio90 è offline Utente del Forum
    Data Registrazione
    Feb 2012
    Messaggi
    206
    grazie mille troppo gentile

  9. #9
    L'avatar di borgo italia
    borgo italia è offline Super Moderatore
    Data Registrazione
    Feb 2008
    Località
    PR
    Messaggi
    11,242
    ciao
    stavo guardando un po' il tuo script.
    da quello che capisco tu salvi in una tabella del db i cami da input.
    guarda che inseriti così brutalmente è abbastanza rischioso soprattutto quelli che inputa l'utente, o comunque possono darti notevoli fastidi.
    ti faccio un esempio
    <input type="text" name="sottoscritto">
    se l'utente (anche se onesto e non vuole crearti danni, si chiama De' Sanctis, quando vai ad inserire nel db quell'apostrofo ti provoca il caos
    altro, chiedi la data di nascita
    <input type="text" name="data">
    lo stesso utente può scrivere 10.01.1999 o 10/1/99 o 10 gennaio 1999 o in altra qualsiasi maniera con cui si può scrivere un data
    e questo considerando un utente che non ti vuole male.
    secondo me è da rivedere un po' tutto.
    se hai pazienza in settimana prossima cominciamo a darci un occhio meglio

  10. #10
    L'avatar di alessandro1997
    alessandro1997 è offline Super Moderatore
    Data Registrazione
    Oct 2009
    Località
    Roma
    Messaggi
    5,144
    Qualche tempo fa (quando ancora non usavo framework e librerie varie) avrei fatto così:
    Codice PHP:
    <?php
    function processErrors(array $errors)
    {
        if (!empty(
    $errors)) {
            echo <<<'EOF'
    <p>Si sono verificati i seguenti errori:</p>
    <ul>
    EOF;

            foreach (
    $errors as $err) {
                echo <<<EOF
        <li>{$err}</li>
    EOF;
            }

            echo <<<EOF
    </ul>
    <p><a href="
    {$_SERVER['REQUEST_URI']}">Torna indietro</a></p>
    EOF;
        }
    }

    // metti qui la connessione al database
    // ...

    if ('POST' === $_SERVER['REQUEST_METHOD']) {
        
    $errors = array();

        
    $sottoscritto = isset($_POST['sottoscritto']) ? trim($_POST['sottoscritto']) : '';
        
    $dove         = isset($_POST['dove'])         ? trim($_POST['dove'])         : '';
        
    $quando       = isset($_POST['quando'])       ? trim($_POST['quando'])       : '';

        if (
    $sottoscritto == '') {
            
    $errors[] = 'Non hai inserito il tuo nome.';
        }

        if (
    $dove == '') {
            
    $errors[] = 'Non hai inserito il tuo luogo di nascita.';
        }

        if (
    $quando == '') {
            
    $errors[] = 'Non hai inserito la tua data di nascita.';
        }

        
    processErrors($errors);

        
    $sql "INSERT INTO iscrizioni (sottoscritto, dove, data) VALUES('%s', '%s', '%s')";
        
    $sql sprintf($sqladdslashes($sottoscritto), addslashes($dove), addslashes($quando));

        
    $query mysql_query($sql) or die(mysql_error());
    } else {
        echo <<<EOF
    <form method="post" action="#">
        <h1>Dati personali</h1>
        Il sottoscritto <input type="text" name="sottoscritto"><br><br>
        nato a <input type="text" name="dove"><br><br>
        il <input type="text" name="data"><br><br>
        Residente a <input type="text" name="residente"><br><br>
        CAP <input type="text" name="cap"><br><br>
        Prov <select>
            <option value="verona">VR</option>
            <option value="venezia">VE</option>
            <option value="padova">PD</option>
            <option value="belluno">BL</option>
            <option value="rovigo">RO</option>
            <option value="vicenza">VI</option>
            <option value="treviso">TV</option>
        </select>
        via <input type="text" name="via"><br/><br/>
        tel <input type="text" name="tel"><br/><br/>
        cell <input type="text" name="tel"><br/><br/>

        <input type="submit" value="Registrati">
    </form>
    EOF;
    }
    ?>

Pagina 1 di 2 12 UltimaUltima

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •