Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Form

  1. #1

    Form

    Salve a tutti...
    ho un problema (premetto che non sono un esperto di programmazione)

    Sto facendo un form semplice semplice che prevede alcuni campi.
    Se i campi non vengono riempiti adeguatamente (non passano la validazione) compaiono dei messaggi di errore proprio subito sotto il campo.

    Il problema è che tutto ció funziona fin quando il codice php è compreso nella stessa pagina in cui c'è il form; se lo metto in un file a parte e indirizzo l'action del form a questo nuovo file...non funziona, anzichè farmi comparire i messaggi di errore nella stessa pagina del form mi reindirizza alla pagina dove c'è il codice php..

    come fare ?
    vi aggiungo il codice:

    if(isset($_POST['invia'])){
    if( mb_strlen( $_POST['nome']) >= 3 ) {
    $nomeOk = true;
    }else{
    $nomeOk = false;
    $eNomeInput = 'class="errorinput"';
    $eNome = '<p class="error">Please insert valid name</p>';
    }
    if($nomeOk){
    echo "

    messaggio inviato correttamente</p>";
    }else{
    $contenido = $_POST;
    }
    }

  2. #2
    Utente di HTML.it L'avatar di vnt54
    Registrato dal
    Mar 2009
    Messaggi
    500
    Questo
    Codice PHP:
    $_POST 
    Cosa passa?
    e poi manca il codice html del form.posta anche quello altrimenti non è chiara la dinamica.
    Sono stato nella terra della paura e dei vampiri...in transilvania?NO!..in Banca!

  3. #3
    ############################
    ###########_HTML #############


    <form id="formail" method="post" action="mail.php">


    Your Name:</p>
    <input type="text" id="nome" name="nome" value="<?php echo $contenido['nome'];?>" <?php echo $eNomeInput; ?>/>

    <div class="errorBox"><?php echo $eNome; ?></div>
    <div class="clear"></div>


    Your E-mail:</p>
    <input type="text" id="email" name="email" value="<?php echo $contenido['email'];?>" <?php echo $eEmailInput; ?>/>

    <div class="errorBox"><?php echo $eEmail; ?></div>
    <div class="clear"></div>


    Subject:</p>
    <input type="text" id="titolo" name="titolo" value="<?php echo $contenido['titolo'];?>" <?php echo $eTitoloInput; ?>/>

    <div class="errorBox"><?php echo $eTitolo; ?></div>
    <div class="clear"></div>


    Your Message:</p>
    <textarea id="messaggio" name="messaggio" <?php echo $eMessaggioInput; ?>><?php echo $contenido['messaggio'];?></textarea>

    <div class="errorBox"><?php echo $eMessaggio; ?></div>
    <div class="clear"></div>
    <input type="submit" id="invia" name="invia" value="" />
    </form>






    ############################
    ###########_PHP ##############

    if(isset($_POST['invia'])){
    if( mb_strlen( $_POST['nome']) >= 3 ) {
    $nomeOk = true;
    }else{
    $nomeOk = false;
    $eNomeInput = 'class="errorinput"';
    $eNome = '<p class="error">Please insert valid name</p>';
    }
    if($nomeOk){
    echo "

    messaggio inviato correttamente</p>";
    }else{
    $contenido = $_POST;
    }
    }

  4. #4
    per ora sto provando solo con un campo...
    la variabile $contenido dovrebbe servire a mantenere i caratteri inseriti dall'utente in caso di errore.
    $eNomeImput serve per colorare la casella di rosso in caso d'errore.
    $eNome serve per il messaggio d'errore.

  5. #5
    ok.. questo è il codice completo per una maggiore chiarezza..
    se entrambi si trovassero nella stessa pagina funzionerebbe!
    ma ho la necessitá di portare il codice php in una pagina a parte...
    come lo faccio funzionare ?



    #################################
    ############# HTML ################
    #################################

    <form id="formail" method="post" action="mail.php">


    Your Name:</p>
    <input type="text" id="nome" name="nome" value="<?php echo $contenido['nome'];?>" <?php echo $eNomeInput; ?>/>

    <div class="errorBox"><?php echo $eNome; ?></div>
    <div class="clear"></div>


    Your E-mail:</p>
    <input type="text" id="email" name="email" value="<?php echo $contenido['email'];?>" <?php echo $eEmailInput; ?>/>

    <div class="errorBox"><?php echo $eEmail; ?></div>
    <div class="clear"></div>


    Subject:</p>
    <input type="text" id="titolo" name="titolo" value="<?php echo $contenido['titolo'];?>" <?php echo $eTitoloInput; ?>/>

    <div class="errorBox"><?php echo $eTitolo; ?></div>
    <div class="clear"></div>


    Your Message:</p>
    <textarea id="messaggio" name="messaggio" <?php echo $eMessaggioInput; ?>><?php echo $contenido['messaggio'];?></textarea>

    <div class="errorBox"><?php echo $eMessaggio; ?></div>
    <div class="clear"></div>
    <input type="submit" id="invia" name="invia" value="" />
    </form>





    #################################
    ############# PHP #################
    #################################


    <?php
    if( isset($_POST['invia']) ) { //se si preme INVIA si puó andare avanti

    ##############VALIDAZIONI ############

    if( mb_strlen( $_POST['nome']) >= 3 ) {
    $nomeOk = true;
    }else{
    $nomeOk = false;
    $eNomeInput = 'class="errorinput"';
    $eNome = '<p class="error">Please insert valid name</p>';
    }
    if( mb_eregi('^[a-z0-9\-\.~_]{2,}@[a-z0-9\-\.~_]{2,}\.[a-z]{2,4}$',$_POST['email']) ) {
    $emailOk = true;
    }else{
    $emailOk = false;
    $eEmailInput = 'class="errorinput"';
    $eEmail = '<p class="error">Please insert valid mail</p>';
    }
    if( mb_strlen( $_POST['titolo']) >= 3 ) {
    $titoloOk = true;
    }else{
    $titoloOk = false;
    $eTitoloInput = 'class="errorinput"';
    $eTitolo = '<p class="error">Please insert valid subject</p>';
    }
    if( !empty($_POST['messaggio']) ) {
    $messaggioOk = true;
    }else{
    $messaggioOk = false;
    $eMessaggioInput = 'class="errorinput"';
    $eMessaggio = '<p class="error">Please insert valid message</p>';
    }

    ############raccolgo le variabili e monto l'email #############

    if($nomeOk && $emailOk && $titoloOk && $messaggioOk){

    $nome = $_POST['nome'];
    $email = $_POST['email'];
    $titolo = $_POST['titolo'];
    $ip = $_SERVER['REMOTE_ADDR'];
    $data = date('\i\l d-M-Y \a\l\l\e \o\r\e H:i:s');
    $to = "bla@blabla.com";

    $messaggio = $data."
    ";
    $messaggio .= "hai ricevuto una e-mail da:
    ";
    $messaggio .= "".$nome." (".$email.")
    ";
    $messaggio .= "indirizzo IP: ".$ip."

    ";
    $messaggio .= "Oggetto:
    <h2>".$titolo."</h2>

    ";
    $messaggio .= nl2br("Messaggio:


    ".$_POST['messaggio']."</p>

    ");

    $headers = "From: $email \n";
    $headers .= "Reply-To: $email \n";
    $headers .= "MIME-Version: 1.0 \n";
    $headers .= "Content-Type: text/html; charset=ISO-8859-1 \n";

    if(mail($to,$titolo,$messaggio, $headers)){
    echo "

    Success! Your email is on its way into my inbox!</p>";

    }else{
    echo "

    Your email failed, probably my fault. Try again later.</p>";
    }
    }else{
    $contenido = $_POST;
    }
    }
    ?>

  6. #6
    Domanda stupida:
    Se metti il codice HTML e il codice PHP in due file diversi, come fai a stampare le variabili PHP nel form, se esse sono definite nel codice PHP?

  7. #7
    è proprio questo il punto...
    suppongo che dovrò portarmele dietro con le sessioni, ma non so farlo...

  8. #8
    Utente di HTML.it L'avatar di vnt54
    Registrato dal
    Mar 2009
    Messaggi
    500
    Questo
    Codice PHP:
    if( isset($_POST['invia']) ) { //se si preme INVIA si puó andare avanti 
    che è nel codice php non ha motivo di esistere in quanto, quando premi il tasto invio o submit
    come vuoi chiamarlo,automaticamente nella action del codice html già lo istruisci verso una
    pagina,in questo caso mail.php,quindi che motivo hai di controllare il tasto?non ci vedo il nesso;poi,nel tuo caso non hai bisogno delle sessioni perchè chiami una pagina con il metodo $_POST passandogli dei parametri,piuttosto ricontrollerei tutto il codice magari un pezzo per volta per capire dove possa essere l'errore.
    Sono stato nella terra della paura e dei vampiri...in transilvania?NO!..in Banca!

  9. #9
    quello posso anche toglierlo, ma la sostanza non cambia
    continua non funzionare

    comunque mi sa che non hai capito..
    è vero che dal formulario si passa alla pagina php premendo sul bottone invio, ma è anche vero che se non supera la validazione in questa pagina deve ritornare indietro e restituire:
    1) quello che aveva scritto l'utente nei campi
    2) mostrare il campo in rosso
    3) dare un messaggio d'errore

    come fa a tornare indietro e portarsi tutte queste cose senza sessione?
    A dire il vero ora come ora non torna nemmeno indietro..

  10. #10
    Utente di HTML.it L'avatar di vnt54
    Registrato dal
    Mar 2009
    Messaggi
    500
    Ha,ora ho capito..ti ci vuole PHP_SELF.
    Questo è il link,ti aiuterà a capire come.
    http://www.html-form-guide.com/php-f...tion-self.html
    Sono stato nella terra della paura e dei vampiri...in transilvania?NO!..in Banca!

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.