Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23
  1. #1

    Azzerare campi form-mail

    Buongiorno a tutti.
    Non sono bravo con il PHP.
    Ho questo script che invia un'email da un form.

    Vorrei che, dopo l'invio dell'email, tutti i campi compilati vengano cancellati, e siano quindi vuoti come prima della compilazione (campi sono quattro: nome, email, oggetto, messaggio).

    Cosa devo aggiungere?

    Grazie in anticipo a chi mi aiuterà.


    Codice PHP:
    <?php
    if($_GET['nome']==""){echo"Inserisci il tuo Nome e Cognome.";exit;}else{    if($_GET['email']=="")    {    echo"Inserisci il tuo indirizzo email.";    exit;    }        else    {
                    if(!
    filter_var($_GET['email'], FILTER_VALIDATE_EMAIL))                {echo"Inseririsci un indirizzo email valido.";            exit;        }                else               {            if($_GET['oggetto']=="")            {            echo"Inserisci l'Oggetto dell'email.";            exit;            }            else            {                if($_GET['messaggio']=="")                {                echo"Compila il campo 'Messaggio'";                exit;                }            }        }    }
    }
    $nome=$_GET['nome'];$email=$_GET['email'];$oggetto=$_GET['oggetto'];$messaggio=$_GET['messaggio'];

    $informazioni"From: $email";
    $body "Messaggio inviato dal sito ---.---\n\n";$body .= "\nNome del mittente: " trim(stripslashes($_GET['nome'])) . "\n";$body .= "\nMessaggio: " trim(stripslashes($_GET['messaggio'])) . "\n";


    mail("---@---.---",$oggetto,$body,$informazioni);
    echo
    "Il tuo messaggio &egrave stato inviato correttamente.";?>

  2. #2
    Utente di HTML.it L'avatar di Vash SD
    Registrato dal
    Sep 2006
    Messaggi
    502
    Qual è il codice HTML?

    Per caso l'action del form è PHP_SELF, e i value degli input sono settati tipo:
    Codice PHP:
    <input type="text" name="nome" value="<?php echo $_GET['nome']; ?>" />

    Se è così, ti basta cancellare il valore del value, od ometterlo proprio!
    Oltretutto ti consiglio di inserire un tasto reset HTML come alternativa.
    Personal Home Page

  3. #3
    No, nell'html non c'è PHP.
    Il form usa Ajax e PHP.
    Nella pagina HTML c'è questo:

    (ma perchè il copia/incolla non mantiene il codice formattato con la giusta indentatura? nella mia pagina è tutto perfettamente ordinato)

    codice HTML:
    <script type="text/javascript">        function carica_ajax()        {        var xmlhttp;        if (window.XMLHttpRequest)          {// code for IE7+, Firefox, Chrome, Opera, Safari          xmlhttp=new XMLHttpRequest();          }        else          {// code for IE6, IE5          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");          }
    
            xmlhttp.onreadystatechange=function()          {            var caricamento="<img src='img/caricamento.gif' height='40px'>"            document.getElementById("myDiv").innerHTML=caricamento;                     if (xmlhttp.readyState==4 && xmlhttp.status==200)            {                           setTimeout(function(){document.getElementById("myDiv").innerHTML=xmlhttp.responseText;},2000);                        }          }
            var nome=document.getElementById("nome").value;        var email=document.getElementById("email").value;        var oggetto=document.getElementById("oggetto").value;        var messaggio=document.getElementById("messaggio").value;
            var parametri="mail.php"        parametri=parametri+"?nome="+nome+"&email="+email+"&oggetto="+oggetto+"&messaggio="+messaggio;
            xmlhttp.open("GET",parametri,true);        xmlhttp.send();        }    </script>


    ...e poi c'è il form:

    codice HTML:
    <form name="form1" method="post" action="#">                        
    <div id="myDiv" style="text-align:center; font-size:16px; color:red; font-weight:bold;"></div>                            
    <p>Nome e Cognome *<br /><input type="text" name="nome" value=""  id="nome" size="55" ></p>                            
    <p>Tuo indirizzo email * <br /><input type="text" name="email" value=""  id="email" size="55" ></p>                            
    <p>Oggetto * <br /><input type="text" name="oggetto" value=""  id="oggetto" size="55" ></p>                            
    <p>Messaggio *<br /> <TEXTAREA name="messaggio" ROWS=10 COLS=56 id="messaggio"></TEXTAREA></p>                            
    <p align="right"><input name="invia il messaggio" type="button" class="button" value="Invia" onclick="carica_ajax()"></p>                    
    </form>

  4. #4
    Quote Originariamente inviata da Vash SD Visualizza il messaggio
    (...)
    Oltretutto ti consiglio di inserire un tasto reset HTML come alternativa.
    No, il tasto reset non mi interessa, vorrei solo che si azzerassero i campi automaticamente dopo l'invio, per evitare che premendo di nuovo INVIA possa essere inviato un nuovo messaggio identico.

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    codice:
    setTimeout(function(){document.getElementById("myDiv").innerHTML=xmlhttp.responseText;document.form1.reset();},2000);
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    Quote Originariamente inviata da cavicchiandrea Visualizza il messaggio
    codice:
    setTimeout(function(){document.getElementById("myDiv").innerHTML=xmlhttp.responseText;document.form1.reset();},2000);
    Grazie! In parte funziona, ma c'è un problema: dopo aver fatto il check di tutti i campi, ci sono due possibilità:

    1) Tutto in regola, il messaggio viene spedito, i campi si azzerano come volevo.

    2) C'è un errore in uno dei campi, viene restituito il messaggio di errore, I CAMPI SI AZZERANO (in questo caso i campi non devono azzerarsi; devono azzerarsi solo se il messaggio viene inviato con successo).


    Non so se forse sono io che non ho seguito bene il tuo suggerimento.
    Ho sostituito la tua stringa con quella già presente nel mio script.
    Questa era la mia:
    codice HTML:
    setTimeout(function(){document.getElementById("myDiv").innerHTML=xmlhttp.responseText;},2000);

  7. #7
    Ma quindi non è un discorso di PHP...? Devo lavorare nella pagina html...?

  8. #8
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    codice:
    setTimeout(function(){
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    if(xmlhttp.responseText.indexOf("stato inviato correttamente")!=-1){document.form1.reset()}
    },2000);
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  9. #9
    Quote Originariamente inviata da cavicchiandrea Visualizza il messaggio
    codice:
    setTimeout(function(){
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    if(xmlhttp.responseText.indexOf("stato inviato correttamente")!=-1){document.form1.reset()}
    },2000);
    Sì, ecco, ci voleva un altro "if", solo che non riuscivo a scriverlo correttamente!
    Adesso funziona e posso usarlo.

    Devo però cercare di renderlo più pulito, nel senso che così devo ricordarmi di copiare il messaggio di corretto invio dal php alla funzione js, poichè devono essere uguali. Invece la funzione js dovrebbe andarselo a leggere da sola.

    Comunque mi hai aiutato molto e per questo ti ringrazio e posso ritenermi soddisfatto.

  10. #10
    Scusate se mi intrometto...non conosco affatto ajax e volevo fare una domanda. Quando si fa la richiesta al server usanto l' oggetto xmlhttp, il server poi rimanda al client una risposta...giusto? Questa risposta cosa contiene? la si può modificare a piacimento lato server? Scusate ho fatto più di una domanda ;-)

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 © 2024 vBulletin Solutions, Inc. All rights reserved.