• User Attivo

    Funzione Alert in un Form

    Avrei urgentemente bisogno di un'aiuto , ho necessita' che nel caso i dati inseriti non fossero corretti si aprisse un popup per informare l'utente di tale mancanza.
    Attualmente e' gia' presente il controllo di errore, ma viene indicato unicamente all'interno del forum stesso.

    Credo si debba applicare la funzione ALERT , ma non so come utilizzabile...

    PHP:
    [HTML]
    <?php
    define("_destinatario","indirizzo email");
    define("_destinatario2","indirizzo email");
    define("errore_oggetto_predefinito","Non ha inserito un oggetto!");
    define("errore_email_predefinito","L'indirizzo email che ha inserito non è corretto!");
    define("errore_messaggio_predefinito","Il messaggio è vuoto!");
    define("segnaposto_oggetto","Inserisca un oggetto");
    define("segnaposto_email","Inserisca la Sua email");
    define("segnaposto_messaggio","Inserisca il Suo messaggio");
    function generaModulo($oggetto=segnaposto_oggetto,$email=segnaposto_email,$messaggio=segnaposto_messaggio,$errore_oggetto="",$errore_email="",$errore_messaggio="" ){
    ?>
    <?php
    }
    function isValidEmail($email){
    $pattern = "^[_a-z0-9-]+(.[_a-z0-9-]+)@[a-z0-9-]+(.[a-z0-9-]+)(.[a-z]{2,3})$";
    if (eregi($pattern, $email)){
    return true;
    }
    else {
    return false;
    }

    }
    function controlla($stringa,$lunghezza){
    if (strlen($stringa)<$lunghezza){
    return true;
    }
    else {
    return false;
    }
    }
    ?>
    <?php if (!isset($_POST['bottone_invio'])) {
    generaModulo();
    } else {
    $oggetto = isset($_POST['oggetto']) ? stripslashes ($_POST['oggetto']) : "";
    $email = isset($_POST['email']) ? stripslashes ($_POST['email']) : "";
    $messaggio = isset($_POST['messaggio']) ? stripslashes ($_POST['messaggio']) : "";
    $error = false;
    $errore_oggetto = '';
    $errore_email = '';
    $errore_messaggio = '';

         if (controlla($oggetto,1) or ($oggetto==segnaposto_oggetto)) {
          $error = true;
          $errore_oggetto = errore_oggetto_predefinito;
    
      }
    
      if (!isValidEmail($email)){
          $error = true;
          $errore_email = errore_email_predefinito;
      }
      if ((controlla($messaggio,1)) or ($messaggio==segnaposto_messaggio)) { 
          $error = true;
          $errore_messaggio = errore_messaggio_predefinito;
      }
      if ($error){
         generaModulo($oggetto,$email,$messaggio,$errore_oggetto,$errore_email,$errore_messaggio);
      }
      else {
    

    ?>
    <p>
    Ha inserito i seguenti dati:<br />
    <br />
    <b>Oggetto:</b> <?php echo $oggetto ?>
    <br />
    <b>Email:</b> <?php echo $email ?>
    <br />
    <b>Messaggio:</b> <?php echo $messaggio ?>
    <br />
    </p>
    <?php

     mail(_destinatario,"Italian guest from BedAndBreakfastSinghilterra.it","Oggetto: $oggetto\nEmail: $email\nMessaggio:$messaggio","From:$email");
     mail(_destinatario2,"Italian guest from BedAndBreakfastSinghilterra.it","Oggetto: $oggetto\nEmail: $email\nMessaggio:$messaggio","From:$email");
     echo"<p>Grazie per aver inviato il messaggio</p>";?>
     <?php  }  }
      
    ?>
    

    [/HTML]

    HTML:

    [HTML]
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" id="form1">
    <table>
    <tr>
    <td>Il Suo indirizzo e-mail*</td>
    <td><label>
    <?php if (!$errore_email=="") { echo"<span><strong>$errore_email</strong></span>";} else { echo"";}?><br />
    <input name="email" size="10" type="text" id="mail" value="<?php echo $email;?>" />
    </label></td>
    </tr>

    <tr>

    <td>Oggetto*</td>
    <td><label>
    <?php if (!$errore_oggetto=="") { echo"<span><strong>$errore_oggetto</strong></span>";} else { echo"";}?><br />
      <input name="oggetto" size="10" type="text" id="oggetto" value="<?php echo $oggetto;?>" />
    </label></td>
    

    </tr>
    <tr>
    <td>Messaggio(con <strong>data arrivo/partenza)</strong>)</td>
    <td>
    <?php if (!$errore_messaggio=="") { echo"<span><strong>$errore_messaggio</strong></span>";} else { echo"";}?><br />
    <textarea name="messaggio" cols="10" rows="5" size="10" id="messaggio" ><?php echo $messaggio;?></textarea>
    </td>
    </tr>
    <tr>
    <td>
    Accetto la privacy sotto descritta
    </td>
    <td> <?php if (!$errore_check=="0") { echo"<span><strong>$errore_check</strong></span>";} else { echo"";}?><br />
    <input type="checkbox" id="check" name="trattamento" checked value="1"> </td>
    </tr>

    <tr>
    <td><label>*I campi sono obbligatori     
    </label></td>
    <td><label>
     <input type="submit" value="Invia il modulo" name="bottone_invio" /> <input type="reset" name="cancella" id="cancella" value="Ripristina" />
    </label></td>
    

    </tr>
    </table>

    </form>
    

    [/HTML]


  • User

    Ciao, la funzione alert è una funzione di javascript, non di php. La soluzione che mi viene in mente a quest'ora della notte è che puoi scriver una cosa del tipo

    [PHP]
    if( ... ci sono errori)
    echo "<script type="text/javascript">alert("C'è un errore");</script>";
    [/PHP]

    ma non so se funzioni ...


  • User Attivo

    Perfetto, ma dove la metto in tutti il codice che ho !??! non ne ho la piu' pallida idea ! ! :sad: mi aiuti?


  • User Attivo

    Qualcuno che mi puo' aiutare?

    Grazie


  • User

    Scusa se non mi sono fatto sentire prima, ma ho avuto parecchio da fare. Quello che ti consiglio è di aggiungere al tag <form> l'evento onsubmit in questo modo

    <form action='qualcosa.php' method='post' onsubmit='verificaForm(this);'
    

    Poi la funzione javascript verificaForm dovrà controllare tutti i campi per vedere se i valori sono legali e restituire vero se i controlli sono superati, falso altrimenti.

    Nel caso si verifichino errori, puoi usare anche l'alert per segnalarli 😉


  • User Attivo

    Grazie Molto,

    Chiedo troppo se mi potresti far vedere come applicheresti queste modifiche al codice postato sopra?

    Perche' la funzione verifica dei valori immessi gia' c'e' , il problema e' che non riesco a mettere l'alert per dirgli gli errori, attualmente mi viene scritto sotto i campi del form il messaggio "errore manca il campo XXX " tale messaggio semplicemente lo vorrei mettere come Alert, ma non riesco a farlo !

    Grazie se mi mostri come correggerlo !


  • User

    Allora, vediamo un po' ...

    [html]
    <script type="text/javascript">
    function validateForm(form) {
    var email = form.email.value;
    var oggetto = form.oggetto.value;
    var messaggio = form.messaggio.value;
    var trattamento = form.trattamento.checked;
    var email_reg_exp = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-]{2,})+.)+([a-zA-Z0-9]{2,})+$/;
    if (!email_reg_exp.test(email) || (email == "") || (email == "undefined")) {
    alert("email non valida");
    form.email.focus();
    return false;
    }
    else if ((oggetto == "") || (oggetto== "undefined")) {
    alert("Il campo Oggetto è obbligatorio.");
    form.oggetto.focus();
    return false;
    }
    else if ((messaggio == "") || (messaggio== "undefined")) {
    alert("Il campo Messaggio è obbligatorio.");
    form.messaggio.focus();
    return false;
    }
    else if(!trattamento) {
    alert("La checkbox non è selezionata.");
    return false;
    }
    else return true;
    }
    </script>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" id="form1" onsumbit=" return validateForm(this);">
    [/html]Così dovrebbe andare ...


  • User Attivo

    Emhh scusa ma sono un po' un novellino !!

    Ma nel codice messo all'inizio e' fatto una parte in PHP e l'altra nell' HTLM ,
    all'interno dell' HTML si richiamano le funzioni DEFINE all'interno del php iniziale.

    Dove lo metto questo java che mi hai scritto !??! cioe' in questo modo non cambio il codice che ho e' proprio tutto un'altro codice no ?!