[PHP] modifica del body email con checked

Discussione in 'PHP' iniziata da fabriaqui, 11 Aprile 2019.

  1. fabriaqui

    fabriaqui Nuovo Utente

    Registrato:
    11 Aprile 2019
    Messaggi:
    8
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Un cordiale saluto a tutti, premetto che mastico poco di php.
    In una pagina web ho più form racchiusi in uno script php come fosse uno per evitare conflitto tra più form nella stessa pagina.
    Il problema però sta nella personalizzazione della e-mail inviata dal form ...mi spiego meglio.

    variabili...

    (e-mail form uno)
    PHP:
    $mail->Body .= "<strong>Hai ricevuto una richiesta di informazioni.</strong>";
    ...
    seguono i campi riempiti nel form...
    (e-mail form due)
    PHP:
    $mail->Body .= "<strong> Hai ricevuto una richiesta di aiuto.</strong>";
    ...
    seguono i campi riempiti nel form...
    Vorrei che apparisse l'una o l'altra dicitura in base alla spunta di un campo cheched posto nel form stesso denominato x o y

    E' possibile fare una cosa come questa ?
     
    Ultima modifica di un moderatore: 11 Aprile 2019
  2. Max 1

    Max 1 Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    29 Febbraio 2012
    Messaggi:
    3.909
    Mi Piace Ricevuti:
    290
    Punteggio:
    83
    Sesso:
    Maschio
    @fabriaqui
    Da regolamento del forum, come tutti noi sei tenuto ad usare il tag [​IMG] o il tag [​IMG] per il PHP, quando posti del codice, oppure la funzione codice dalla barra degli strumenti
    [​IMG]
    Inoltre ti prego di leggere attentamente il regolamento generale del forum e quello di sezione dove posti
    Grazie
    Per questa volta te lo sistemo io ma mi raccomando per il futuro
     
  3. fabriaqui

    fabriaqui Nuovo Utente

    Registrato:
    11 Aprile 2019
    Messaggi:
    8
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    :eek: mammamia, cazziato al primo post.
    Chiedo scusa Max, avevo letto le regole ma questa parte di è sfuggita. Non lo faccio più :(
     
  4. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    2.574
    Mi Piace Ricevuti:
    128
    Punteggio:
    63
    Occupazione:
    free lance
    Località:
    Lombardia
    ho capito che,
    la scelta del form da inviare, già definisce il corpo del messaggio (info/aiuto)
    mentre vorresti scegliere il corpo del messaggio in ciascun form

    se ho capito bene,
    devi inserire la scelta in entrambi i form
    HTML:
    <input type='radio' id='tipo' name='tipo' value='I' /> INFO
    <input type='radio' id='tipo' name='tipo' value='A' /> AIUTO
    
    nello script richiamato, puoi gestire la scelta del corpo con uno "switch" ( per semplicità e facile comprensione )
    PHP:
    switch ($_POST['tipo'])
    {
      case 
    "I":
        
    $mail->Body .= "<strong>Hai ricevuto una richiesta di informazioni.</strong>";
        break;

      case 
    "A":
        
    $mail->Body .= "<strong> Hai ricevuto una richiesta di aiuto.</strong>";
        break;

      default:
        
    $mail->Body .= "<strong> Hai ricevuto una richiesta.</strong>";
        break;
    }
    ...
    seguono i campi riempiti nel form...
    devi posizionare bene questa scelta nello script di invio della mail
     
  5. fabriaqui

    fabriaqui Nuovo Utente

    Registrato:
    11 Aprile 2019
    Messaggi:
    8
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Grazie Marino51 per la risposta, effettivamente mi sono spiegato molto male e domando scusa.

    Ho il classico phpmail con form nella pagina html + script con le query + php per l'invio.

    Nel formo ho un campo checked con assegnato un value come di seguito...

    PHP:
    <input type="checkbox" id="spunta_uno" name="spunta_uno" value="prenotazione">
    La spunta in questo caso mi serve per la privaci ma vorrei che contestualmente andasse ad indentificarmi il form inviato trasferendo il campo value (nell'esempio prenotazione) nel corpo della e-mail assieme agli altri dati.

    Ho provato in questo modo ma non funziona ...

    Codice:
    script  java
    
    var spunta_uno = $("#spunta_uno").val();
    var datastr ='spunta_uno=' + spunta_uno
    
    php
    
    $spunta_uno = $_POST['spunta_uno'];
    $mail->Body .= "<br><strong>Tipo di richiesta:</strong> $_POST[spunta_uno]";
    
    (per brevità ho omesso gli altri campi ed il controllo della spunta che restituisce l'errore in fase di invio)

    Mi restituisce nella e-mail

    Codice:
    Tipo di richiesta: [object HTMLInputElement]
    Dove sbaglio ?
     
  6. fabriaqui

    fabriaqui Nuovo Utente

    Registrato:
    11 Aprile 2019
    Messaggi:
    8
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    PS in realtà mi andrebbe bene anche il tuo metodo ma invece che radio devo poter utilizzare o il pulsante di invio o il campo checkbox che andrebbero a svolgere due funzioni contemporaneamente.
    Ma nel caso che hai postato tu è sufficiente richiamare i dati son con php ?
    Grazie mille.
     
  7. fabriaqui

    fabriaqui Nuovo Utente

    Registrato:
    11 Aprile 2019
    Messaggi:
    8
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Niente da fare, il suggerimento di Marino era buono e l'ho messo in atto ma ora ho un problema con la convivenza di più form nella stessa pagina. Come si fa per evitare il conflitto tra form ?
     
  8. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    2.574
    Mi Piace Ricevuti:
    128
    Punteggio:
    63
    Occupazione:
    free lance
    Località:
    Lombardia
    i form sono definiti nella stessa pagina ma in modo individuale ( form ... /form, form ... /form)
    i campi di input possono avere anche gli stessi nomi,
    ma devi avere un elemento che li distingue, che potrebbe essere il valore assegnato a ciascun tasto submit ( uno per form )
    "submitI" potrebbe essere per info
    "submitA" potrebbe essere per aiuto
    poi nello script php verificando quale dei due submit arriva, puoi impostare al meglio l'invio della mail

    non riesco ad essere più specifico, non avendo codice per capire meglio
     
  9. fabriaqui

    fabriaqui Nuovo Utente

    Registrato:
    11 Aprile 2019
    Messaggi:
    8
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Ok posto il codice che è basato sul classico script PHPMailer

    Html

    HTML:
    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 javascript ...

    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 il file php

    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>';
    }
    ?>
    Nella stessa pagina ho tre form come questo in cui cambiano i campi. Ciascuno ha i propri file ed i propri name ed id specifici ma vanno in conflitto. Avevo pensato che unendo i tre file php come fosse un unico form avrei risolto ma non ha funzionato.
     
Sto caricando...

Condividi questa Pagina