Pagina 1 di 8 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 80

Discussione: dati obbligatori form

  1. #1

    dati obbligatori form

    Buongiorno a tutti, stò usando il file forminvio.php sotto riportato per spedire i dati di un modulo appunto.
    La domanda è la seguente:
    Avendo 3 campi obbligatori come faccio a fare uscire i 3 messaggi (nel caso non sia stato compilato un campo) in una piccola finestra di avviso lasciando la pagina web anzichè come succede adesso si apre una nuova pagina con sfondo bianco e il messaggio di avviso scritto in alto a sinistra della stessa.
    Sinceramente così ma fa schifo volevo fare una cosa un pò più professionale.
    Grazie e spero qualcuno mi possa aiutare.






    $to="mail destinatario";

    $nome = $_POST['nome'];
    $ragione_sociale = $_POST['ragione_sociale'];
    $partita_iva = $_POST['partita_iva'];
    $email = $_POST['email'];
    $nome = $_POST['nome'];
    $indirizzo = $_POST['indirizzo'];
    $località = $_POST['località'];
    $provincia = $_POST['provincia'];
    $telefono = $_POST['telefono'];
    $oggetto = $_POST['oggetto'];
    $messaggio = $_POST['messaggio'];
    $contatto = $_POST['contatto'];

    if($nome == ""){echo"manca il nome!";exit(); }
    if($email == ""){echo"manca la mail!";exit(); }
    if($telefono == ""){echo"manca il telefono!";exit(); }

    $messaggio=$_POST['nome']."\n ".$_POST['ragione_sociale']." \n ".$_POST['partita_iva']." \n ".$_POST['email']." \n ".$_POST['indirizzo']." \n ".$_POST['località']." \n ".$_POST['provincia']." \n ".$_POST['telefono']." \n ".$_POST['oggetto']." \n ".$_POST['messaggio']." \n ".$_POST['contatto'];


    mail($to,"Contatto dal sito Lattoneria Zucchelli Mauro",$messaggio, "From: $email");


    header("Location:contatti_1.html");

    ?>

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    579
    fai eseguire lo script nella stessa pagina dove c'è il form, es.

    form.php ( contiene il form per l'invio dati )

    nell'action metti form.php e sotto il form lo script php per l'invio delle mail.

    Per i messaggi che devono spuntare devi inserire un if che tipo questo


    Codice PHP:

    if ( $_POST['tuavar'] == TRUE ) {

    if ( 
    $_POST['tuavar2'] == TRUE ) {

    // qua inserisci lo script per l'invio delle mail


    } else {

    echo 
    "Devi compilare tua var2";

    }

    } else {

    echo 
    "Devi compilare tua var";


    l'uomo è tutto ciò che non può essere

    http://www.ebug.it Discussioni da web Designer

    http://www.ebug.it/?p=354 e Dart Fener dove lo mettiamo lol

  3. #3
    Scusami StarFinger dato che sono alle prime armi ti invio anche il form in html e quello per l'invio in php l'ho mandato prima.
    Riesci a dirmi dove devo inserire o comunque cosa devo fare perchè ho provato a fare come mi hai detto ma non funziona e sicuramente sbaglio in qualche passaggio.
    Grazie davvero tante.

    <div id="IMMAGINE">
    <form id="form1" name="form1" method="post" class="corpo-testo" action="forminvio.php">
    <table width="450" border="0">
    <tr>
    <td>Nome e Cognome *</td>
    <td><input type="text" name="nome" id="nome" class="corpo-testo" size="35"/></td>
    </tr>
    <tr>
    <td>Ragione Sociale</td>
    <td><input type="text" name="ragione_sociale" id="ragione_sociale" class="corpo-testo" size="35"/></td>
    </tr>
    <tr>
    <td>Partita Iva</td>
    <td><input type="text" name="partita_iva" id="partita_iva" class="corpo-testo" size="35"/></td>
    </tr>
    <tr>
    <td>Email *</td>
    <td><input type="text" name="email" id="email" class="corpo-testo" size="35"/></td>
    </tr>
    <tr>
    <td>Indirizzo</td>
    <td><input type="text" name="indirizzo" id="indirizzo" class="corpo-testo" size="35"/></td>
    </tr>
    <tr>
    <td>Località</td>
    <td><input type="text" name="località" id="località" class="corpo-testo" size="35"/></td>
    </tr>
    <tr>
    <td>Provincia</td>
    <td><input type="text" name="provincia" id="provincia" class="corpo-testo" size="5"/></td>
    </tr>
    <tr>
    <td>Telefono *</td>
    <td><input type="text" name="telefono" id="telefono" class="corpo-testo" size="35"/></td>
    </tr>
    <tr>
    <td>Oggetto</td>
    <td><select name="oggetto" size="1" class="corpo-testo" id="oggetto">
    <option>Informazione</option>
    <option>Preventivo</option>
    </select> </td>
    </tr>
    <tr>
    <td>Messaggio</td>
    <td><textarea name="messaggio" cols="31" rows="4" class="corpo-testo"></textarea></td>
    </tr>
    <tr>
    <td>Contatti</td>
    <td><input type="checkbox" name="contatto" class="corpo-testo" value="desidero essere ricontattato" checked>
    desidero essere ricontattato</td>
    </tr>
    <tr>
    <td>Informativa sulla privacy</td>
    <td><textarea name="privacy" class="corpo-testo" cols="30" rows="4" readonly="readonly">Il/La sottoscritto/a, acquisite le informazioni di cui dell’art. 7 del D. Lgs. 196/2003, ai sensi dell’articolo 13 della legge stessa, conferisce il proprio consenso al trattamento dei dati.</textarea></td>
    </tr>
    <tr>
    <td></td>
    <td><input type="submit" name="invia" id="invia" value="Invia" />
    <input type="reset" name="reset" id="reset" value="Reset" /></td>
    </tr>
    </table>
    </form>
    </div>

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    579
    Codice PHP:
    <form action="forminvio.php">

    .....

    </form>


    <? 

    if ( $_POST['tuavar'] == TRUE ) { 

    if ( 
    $_POST['tuavar2'] == TRUE ) { 

    // qua inserisci lo script per l'invio delle mail 


    } else { 

    echo 
    "Devi compilare tua var2"



    } else { 

    echo 
    "Devi compilare tua var"

    }



    ?>
    la pagina dove devi inserire il form si deve chiamare forminvio.php

    ciao
    l'uomo è tutto ciò che non può essere

    http://www.ebug.it Discussioni da web Designer

    http://www.ebug.it/?p=354 e Dart Fener dove lo mettiamo lol

  5. #5
    Ho provato a fare come mi hai detto ma non funziona ancora.
    Ora ho un file unico che vedi qui sotto e che si chiama forminvio.php
    Da remoto ho ovviamente eliminato la pagina contatti.html che è dove c'era prima il form.
    Come mai non funziona??


    <div id="IMMAGINE">
    <form id="form1" name="form1" method="post" class="corpo-testo" action="forminvio.php">
    <table width="450" border="0">
    <tr>
    <td>Nome e Cognome *</td>
    <td><input type="text" name="nome" id="nome" class="corpo-testo" size="35"/></td>
    </tr>
    <tr>
    <td>Ragione Sociale</td>
    <td><input type="text" name="ragione_sociale" id="ragione_sociale" class="corpo-testo" size="35"/></td>
    </tr>
    <tr>
    <td>Partita Iva</td>
    <td><input type="text" name="partita_iva" id="partita_iva" class="corpo-testo" size="35"/></td>
    </tr>
    <tr>
    <td>Email *</td>
    <td><input type="text" name="email" id="email" class="corpo-testo" size="35"/></td>
    </tr>
    <tr>
    <td>Indirizzo</td>
    <td><input type="text" name="indirizzo" id="indirizzo" class="corpo-testo" size="35"/></td>
    </tr>
    <tr>
    <td>Località</td>
    <td><input type="text" name="località" id="località" class="corpo-testo" size="35"/></td>
    </tr>
    <tr>
    <td>Provincia</td>
    <td><input type="text" name="provincia" id="provincia" class="corpo-testo" size="5"/></td>
    </tr>
    <tr>
    <td>Telefono *</td>
    <td><input type="text" name="telefono" id="telefono" class="corpo-testo" size="35"/></td>
    </tr>
    <tr>
    <td>Oggetto</td>
    <td><select name="oggetto" size="1" class="corpo-testo" id="oggetto">
    <option>Informazione</option>
    <option>Preventivo</option>
    </select> </td>
    </tr>
    <tr>
    <td>Messaggio</td>
    <td><textarea name="messaggio" cols="31" rows="4" class="corpo-testo"></textarea></td>
    </tr>
    <tr>
    <td>Contatti</td>
    <td><input type="checkbox" name="contatto" class="corpo-testo" value="desidero essere ricontattato" checked>
    desidero essere ricontattato</td>
    </tr>
    <tr>
    <td>Informativa sulla privacy</td>
    <td><textarea name="privacy" class="corpo-testo" cols="30" rows="4" readonly="readonly">Il/La sottoscritto/a, acquisite le informazioni di cui dell’art. 7 del D. Lgs. 196/2003, ai sensi dell’articolo 13 della legge stessa, conferisce il proprio consenso al trattamento dei dati.</textarea></td>
    </tr>
    <tr>
    <td></td>
    <td><input type="submit" name="invia" id="invia" value="Invia" />
    <input type="reset" name="reset" id="reset" value="Reset" /></td>
    </tr>
    </table>
    </form>
    <?

    if ( $_POST['nome'] == TRUE ) {
    if ( $_POST['email'] == TRUE ) {
    if ( $_POST['telefono'] == TRUE ) {

    $to="kiraza@libero.it";

    $nome = $_POST['nome'];
    $ragione_sociale = $_POST['ragione_sociale'];
    $partita_iva = $_POST['partita_iva'];
    $email = $_POST['email'];
    $nome = $_POST['nome'];
    $indirizzo = $_POST['indirizzo'];
    $località = $_POST['località'];
    $provincia = $_POST['provincia'];
    $telefono = $_POST['telefono'];
    $oggetto = $_POST['oggetto'];
    $messaggio = $_POST['messaggio'];
    $contatto = $_POST['contatto'];

    $messaggio=$_POST['nome']."\n ".$_POST['ragione_sociale']." \n ".$_POST['partita_iva']." \n ".$_POST['email']." \n ".$_POST['indirizzo']." \n ".$_POST['località']." \n ".$_POST['provincia']." \n ".$_POST['telefono']." \n ".$_POST['oggetto']." \n ".$_POST['messaggio']." \n ".$_POST['contatto'];

    mail($to,"Contatto dal sito Lattoneria Zucchelli Mauro",$messaggio, "From: $email");

    } else {
    echo "Devi inserire il tuo nome";
    }
    } else {
    echo "Devi inserire l'email";
    }
    } else {
    echo "Devi inserire il telefono";
    }

    ?>
    </div>

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    539
    allora...intanto apri i tag php con <?php al posto di <? (non funziona su tutti i server);
    inoltre quando esegui la tua pagina, hai in basso:

    if ( $_POST['nome'] == TRUE ) {

    e se $_POST['nome'] non esiste allora lo script va in errore.
    puoi fare così:
    sotto al tag form metti

    <input type="hidden" name="operazione" value="invioform">

    e nel tuo codice, in basso:

    Codice PHP:
    <?php

       
    if(isset($_POST['operazione'])){

          
    // eseguo i controlli del form ed invio la mail

       
    }
    ?>
    inoltre $_POST['nome'] == true vuol dire che controlli se il campo è stato impostato come true...per cui se al posto di nome, cognome, ecc...inserisco 1 allora la condizione viene passata e ricevi una mail in cui ti dice che ti ha scritto il sig 1 che abita in via 1, città 1, ecc....controlla piuttosto che per prima cosa le variabili non siano uguali a niente ($_POST['campo']!=""); poi magari controlli come è scritta la mail, ecc....

  7. #7
    No ma non mi sono spiegato bene....................io non voglio controllare come è scritta la mail ma voglio che venga visualizzato il messaggio di errore nel caso in cui non sia stato compilato uno dei campi obbligatori.
    Questo messaggio volevo che per una questione estetica fosse una sorta di "popup" in modo tale che rimane la pagina del sito..............
    Ora a parte aprire i tag php con <?php al posto di <? tutto il popò di codice che ti ho spedito va bene?
    ($_POST['campo']!="") dove va inserito perchè mi hai detto tu di utilizzare if ( $_POST['nome'] == TRUE ) {.
    Ciao

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    539
    allora...per fare il popup devi utilizzare javascript; in seconda battuta (e qui riprendo i "colleghi" del forum che giustamente hanno mosso appunti sulla sicurezza) ti conviene fare comunque controlli nella pagina php per evitare di ricevere i campi vuoti da chi invia il form e ha javascript disabilitato!
    Quindi:

    1. per il controllo lato client (senza ricaricare la pagina), devi modificare il tag form per chiamare una funzione che controlli il codice...tipo:

    Codice PHP:
    <form id="form1" name="form1" method="post" class="corpo-testo" action="forminvio.php" onSubmit="return Controllo();"
    e ovviamente avere la funzione Controllo(), che sarà qualcosa tipo:

    Codice PHP:

    <script type="text/javascript">
    <!--
       function 
    Controllo(){
          if(
    document.form1.nome.value==""){
             
    alert("Attenzione!! Non hai inserito il nome!");
             return 
    false;
          }
          if(
    document.form1.ragione_sociale.value==""){
             
    alert("Attenzione!! Non hai inserito la Ragione Sociale!");
             return 
    false;
          }
         
    // ecc....
       
    }

    //-->
    </script> 
    ovviamente ci sono altri modi per controllare, anche un ciclo tra i vari elementi, se cerchi ne trovi a pacchi di validatori di form in javascript...

    2. una volta inviato il form, fai controlli di tipo (è un esempio per renderti l'idea):

    Codice PHP:

    if($_POST['nome']!="" && $_POST['ragione_sociale'] != "" && $_POST['email!="" && $_POST['messaggio'] != ""){

       // invio la mail SOLO se i campi nome, ragione sociale, email e messaggio NON sono vuoti
    }
    else{
       
       // mando un output dell'
    errore o carico una pagina predefinitaecc...



  9. #9
    Scusami freeman ora ho il file forminvio.php che è il seguente:



    <div id="IMMAGINE">
    <form id="form1" name="form1" method="post" class="corpo-testo" action="forminvio.php" onsubmit="return Controllo();">
    <input type="hidden" name="operazione" value="invioform">
    <table width="450" border="0">
    <tr>
    <td>Nome e Cognome *</td>
    <td><input type="text" name="nome" id="nome" class="corpo-testo" size="35"/></td>
    </tr>
    <tr>
    <td>Ragione Sociale</td>
    <td><input type="text" name="ragione_sociale" id="ragione_sociale" class="corpo-testo" size="35"/></td>
    </tr>
    <tr>
    <td>Partita Iva</td>
    <td><input type="text" name="partita_iva" id="partita_iva" class="corpo-testo" size="35"/></td>
    </tr>
    <tr>
    <td>Email *</td>
    <td><input type="text" name="email" id="email" class="corpo-testo" size="35"/></td>
    </tr>
    <tr>
    <td>Indirizzo</td>
    <td><input type="text" name="indirizzo" id="indirizzo" class="corpo-testo" size="35"/></td>
    </tr>
    <tr>
    <td>Località</td>
    <td><input type="text" name="località" id="località" class="corpo-testo" size="35"/></td>
    </tr>
    <tr>
    <td>Provincia</td>
    <td><input type="text" name="provincia" id="provincia" class="corpo-testo" size="5"/></td>
    </tr>
    <tr>
    <td>Telefono *</td>
    <td><input type="text" name="telefono" id="telefono" class="corpo-testo" size="35"/></td>
    </tr>
    <tr>
    <td>Oggetto</td>
    <td><select name="oggetto" size="1" class="corpo-testo" id="oggetto">
    <option>Informazione</option>
    <option>Preventivo</option>
    </select> </td>
    </tr>
    <tr>
    <td>Messaggio</td>
    <td><textarea name="messaggio" cols="31" rows="4" class="corpo-testo"></textarea></td>
    </tr>
    <tr>
    <td>Contatti</td>
    <td><input type="checkbox" name="contatto" class="corpo-testo" value="desidero essere ricontattato" checked>
    desidero essere ricontattato</td>
    </tr>
    <tr>
    <td>Informativa sulla privacy</td>
    <td><textarea name="privacy" class="corpo-testo" cols="30" rows="4" readonly="readonly">Il/La sottoscritto/a, acquisite le informazioni di cui dell’art. 7 del D. Lgs. 196/2003, ai sensi dell’articolo 13 della legge stessa, conferisce il proprio consenso al trattamento dei dati.</textarea></td>
    </tr>
    <tr>
    <td></td>
    <td><input type="submit" name="invia" id="invia" value="Invia" />
    <input type="reset" name="reset" id="reset" value="Reset" /></td>
    </tr>
    </table>
    </form>
    <?php

    if ( $_POST['nome'] == TRUE ) {
    if ( $_POST['email'] == TRUE ) {
    if ( $_POST['telefono'] == TRUE ) {

    if($_POST['nome']!="" && $_POST['email'] != "" && $_POST['telefono']!="" ){

    // invio la mail SOLO se i campi nome, ragione sociale, email e messaggio NON sono vuoti
    }
    else{

    // mando un output dell'errore o carico una pagina predefinita, ecc...

    }

    $to="kiraza@libero.it";

    $nome = $_POST['nome'];
    $ragione_sociale = $_POST['ragione_sociale'];
    $partita_iva = $_POST['partita_iva'];
    $email = $_POST['email'];
    $nome = $_POST['nome'];
    $indirizzo = $_POST['indirizzo'];
    $località = $_POST['località'];
    $provincia = $_POST['provincia'];
    $telefono = $_POST['telefono'];
    $oggetto = $_POST['oggetto'];
    $messaggio = $_POST['messaggio'];
    $contatto = $_POST['contatto'];

    $messaggio=$_POST['nome']."\n ".$_POST['ragione_sociale']." \n ".$_POST['partita_iva']." \n ".$_POST['email']." \n ".$_POST['indirizzo']." \n ".$_POST['località']." \n ".$_POST['provincia']." \n ".$_POST['telefono']." \n ".$_POST['oggetto']." \n ".$_POST['messaggio']." \n ".$_POST['contatto'];

    mail($to,"Contatto dal sito Lattoneria Zucchelli Mauro",$messaggio, "From: $email");

    } else {
    echo "Devi inserire il tuo nome";
    }
    } else {
    echo "Devi inserire l'email";
    }
    } else {
    echo "Devi inserire il telefono";
    }

    ?>
    </div>

    Ho aggiunto nella stessa directory un file controllo.php che è il seguente:

    </head>

    <body>

    <script type="text/javascript">
    <!--
    function Controllo(){
    if(document.form1.nome.value==""){
    alert("Attenzione!! Non hai inserito il nome!");
    return false;
    }
    if(document.form1.email.value==""){
    alert("Attenzione!! Non hai inserito la email!");
    return false;
    }
    if(document.form1.telefono.value==""){
    alert("Attenzione!! Non hai inserito il telefono!");
    return false;
    }
    }

    //-->
    </script>

    </body>

    Il risultato è che appena carico la pagina forminvio.php mi compare giustamente tutto il bel form con i campi da compilare e in fondo compare subito la scritta "devi inserire il telefono".
    Poi se io compilo il form senza inserire uno dei tre campi mi ricarica la pagina tale e quale sempre con la scritta "devi inserire il telefono",altrimenti se compilo tutto mi invia il form correttamente.
    Sei così gentile da dirmi dove stò sbagliando??

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    539
    il javascript deve essere nella stessa pagina del form, oppure incluso in un file esterno, sempre prima della chiusura del tag </head>, con una sintassi tipo:

    <script type="text/javascript" src="controllo.js"></script>

    come avrai notato, l'estensione del file è .js (javascript) e non php, perchè viene interpretato dal browser (client) e non dal server.
    Inoltre il file .js dovrà contere SOLO codice javascript, senza altri tag (nemmeno i tag <script>...</script>).

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.