Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    59

    Testare un form evidenziando i campi non corretti

    Salve, sto realizzando un'applicazione in php e mi sono incastrato in un punto, ho realizzato una pagina di un form dove vengono inseriti dei dati, una classica form std, posto il codice:


    file insertContact.php
    Codice PHP:
    <form action="e_insertContact.php" method='POST'>     
        <
    table width="400" border="0" bordercolor="#000000" align=center>
            <
    tr>
                <
    td width="40%" >Nome</td>
                <
    td width="60"><input name='Nome' type='text' size="40"></td>
            </
    tr>
            <
    tr>
                <
    td width="40%" >Cognome</td>
                  <
    td width="60"><input name='Cognome' type='text' size="40"></td>
            </
    tr>
            <
    tr>
                <
    td width="40%" >Sesso</td>
                 <
    td width="60">M<input name='Sesso' type="radio" value="0" checked="checked"/>
                                  
    F<input name="Sesso" type="radio" value="1" /></td>
            </
    tr>
    .
    .
    ...
    etcetc
    e poi c'è un file appunto e_insertContact.php che si preoccupa di controllare il contenuto del form se i campi obbligatori sono stati riempiti (dovrò inserire anche il controllo se l'email è nel formato corretto)

    file e_insertContact.php
    Codice PHP:
    $non_obbligatori = array("Sesso","StatoOProvincia","Paese","Titolo","TelefonoCellulare","Email","DataUltimoIncontro","PresentatoDa","Note","ABI","CAB","IBAN","Bancadiappoggio","Sitointernet");
    foreach (
    $_POST as $field => $value)
    {
        if(
    $value == "")
        {
            if(!
    in_array($field,$not_required))
            {
                
    $blank_array[$field] = "blank";
            }
        }
    }

    if (@
    sizeof($blank_array) > 0)
    {
        echo 
    "[b]Non hai inserito alcuni campi, i seguenti campi sono obbligatori:[/b]
    "
    ;
        foreach(
    $blank_array as $field => $value)
        {
            echo 
    "($field)
    "
    ;
        }
        
    extract($_POST);
        include(
    "insertContact.php");
    }
    else
    {
        
    $sql "INSERT INTO contatti (Nome,Cognome,Sesso,Indirizzo,Citta,StatoOProvincia,CAP,Paese,Titolo,TelefonoUfficio,TelefonoCellulare,Email,DataUltimoIncontro,IDTipoContatto,PresentatoDa,Note,          IDAzienda,ABI,CAB,IBAN,Bancadiappoggio,SitoInternet) VALUES ('$_POST[Nome]','$_POST[Cognome]','$_POST[Sesso]','$_POST[Indirizzo]','$_POST[Citta]','$_POST[StatoOProvincia]','$_POST[Cap]',              '$_POST[Paese]','$_POST[Titolo]','$_POST[TelefonoUfficio]','$_POST[TelefonoCellulare]','$_POST[Email]','$_POST[DataUltimoIncontro]','$_POST[IDTipoContatto]','$_POST[PresentatoDa]','                   $_POST[Note]','$_POST[IDAzienda]','$_POST[ABI]','$_POST[CAB]','$_POST[IBAN]','$_POST[Bancadiappoggio]','$_POST[SitoInternet]')";

        
    effettuaQuery($sql) or die("Inserimento non riuscito");
        echo 
    "[b]Contatto Inserito[/b]";
        
    sleep(1);
        
    header("Location: contactmanager.php");
    ?>


    </body>
    </html> 
    Il problema è che vorrei che quando un campo è vuoto o non corretto, venga rispedito alla pagina precedente ripresentando il form con i campi precedentemente riempiti e in quelli non corretti venga evidenziato l'errore...
    come posso fare evitando di fare l'action con lo stesso unico file?

    Ringrazio anticipatamente e saluto

  2. #2
    Compili il form, eseguito l'action, chiedi a PHP di memorizzare i valori ottenuti in variabili e rimandi alla pagina precedente dove, prima di apparire il form, esegui un controllo per verificare che le variabili siano state passate. Reimmetti quelle valorizzate, mentre in quelle non valorizzate fai scrivere il messaggio di errore. A questo punto, dici a PHP che se non sono stati riempiti tutti i campi imposta nell'action un'altra pagina.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    59
    Dunque, primo quello che tu hai scritto è una cosa molto anzi troppo articolata e comporta l'utilizzo addirittura di 3 o più pagine php, secondo io non avevo bisogno di un consiglio, bensì il tutto è già fatto (come puoi vedere dal codice) ma non funziona, avevo bisogno di sapere come rimandare i dati alla pagina precedente ed evidenziare i campi del form che non sono corretti, tra l'altro quello che suggerisci tu è un pò un minestrone e comunque concettualmente sò già cosa fare ma ho bisogno di implementarlo e non sò tecnicamente come, ti ringrazio del tuo intervento ma non era l'aiuto di cui avevo bisogno grazie lo stesso

  4. #4
    Originariamente inviato da Exc3ss
    Dunque, primo quello che tu hai scritto è una cosa molto anzi troppo articolata e comporta l'utilizzo addirittura di 3 o più pagine php, secondo io non avevo bisogno di un consiglio, bensì il tutto è già fatto (come puoi vedere dal codice) ma non funziona, avevo bisogno di sapere come rimandare i dati alla pagina precedente ed evidenziare i campi del form che non sono corretti, tra l'altro quello che suggerisci tu è un pò un minestrone e comunque concettualmente sò già cosa fare ma ho bisogno di implementarlo e non sò tecnicamente come, ti ringrazio del tuo intervento ma non era l'aiuto di cui avevo bisogno grazie lo stesso
    Scusami, ma.. con quel codice già fatto, come fai a rimandare i valori alla pagina precedente usando PHP? :master:

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    59
    Originariamente inviato da F@bius
    Scusami, ma.. con quel codice già fatto, come fai a rimandare i valori alla pagina precedente usando PHP? :master:
    che ne so con una sessione, o robe simili, in giro ho trovato qualcosa ma non saprei come applicarlo al mio caso, perciò ho scritto qui, ovviamente se tu richiedi a me come posso farlo la situazione fà sorridere, vabbè comunque bando alle ciance, come posso fare per rimandare i dati alla pagina precedente?

  6. #6
    Non so fino a che punto ti convenga con la sessione.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    59
    vabè, grazie Fabius, se c'è qualcuno che può sapere come risolvere il problema lo ringrazio infinitamente

  8. #8
    Ciao, scusa ma peche' non usi una semplice funzione javascript per la validazione ?? esempio:

    <table align="center" border="0">
    <form method="post" name="modulo">
    <tr>
    <td colspan="2" align="center">Registrazione al servizio
    Tutti i campi sono obbligatori
    </td>
    </tr>
    <tr>
    <td>Nome</td>
    <td><input type="text" name="nome"></td>
    </tr>
    <tr>
    <td>Cognome</td>
    <td><input type="text" name="cognome"></td>
    </tr>
    <tr>
    <td>Email</td>
    <td><input type="text" name="email"></td>
    </tr>
    <tr>
    <td colspan="2" align="right">
    <input type="button" value="Invia" onClick="Modulo()">
    </td>
    </tr>
    </form>
    </table>

    poi crei una funzione javascript che inserirai tra i TAG <head></head>

    <script language="javascript">
    <!--
    function Modulo() {
    // Variabili associate ai campi del modulo
    var nome = document.modulo.nome.value;
    var cognome = document.modulo.cognome.value;
    var email = document.modulo.email.value;
    // Espressione regolare dell'email
    var email_reg_exp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
    //Effettua il controllo sul campo NOME
    if ((nome == "") || (nome == "undefined")) {
    alert("Il campo Nome è obbligatorio.");
    document.modulo.nome.focus();
    document.modulo.nome.style.backgroundColor="red";
    return false;
    }
    //Effettua il controllo sul campo COGNOME
    else if ((cognome == "") || (cognome == "undefined")) {
    alert("Il campo Cognome è obbligatorio.");
    document.modulo.cognome.focus();
    document.modulo.cognome.style.backgroundColor="red ";
    return false;
    }
    else if (!email_reg_exp.test(email) || (email == "") || (email == "undefined")) {
    alert("Inserire un indirizzo email corretto.");
    document.modulo.email.select();
    document.modulo.email.style.backgroundColor="red";
    return false;
    }
    //INVIA IL MODULO
    else {
    document.modulo.action = "e_insertContact.php ";
    document.modulo.submit();
    }
    }
    //-->
    </script>

  9. #9
    piccola modifica nella funzione javascript, dopo il recupero delle variabili dal form
    var nome
    var cognome
    var email ecc..

    meglio resettare il colore di sfondo di tutti i moduli

    document.modulo.nome.style.backgroundColor="";
    document.modulo.cognome.style.backgroundColor="";
    document.modulo.email.style.backgroundColor="";

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    59
    Originariamente inviato da settimosenso
    Ciao, scusa ma peche' non usi una semplice funzione javascript per la validazione ?? esempio:

    <table align="center" border="0">
    <form method="post" name="modulo">
    <tr>
    <td colspan="2" align="center">Registrazione al servizio
    Tutti i campi sono obbligatori
    </td>
    </tr>
    <tr>
    <td>Nome</td>
    <td><input type="text" name="nome"></td>
    </tr>
    <tr>
    <td>Cognome</td>
    <td><input type="text" name="cognome"></td>
    </tr>
    <tr>
    <td>Email</td>
    <td><input type="text" name="email"></td>
    </tr>
    <tr>
    <td colspan="2" align="right">
    <input type="button" value="Invia" onClick="Modulo()">
    </td>
    </tr>
    </form>
    </table>

    poi crei una funzione javascript che inserirai tra i TAG <head></head>

    <script language="javascript">
    <!--
    function Modulo() {
    // Variabili associate ai campi del modulo
    var nome = document.modulo.nome.value;
    var cognome = document.modulo.cognome.value;
    var email = document.modulo.email.value;
    // Espressione regolare dell'email
    var email_reg_exp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
    //Effettua il controllo sul campo NOME
    if ((nome == "") || (nome == "undefined")) {
    alert("Il campo Nome è obbligatorio.");
    document.modulo.nome.focus();
    document.modulo.nome.style.backgroundColor="red";
    return false;
    }
    //Effettua il controllo sul campo COGNOME
    else if ((cognome == "") || (cognome == "undefined")) {
    alert("Il campo Cognome è obbligatorio.");
    document.modulo.cognome.focus();
    document.modulo.cognome.style.backgroundColor="red ";
    return false;
    }
    else if (!email_reg_exp.test(email) || (email == "") || (email == "undefined")) {
    alert("Inserire un indirizzo email corretto.");
    document.modulo.email.select();
    document.modulo.email.style.backgroundColor="red";
    return false;
    }
    //INVIA IL MODULO
    else {
    document.modulo.action = "e_insertContact.php ";
    document.modulo.submit();
    }
    }
    //-->
    </script>

    diciamo che è un idea, però ho un piccolo problema che io all'interno del form ho una cosa simile ad un certo punto:

    Codice PHP:
    <tr>
                <td width="40%" >Tipo Contatto</td>
                  <td width="60"><select name="IDTipoContatto" size="1"> 
                     <?php 
                        
                        $db 
    openDB();
                        
    $campi 'IDTipoContatto,TipoContatto';
                        
    $result interrogaCampiDaTabella($dbtipologia_contatto$campi);
                                   
                            while(
    $row mysql_fetch_row($result))
                            {
                                echo 
    "<option value=$row[0]$row[1] </option>"
                            }
                                
                        
    mysql_free_result($result);
                        
    mysql_close($db);    
                    
    ?>              
                  </select>
                  </td>
            </tr>
    che praticamente mi riempie un campo di selezione con dei valori pescati dal db, posso inserirli lo stesso?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.