[PHP]

eleumas

Utente Attivo
16 Ago 2015
67
2
8
Ciao, ho un problema con una checkbox.

Ho inserito il codice HTML
HTML:
<input type="checkbox" id="checkbox" name="checkbox" value="1"/>

poi ho inserito il codice PHP
PHP:
if($checkbox = ($_POST['checkbox']) == '1')
            {
                $checkbox = "si";
            }
            else
            {
                $checkbox = "no";
            }
Il problema è che mi arriva sempre 'no' nella mail.

Vorrei che se la checkbox è spuntata arrivi 'si' altrimenti arrivi 'no'.
Qualcuno per favore potrebbe aiutarmi?
 
Ciao, a me funziona anche se la sintassi non è corretta : dovresti verificare prima con isset() se il POST è settato, non serve il value nelle checkbox, se non è spuntata il post non arriva puoi anche valorizzare la variabile in una sola riga
PHP:
$checkbox = isset($_POST['checkbox']) ? "si" : "no";
comunque se nella mail ti arriva no il problema è quando la invi gli passerai il dato sbagliato
 
Ti ringrazio per avermi risposto. Ho inserito il tuo codice al posto del mio e tolto value="" dal tag input.
Adesso in qualsiasi caso mi arriva "si".

Il form viene gestito da una chiamata Ajax e qui ho inserito:
Codice:
checkbox: $("#checkbox").is(":checked")
potrebbe dipendere da questo l'errore?

Altrimenti cosa mi consigli di verificare?

Grazie.
 
in quel caso dovrebbe arrivarti sempre il POST o true o false, meglio se controlli con la console del browser
puoi provare cosi
PHP:
$checkbox = $_POST['checkbox'] ? "si" : "no";
 
Confermo. True e False mi arrivano correttamente...solo che al posto di true vorrei vedere si e al posto di false vorrei vedere no.

Purtroppo per adesso non ho risolto il problema. Continua ad arrivarmi "si" anche se la checkbox non è spuntata.
 
probabilmente ti arrivano come stringhe prova ancora cosi
PHP:
$checkbox = $_POST['checkbox'] == "True" ? "si" : "no";
True scrivilo come lo vedi in console : se è in minuscolo scrivilo in minuscolo
 
Come prima cosa, grazie per il tempo che mi stai dedicando. Adesso arriva sempre "no".

Codice:
<script type="text/javascript">
            $(function() {             
                       
                $('#myform').on('submit',function(e) {
                        e.preventDefault();
                   
                        $('#alert').show(); // mostra alert durante il caricamento   

                        var data = {
                        name: $("#name").val(),
                        surname: $("#surname").val(),
                        email: $("#email").val(),
                        phone: $("#phone").val(),
                        nationality: $("#nationality").val(),
                        rooms: $("#rooms").val(),
                        calendarstart: $("#calendarstart").val(),
                        calendarend: $("#calendarend").val(),
                        message: $("#message").val(),
                        checkbox: $("#checkbox").is(":checkbox")
                        };

                     $.ajax({
                        type: "POST",
                        url: "assets/contact_it.php",
                        data: data,
                         
                        //Inizio visualizzazione errori
                        success: function(msg){
                        $('#alert').hide();  // nascondi alert finito di caricare
                        $("#result").html(msg); // messaggio di avvenuto invio
                        },
                         
                        error: function()
                         
                        {alert("Si è verificato un errore, si prega di riprovare!"); // messaggio di errore
                        }
                         
                    });
                        return false;
                    });
                });

        </script>

PHP:
<?php
        // Check for empty fields
        if(empty($_POST['name'])           ||
           empty($_POST['surname'])      ||
           empty($_POST['email'])          ||
           empty($_POST['phone'])          ||
           empty($_POST['nationality'])  ||
           empty($_POST['rooms'])          ||
           empty($_POST['calendarstart'])||
           empty($_POST['calendarend'])  ||
           empty($_POST['message'])         ||
           !filter_var($_POST['email'],FILTER_SANITIZE_EMAIL,FILTER_VALIDATE_EMAIL))
        {
            echo "<div class='uk-alert uk-alert-danger' id='not-sent' data-uk-alert>
                    <a href='' class='uk-alert-close uk-close'></a>
                    <p>Per favore compila correttamente tutti i campi!</p>
                </div>";
        }

        else
        {
            $name = $_POST['name'];
            $surname = $_POST['surname'];
            $email = $_POST['email'];
            $phone = $_POST['phone'];
            $nationality = $_POST['nationality'];
            $rooms = $_POST['rooms'];
            $calendarstart = $_POST['calendarstart'];
            $calendarend = $_POST['calendarend'];
            $message = $_POST['message'];
            $checkbox = $_POST['checkbox'] == "True" ? "si" : "no"; 
                        
            // 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 = "Ti ha scritto dal tuo sito:  $name";
            $email_body = "Hai ricevuto un nuovo messaggio dal tuo sito web!\n\n"."Questi sono i dettagli:\n\nNome: $name\n\nCognome: $surname\n\nEmail: $email\n\nTelefono: $phone\n\nNazionalità: $nationality\n\nCamera: $rooms\n\nData di partenza: $calendarstart\n\nData di arrivo: $calendarend\n\nMessaggio: $message\n\nAccettazione Privacy: $checkbox";
            $headers = "Da: [email protected]\n"; // This is the email address the generated message will be from. We recommend using something like [email protected].
            $headers .= "Reply-To: $email";   
            $invio_mail = mail($to,$email_subject,$email_body,$headers);

            echo "<div class='uk-alert uk-alert-success' id='sent'>
                    <a href='' class='uk-alert-close uk-close'></a>
                    <p>Messaggio inviato!</p>
                </div>";
     }
        ?>

Ti ho inserito tutto il codice nella speranza di aiutarti a risolvere il mio problema.
 
true va scritto in minuscolo
PHP:
$checkbox = $_POST['checkbox'] == "true" ? "si" : "no";
e nell'ultimo codice che hai postato hai scritto
Codice:
checkbox: $("#checkbox").is(":checkbox")
invece che
Codice:
checkbox: $("#checkbox").is(":checked")
l'ho testato e funziona
 

Discussioni simili