PHP Problema php radio button

Fastidio

Utente Gold
1 Gennaio 2014
594
55
104
287
Salve!
Avrei un problema che da giorni non riesco a risolvere. Mi servirebbe che l'utente sia in grado di selezionare uno dei 2 campi oppure di non farlo.
Il punto è che non riesco a gestire l'errore "Notice: Undefined variable: consenso_dati_personali_1 in C:\xampp\htdocs\test.php on line 45 "
Qui c'è il codice php:
PHP:
<?php

echo "<html>
      <head>
        <meta charset='utf-8'>
        <meta name='viewport' content='width=800,height=700'>
        <link rel='stylesheet' href='./../style.css' />
      </head>
    <body>
      <div class='content'>
        <br />

    <h4>Parte 2: Trattamento dei dati personali</h4>
                <br />
            <form method='POST' action=''>

            <p>
                1)
                <a href='#' target='_blank'>Leggi qui</a>
                <input type='radio' value='1' name='consenso_dati_personali_1'>Esprimo il consenso
                <input type='radio' value='0' name='consenso_dati_personali_1'>Nego il consenso
            </p>
                <input type='submit' value='Avanti'>
            </form>
";

if($_SERVER['REQUEST_METHOD'] == 'POST'){

if (isset($_POST['consenso_dati_personali_1'])){    

    if ($_POST['consenso_dati_personali_1'] == 0){
        $consenso_dati_personali_1 = 0;
    }elseif ($_POST['consenso_dati_personali_1'] == 1){
        $consenso_dati_personali_1 = 1;
    }elseif (empty($_POST['consenso_dati_personali_1'])) {
        $consenso_dati_personali_1 = 2;
    }elseif (($_POST['consenso_dati_personali_1']) == null) {
        $consenso_dati_personali_1 = 3;
    }    
}

var_dump($consenso_dati_personali_1);
}
?>
sul db ho settato così: "consenso_dati_personali_1 tinyint(1) default 2". Ho fatto bene?
p.s.: so che parti di codice sono inutili ma si servono come debug(questa è solo una pagina di test)
 
Credo sia un problema di scope: tu stai dichiarando e assegnando un valore ad una variabile in una struttura if-else. Lo scope di tale variabile quindi e' quella struttura stessa, una volta uscito da li', quella variabile e' come se non esistesse, per cui la funzione var_dump non sa a cosa tu ti stia riferendo.
Sotto if($_SERVER['REQUEST_METHOD'] == 'POST'){
inserisci: $consenso_dati_personali_1 = -1;
in modo da dirgli "la variabile esiste". Setta il valore che preferisci, ho messo -1 perche' generalmente io inizializzo ad un valore extra per gestire errori.
Prova e dimmi se ti da ancora il problema!
 
  • Mi piace
Reazioni: Fastidio
Credo sia un problema di scope: tu stai dichiarando e assegnando un valore ad una variabile in una struttura if-else. Lo scope di tale variabile quindi e' quella struttura stessa, una volta uscito da li', quella variabile e' come se non esistesse, per cui la funzione var_dump non sa a cosa tu ti stia riferendo.
Sotto if($_SERVER['REQUEST_METHOD'] == 'POST'){
inserisci: $consenso_dati_personali_1 = -1;
in modo da dirgli "la variabile esiste". Setta il valore che preferisci, ho messo -1 perche' generalmente io inizializzo ad un valore extra per gestire errori.
Prova e dimmi se ti da ancora il problema!
Non è questo il problema perchè col var_dump mi dà "null"
 
hai provato ad inserire il codice che ti ho scritto prima?
Scusami, hai ragione non ci avevo nemmeno provato.
Ora che ho provato a seguire il tuo esempio mi funziona tutto. Ti ringrazio.
Qui l'ho adeguato alle mie esigenze:
PHP:
if($_SERVER['REQUEST_METHOD'] == 'POST'){
    
if (isset($_POST['consenso_dati_personali_1'])){   

    if ($_POST['consenso_dati_personali_1'] == 0){
        $consenso_dati_personali_1 = 0;
    }elseif ($_POST['consenso_dati_personali_1'] == 1){
        $consenso_dati_personali_1 = 1;
    }   
}else{
    $consenso_dati_personali_1 = 2;
}

var_dump($consenso_dati_personali_1);