Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Conflitto tra form nella stessa pagina

    Ciao a tutti, ho un problema che mi sta facendo disperare.
    In una pagina html ho messo tre form, il classico script PHPMailer. I form per l'invio si basano sul tasto di invio che richiama la funziona javascript.
    Tutti i campi, i vari form, i vari tasti, ed i vari file sono personalizzati per ciascun form ma nonostante questo c'è un conflitto che ne impedisce il corretto funzionamento.
    Credo che il problema sia dovuto a jquery ed al sistema di invio.
    Chiedo agli esperti se c'è un modo per escludere gli altri form quando si inizia a complilarne uno o in fase di invio.
    Tipo if fom X invia else escludi form A e B. Magari, visto che si deve ricorrere ad una libreria esterna per ciascuno form andare a bloccare il caricamento delle librerie non utilizzate in quel momento.

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,685
    Ciao, così è impossibile capire dove sta il problema.
    Posta il link della pagina in questione, se possibile, così gli si può dare uno sguardo.
    Chiarisci anche quale sia esattamente il conflitto di cui parli.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Allora posto il codice...

    Sezione html (ometto le altre parti che non riguardano il form)

    codice:
    HTML
    
    <form class="form-inline" id="secondo_form" method="post">
    
    <div id="risposta_due" class="error-msg"></div>
    
    <div class="form-group conf-res">
    <label>Nome e Cognome</label>
    <input type="text" class="form-control" id="nome_cognome_due" name="nome_cognome_due" maxlength="50" spellcheck="false" value="">
    </div>
    
    <div class="form-group iata-id">
    <label >Telefono</label>
    <input type="text" class="form-control iata-input" id="telefono_ass" name="telefono_ass" maxlength="20" value="">
    </div>
    
    <div class="view-res" id="invia_due">Invia</div>
    
    <input type="checkbox" id="spunta_due" name="spunta_due" value="B">
    </form>
    
    
    <form class="form-inline" id="terzo_form" method="post">
    
    <div id="risposta_tre" class="error-msg"></div>
    
    <div class="form-group conf-res">
    <label>Nome e Cognome</label>
    <input type="text" class="form-control" id="nome_cognome_tre" name="nome_cognome_tre" maxlength="50" spellcheck="false" value="">
    </div>
    
    <div class="form-group iata-id">
    <label >Telefono</label>
    <input type="text" class="form-control iata-input" id="telefono_ass_due" name="telefono_ass_due" maxlength="20" value="">
    </div>
    
    <div class="view-res" id="invia_tre">Invia</div>
    
    <input type="checkbox" id="spunta_tre" name="spunta_tre" value="B">
    </form>
    
    
    <script src="/js/jquery.min.js"></script>
    <script src="/js/jquery_mailer_due.js"></script>
    <script src="/js/jquery_mailer_tre.js"></script>
    
    /HTML
    File javascript (sono due librerie distinte, file due e file tre)

    codice:
    javascript "jquery_mailer_due.js"
    
    
    
    $(document).ready(function(){
    $("#invia_due").click(function(){
      
    //Recuperiamo tutte le variabili
    
    var valid = '';
    var isr = ' manca. </h10>';
    var nome_cognome_due = $("#nome_cognome_due").val();
    var telefono_ass = $("#telefono_ass").val();
    var checkbox_due = $("#checkbox_due").val();
    
    
    //Eseguiamo una serie di controlli
    
    if (nome_cognome_due.length<1) {
    valid += 'Il nominativo'+isr;
    }
    
    if (telefono_ass.length<1) {
    valid += 'Il telefono'+isr;
    }
    
    if ($("#checkbox_due").is(":not(:checked)")){
    valid += '<h10>La spunta sulla privacy'+isr;
    }
    
    
    //Se i controlli dei campi form non vengono superati, appare il messaggio di errore.
    
    if (valid!='') {
    $("#risposta_due").fadeIn("slow");
    $("#risposta_due").html("<b>Errore: </b><br/>"+valid);
    $("#risposta_due").css("background-color","#FFFFE5");
    }
    
    //Se i controlli vengono superati, compare un messaggio di invio in corso
    else {
    var datastr ='nome_cognome_due=' + nome_cognome_due + '&telefono_ass=' + telefono_ass;
    $("#risposta_due").css("display", "block");
    $("#risposta_due").css("background-color","#FFFFE5");
    $("#risposta_due").html("<h10>Invio del messaggio in corso..</h10>");
    $("#risposta_due").fadeIn("slow");
    setTimeout("send('"+datastr+"')",2000);
    }
    
    return false;
    });
    });
    
    //Creazione della funzione di invio. Si baserà sul nostro file php.
    //var datastr ='name=' + name + '&mail=' + mail +'&messaggio=' + encodeURIComponent(messaggio);.
    
    function send(datastr){
    $.ajax({   
    type: "POST",
    url: "invio_mail2.php",
    data: datastr,
    cache: false,
    success: function(html){
    $("#risposta_due").fadeIn("slow");
    $("#risposta_due").html(html);
    $("#risposta_due").css("background-color","#FFFFE5");
    setTimeout('$("#risposta_due").fadeOut("slow")',2000);
    }
    });
    }
    
    
    
    
    
    javascript "jquery_mailer_tre.js"
    
    
    
    $(document).ready(function(){
    $("#invia_tre").click(function(){
      
    //Recuperiamo tutte le variabili
    
    var valid = '';
    var isr = ' manca. </h10>';
    var nome_cognome_tre = $("#nome_cognome_tre").val();
    var telefono_ass_due = $("#telefono_ass_due").val();
    var checkbox_due = $("#checkbox_due").val();
    
    
    //Eseguiamo una serie di controlli
    
    if (nome_cognome_tre.length<1) {
    valid += 'Il nominativo'+isr;
    }
    
    if (telefono_ass_due.length<1) {
    valid += 'Il telefono'+isr;
    }
    
    if ($("#checkbox_tre").is(":not(:checked)")){
    valid += '<h10>La spunta sulla privacy'+isr;
    }
    
    
    //Se i controlli dei campi form non vengono superati, appare il messaggio di errore.
    
    if (valid!='') {
    $("#risposta_tre").fadeIn("slow");
    $("#risposta_tre").html("<b>Errore: </b><br/>"+valid);
    $("#risposta_tre").css("background-color","#FFFFE5");
    }
    
    //Se i controlli vengono superati, compare un messaggio di invio in corso
    else {
    var datastr ='nome_cognome_tre=' + nome_cognome_tre + '&telefono_ass_due=' + telefono_ass_due;
    $("#risposta_tre").css("display", "block");
    $("#risposta_tre").css("background-color","#FFFFE5");
    $("#risposta_tre").html("<h10>Invio del messaggio in corso..</h10>");
    $("#risposta_tre").fadeIn("slow");
    setTimeout("send('"+datastr+"')",2000);
    }
    
    return false;
    });
    });
    
    //Creazione della funzione di invio. Si baserà sul nostro file php.
    //var datastr ='name=' + name + '&mail=' + mail +'&messaggio=' + encodeURIComponent(messaggio);.
    
    function send(datastr){
    $.ajax({   
    type: "POST",
    url: "invio_mail3.php",
    data: datastr,
    cache: false,
    success: function(html){
    $("#risposta_tre").fadeIn("slow");
    $("#risposta_tre").html(html);
    $("#risposta_tre").css("background-color","#FFFFE5");
    setTimeout('$("#risposta_tre").fadeOut("slow")',2000);
    }
    });
    }
    Codice PHP (stesso discorso dei javascript, sono due file divisi)

    codice:
    PHP - invio_mail2.php
    
    
    <?php
    
    header('Content-type: text/html; charset=utf8');
    echo '<meta http-equiv="Content-Type" content="text/html; charset=utf8" />';
    
    $data = date("j F Y G:i");
    $tome = "xxxxxxxxxxx";
    $soggetto = "Messaggio";
    $nome_cognome_due = $_POST['nome_cognome_due'];
    $telefono_ass = $_POST['telefono_ass'];
    $ip = $_SERVER['REMOTE_ADDR'];
    
    
    require("phpemail/class.phpmailer.php");
    
    $mail = new PHPMailer();
    
    $mail->IsSMTP();  // telling the class to use SMTP
    
    
    $mail->SMTPAuth = true; // turn on SMTP authentication
    $mail->Host       = "xxxxxxxxxxx"; // sets GMAIL as the SMTP server
    $mail->Port       = 587;                   // set the SMTP port for the GMAIL
    
    $mail->Username = "xxxxxxxxxxx"; // SMTP username
    $mail->Password = "xxxxxxxxxx"; // SMTP password
    
    
    $mail->From     = "xxxxxxxxxxxxx";
    $mail->FromName = "xxxxxxxxxxxxx";
    $mail->AddBCC("$tome");
    
    
    $mail->WordWrap = 50;
    
    $mail->IsHTML(true); // send as HTML
    
    $mail->Subject  = "Richiesta di assistenza";
    $mail->Body .= "<br>";
    $mail->Body     .= ("<img src=/img/logo_in_nero.png>") ;
    $mail->Body .= "<br>";
    $mail->Body .= "<br>";
    $mail->Body .= "<strong>Richiesta</strong>";
    $mail->Body .= "<br>";
    $mail->Body .= "<br><strong>Effettuata il:</strong> $data";
    $mail->Body .= "<br>";
    $mail->Body .= "<br><strong>Da parte di:</strong> $_POST[nome_cognome_due]";
    $mail->Body .= "<br>";
    $mail->Body .= "<br><strong>Numero di telefono:</strong> $telefono_ass";
    
    
    
    //Se l'e-mail viene spedita correttamente, compare un messaggio di avvenuto invio
    
    if(!$mail->Send()) {
      echo 'Il messaggio NON è stato inviato!<br/>';
      echo 'Mailer error: ' . $mail->ErrorInfo;
    } else {
      echo '<p>Messaggio INVIATO Grazie.</p>';
    }
    ?>
    
    
    
    
    PHP - invio_mail3.ph
    
    
    
    <?php
    
    header('Content-type: text/html; charset=utf8');
    echo '<meta http-equiv="Content-Type" content="text/html; charset=utf8" />';
    
    $data = date("j F Y G:i");
    $tome = "xxxxxxxxxxx";
    $soggetto = "Messaggio";
    $nome_cognome_tre = $_POST['nome_cognome_tre'];
    $telefono_ass_due = $_POST['telefono_ass_due'];
    $ip = $_SERVER['REMOTE_ADDR'];
    
    
    require("phpemail/class.phpmailer.php");
    
    $mail = new PHPMailer();
    
    $mail->IsSMTP();  // telling the class to use SMTP
    
    
    $mail->SMTPAuth = true; // turn on SMTP authentication
    $mail->Host       = "xxxxxxxxxxx"; // sets GMAIL as the SMTP server
    $mail->Port       = 587;                   // set the SMTP port for the GMAIL
    
    $mail->Username = "xxxxxxxxxxx"; // SMTP username
    $mail->Password = "xxxxxxxxxx"; // SMTP password
    
    
    $mail->From     = "xxxxxxxxxxxxx";
    $mail->FromName = "xxxxxxxxxxxxx";
    $mail->AddBCC("$tome");
    
    
    $mail->WordWrap = 50;
    
    $mail->IsHTML(true); // send as HTML
    
    $mail->Subject  = "Richiesta di contatto";
    $mail->Body .= "<br>";
    $mail->Body     .= ("<img src=/img/logo_in_nero.png>") ;
    $mail->Body .= "<br>";
    $mail->Body .= "<br>";
    $mail->Body .= "<strong>Richiesta</strong>";
    $mail->Body .= "<br>";
    $mail->Body .= "<br><strong>Effettuata il:</strong> $data";
    $mail->Body .= "<br>";
    $mail->Body .= "<br><strong>Da parte di:</strong> $_POST[nome_cognome_tre]";
    $mail->Body .= "<br>";
    $mail->Body .= "<br><strong>Numero di telefono:</strong> $telefono_ass_due";
    
    
    
    //Se l'e-mail viene spedita correttamente, compare un messaggio di avvenuto invio
    
    if(!$mail->Send()) {
      echo 'Il messaggio NON è stato inviato!<br/>';
      echo 'Mailer error: ' . $mail->ErrorInfo;
    } else {
      echo '<p>Messaggio INVIATO Grazie.</p>';
    }
    ?>
    Manca il terzo form che ha molte più voci ma è basato su un identico meccanismo. Non scervellatevi a verificare che i name o gli id siano corretti perchè l'ho già fatto mille volte. Non so come ne perchè ma i form ed i relativi file si intrecciano tra loro. Evidentemente manca un sistema che una volta iniziato a compilare un form automaticamente venga detto di escludere gli altri due. Evidentemente PHPMailer non è stato pensato per mettere più form nella stessa pagina.

  4. #4
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,505
    nei due file js hai la funzione send. Quindi viene utilizzata quella inserita nell'ultimo script che carichi.
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  5. #5
    Quote Originariamente inviata da ciro78 Visualizza il messaggio
    nei due file js hai la funzione send. Quindi viene utilizzata quella inserita nell'ultimo script che carichi.
    C'è una soluzione ?

  6. #6
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,505
    Quote Originariamente inviata da fabriaqui Visualizza il messaggio
    C'è una soluzione ?
    usi un nome diverso per le funzioni per cominciare?
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  7. #7
    Mi scusi ma non sono ferratissimo, vuole dire di cambiare in questo modo ?

    codice:
    if(!$mail->Send_due()) {
      echo 'Il messaggio NON è stato inviato!<br/>';
      echo 'Mailer error: ' . $mail->ErrorInfo;
    } else {
      echo '<p>Messaggio INVIATO Grazie.</p>';
    }
    ?>
    Posso dare ad una funzione il nome che voglio ? In questo modo pensa che il conflitto si risolva ??
    Grazie mille !

  8. #8
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,505
    si...

    due cose diamoci del tu siamo su un forum pubblico

    inoltre studia prima di iniziare a scrivere il codice. le funzioni, rispettando le regole di naming delle stesse, possono avere qualsiasi nome tu voglia.
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  9. #9
    Prima di tutto ti ringrazio per la risposta.
    Come vedi hai iniziato tu a dare del lei
    Quote Originariamente inviata da ciro78 Visualizza il messaggio
    usi un nome diverso per le funzioni per cominciare?
    Per quanto riguarda lo script non e' mio, come dicevo all'inizio io sono alle prime armi, prendo gli script gia fatti e li utilizzo ma quanto a modificarli vado un po' alla cieca.

  10. #10
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,505
    ma ....se ti riferisci al verbo usi...era un "tu usi" qui non servono le formalità

    per questo ti dicevo di non andare alla cieca ma di studiare
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


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.