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

    Doppia funzione con checkbox

    Salute a tutti, ho bisogno di aiutoooooooooooooooo!!!

    Ho il classico form phpmail basato su pagina html, jquery per la validazione e codice php per l'invio del form.

    Nell'html, all'interno del form ho questo campo che vorrei svolgesse due funzioni; la spunta per la privaci e l'invio nel corpo della e-mail il contenuto del campo value.

    codice HTML:
    <input type="checkbox" id="spunta_uno" name="spunta_uno" value="prenotazione">
    Ho provato in questo modo ma non funziona:

    Codice PHP:
    script 
    var spunta_uno = $("#spunta_uno").val();
    var 
    datastr ='spunta_uno=' spunta_uno 
    Codice PHP:
    $spunta_uno $_POST['spunta_uno'];
    $mail->Body .= "<br><strong>Tipo di richiesta:</strong> $_POST[spunta_uno]"
    (Ho omesso il resto dello script per semplificare)

    Nella e-mail mi arrivano tutti i campi tranne il value del checkbox.
    Cosa sabglio ???????

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,595
    $_POST[spunta_uno]

    in $mail->Body devi mettere gli apici attorno a spunta_uno come hai fatto per la riga sopra

  3. #3
    In realtà stavo cercando di aggirare un problema che invece non ho risolto, ossia la convivenza tra piu form nella stessa pagina
    Avevo unificato la libreria di php pensando di risolvere ma il conflitto si ripresenta.
    C'è un modo per far convivere i form, magari richiamando prima un controllo ?

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,595
    Se hai due o più form con action diversi non vedo che problema ti si possa presentare.
    In realtà anche se hai più form con action uguale, basta non accavallarli tra di loro, al qual punto il browser non sa più quale deve inviare.
    Quindi ogni form deve iniziare e finire <form>...</form> senza farli accavallare del tipo
    <form> ... <form> ... </form> ... </form>
    Ultima modifica di Alhazred; 12-04-2019 a 17:50

  5. #5
    I form sono method post, l'invio avviene tramite tasto

    codice:
    <div class="form-group view-res alfa-but" id="invia_tre">Invia</div>
    con un dom richiamato dalla libreria java

    codice:
    $(document).ready(function(){
    $("#invia_tre").click(function(){
    che verifica i campi e poi invia tramite php.

    Non ho un action. Come potrei implemetare l'action che dici tu ?

    Ogni form ha il suo tasto invia e la sua libreria java e php.

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,595
    Quote Originariamente inviata da fabriaqui Visualizza il messaggio
    ...
    che verifica i campi e poi invia tramite php.
    ....
    Questo proprio no, PHP non invia nessun form, i form stanno sul client (il browser), PHP lì non esiste, PHP sta solo sul server.

    Mi sa che devi chiedere nella sezione Javascript, l'invio dei form lo fai con quello.

    P.s. Java e Javascript non sono la stessa cosa.

  7. #7
    Posto i codici così sarà più chiaro.

    Nella stessa pagina html ho tre form; io uso lo script di PHPMailer. Posto quello con meno campi, tanto il meccanismo è identico per tutti.

    Lato html abbiamo:

    codice:
    HTML
    <form class="form-inline" id="secondo_form" method="post">
    
    <div id="errore_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>
    <script src="/js/jquery.min.js"></script>
    <script src="/js/jquery_mailer_due.js"></script>
    HTML

    Poi abbiamo il file javascript richiamato tramite il tasto invia (invia_due)


    codice:
    $(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);
    }
    });
    }
    Ed infine abbiamo il file php

    codice:
    <?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>';
    } 
    ?>
    I tre form entravano in conflitto tra loro allora ho provato ad unificare i tre fogli php in uno solo come fosse un solo form ma il conflitto rimane. Eppure i tre tasti invia processano ciascuno il suo file javascript o almeno dal dom risulta ciascuno richiamare il proprio script ma poi nella fase di invio si danno fastidio l'uno con l'altro.

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,595
    Io però di form ne vedo solo uno.
    Lo so che hai scritto "tanto il meccanismo è identico per tutti", ma è capace che nel codice c'è qualcosa che non va, per esempio se hai più campi con stesso id JS recupererà il primo che incontra, anche se clicchi il pulsante per il terzo form.

    Comunque secondo me il problema ce l'hai con HTML/JS.
    Ultima modifica di Alhazred; 13-04-2019 a 09:05

  9. #9
    Ne ho postato uno per sintetizzare, gli id sono tutti differenti ti assicuro. Se ci fosse un modo per specificare quale form deve processare i dati, tipo "se il form X è selezionato else escludi i form A e B o qualcosa di simile. Ma questo forse lo dovrei postare nel forum javascript.

  10. #10
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,595
    Esatto, perché ti ripeto, secondo me il problema ce l'hai con HTML/JS, non con PHP.

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