[PHP] Problema form con lista

zammaeng

Nuovo Utente
25 Gen 2017
8
0
1
Salve a tutti, sto lavorando su di un form contatti, in cui ho inserito oltre i soliti campi (Nome Cognome ecc..), una lista con delle opzioni. Graficamente nella pagina html funziona, nel form c'è inserito un primo controllo il quale se uno dei campi è vuoto non va avanti, quindi il form penso sia corretto. Ho già fatto diverse prove, ad es: togliendo la funzione empty (), sulla variabile della lista, mi arriva anche l'email, solo che arriva senza il parametro della lista.

sapreste dirmi come dovrei far arrivare il parametro della lista presente in un form alla pagina php?
 
ciao
senza un po' di codice è difficile.
comunque se parli di una <select>, la select deve avere un name (es. pinco) e nella parte php leggi il valore dell'<option> selezionata con $_POSTO['pinco']
 
Allego il form:

HTML:
<form name="sentMessage" id="contactForm"  novalidate>
                        <div class="row">
                            <div class="col-md-6">
                                <div class="form-group">
                                    <input type="text" class="form-control" placeholder="Nome" id="name" required data-validation-required-message="Per favore inserisci il tuo nome.">
                                    <p class="help-block text-danger"></p>
                                </div>
                                <div class="form-group">
                                    <input type="text" class="form-control" placeholder="Cognome" id="lname" required data-validation-required-message="Per favore inserisci il tuo cognome.">
                                    <p class="help-block text-danger"></p>
                                </div>
                                <div class="form-group">
                                    <input type="email" class="form-control" placeholder="Email" id="email" required data-validation-required-message="Per favore inserisci il tuo indirizzo email.">
                                    <p class="help-block text-danger"></p>
                                </div>
                                <div class="form-group">
                                    <input type="tel" class="form-control" placeholder="Telefono" id="phone" required data-validation-required-message="Per favore inserisci il tuo numero di telefono.">
                                    <p class="help-block text-danger"></p>
                                </div>
                            </div>
                            <div class="col-md-6">
                              <div class="form-group">
                                <select type="text" class="form-control" placeholder="Seleziona il tuo evento" id="tevent" required data-validation-required-message="Per favore inserisci il tipo di evento che vuoi organizzare.">
                                  <option value="opzione 1">opzione 1</option>
                                  <option value="opzione 2">opzione 2</option>
                                  <option value="opzione 3">opzione 3</option>
                                </select>
                                  <p class="help-block text-danger"></p>
                              </div>
                                <div class="form-group">
                                    <textarea class="form-control" placeholder="Note o messaggio aggiuntivo" id="message"></textarea>
                                    <p class="help-block text-danger"></p>
                                </div>
                            </div>
                            <div class="clearfix"></div>
                            <div class="col-lg-12 text-xs-center">
                                <div id="success"></div>
                                <button type="submit" class="btn btn-xl">Invio</button>
                            </div>
                        </div>
                    </form>

e la pagina php


PHP:
<?php
// Check for empty fields
if(empty($_POST['name'])      ||
   empty($_POST['lname'])     ||
   empty($_POST['email'])     ||
   empty($_POST['phone'])     ||
   empty($_POST['message'])   ||
   !filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))
   {
   echo "No arguments Provided!";
   return false;
   }

$name = strip_tags(htmlspecialchars($_POST['name']));
$lname = strip_tags(htmlspecialchars($_POST['lname']));
$email_address = strip_tags(htmlspecialchars($_POST['email']));
$phone = strip_tags(htmlspecialchars($_POST['phone']));
$tevent = strip_tags(htmlspecialchars($_POST['tevent']));
$message = strip_tags(htmlspecialchars($_POST['message']));

// Create the email and send the message
$to = '[email protected]';                                                                                                                                                                                                         // Add your email address inbetween the '' replacing [email protected] - This is where the form will send a message to.
$email_subject = "Website Contact Form:  $name";
$email_body = "Hai una richiesta di contatto.\n\n"."Da:\n\nNome: $name\n\ncognome: $lname\n\nEmail: $email_address\n\ntel: $phone\n\nEvento: $tevent\n\nMessage:\n$message";
$headers = "From: email@email\n";                                                                                                                                                                                           // This is the email address the generated message will be from. We recommend using something like [email protected].
$headers .= "Reply-To: $email_address";
mail($to,$email_subject,$email_body,$headers);
return true;
?>
 
ciao
infatti non vedo il name.
devi dare un name alla select
HTML:
<select name="tevent" ...>
che, se non erro, nella parte php cerchi di leggere con
PHP:
//....
$tevent = strip_tags(htmlspecialchars($_POST['tevent']));
//...
analogamente agli altri input devi dare un name uguale a quello che poi userai nel $_POST relativo
 
Ciao, si quella è la stringa di lettura, che funziona per tutti i campi, il nome lo do tramite
HTML:
id="tevent"

ah non ti ho detto che il form viene trasferito ad una pagina .js
Codice:
$(function() {

    $("#contactForm input,#contactForm textarea").jqBootstrapValidation({
        preventSubmit: true,
        submitError: function($form, event, errors) {
            // additional error messages or events
        },
        submitSuccess: function($form, event) {
            event.preventDefault(); // prevent default submit behaviour
            // get values from FORM
            var name = $("input#name").val();
            var lname = $("input#lname").val();
            var email = $("input#email").val();
            var phone = $("input#phone").val();
            var tevent = $("input#tevent").val();
            var message = $("textarea#message").val();
            var firstName = name; // For Success/Failure Message
            // Check for white space in name for Success/Fail message
            if (firstName.indexOf(' ') >= 0) {
                firstName = name.split(' ').slice(0, -1).join(' ');
            }
            $.ajax({
                url: "././mail/contact_me.php",
                type: "POST",
                data: {
                    name: name,
                    lname: lname,
                    phone: phone,
                    email: email,
                    tevent: tevent,
                    message: message
                },
                cache: false,
                success: function() {
                    // Success message
                    $('#success').html("<div class='alert alert-success'>");
                    $('#success > .alert-success').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;")
                        .append("</button>");
                    $('#success > .alert-success')
                        .append("<strong>Il tuo messaggio è stato inviato, sarai contattato/a al più presto. </strong>");
                    $('#success > .alert-success')
                        .append('</div>');

                    //clear all fields
                    $('#contactForm').trigger("reset");
                },
                error: function() {
                    // Fail message
                    $('#success').html("<div class='alert alert-danger'>");
                    $('#success > .alert-danger').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;")
                        .append("</button>");
                    $('#success > .alert-danger').append("<strong>Scusaci " + firstName + ", il server email non risponde. cortesemente controlla che tutti campi siano compilati o riprova dopo!");
                    $('#success > .alert-danger').append('</div>');
                    //clear all fields
                    $('#contactForm').trigger("reset");
                },
            });
        },
        filter: function() {
            return $(this).is(":visible");
        },
    });

    $("a[data-toggle=\"tab\"]").click(function(e) {
        e.preventDefault();
        $(this).tab("show");
    });
});


/*When clicking on Full hide fail/success boxes */
$('#name').focus(function() {
    $('#success').html('');
});
 
Ciao, l'errore è nel codice javascript :
Codice:
var tevent = $("input#tevent").val();
non è un input ma una select
Codice:
var tevent = $("select#tevent").val();
 

Discussioni simili