radiobutton e index undefined

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ho un form con i seguenti pulsanti
HTML:
<p>	<label class="block">Età:</label>
<input id="dieci" type="radio" value="10" name="eta">
<label for="primo">1-10</label>
<input id="venti" class="wrong" type="radio" value="20" name="eta">
<label for="secondo">11-20</label>
<input id="trenta" class="wrong" type="radio" value="30" name="eta">
<label for="terzo">21-30</label>
<input id="oltre" class="wrong" type="radio" value="40" name="eta">
<label for="quarto">+31</label>
</p>
il tutto è affiancato da un file js che mi controlla in locale se i campi sono compilati. Il problema è che se disabilito javascript naturalmente mi funziona php ma ottengo un notice del tipo Undefined Index perchè non avendo selezionato alcun campo del radiobutton non ha un valore. cosa posso fare?

Dimenticavo la porzione di codice php che dovrebbe controllare è questa
PHP:
if(isset($_POST['eta']) && (empty($_POST['eta']))){$ok_ko.="Ricordati di selezionare la tua età";
			echo "<meta http-equiv='Refresh' content='20; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";}
 
Ultima modifica di un moderatore:
Mi correggo, l'errore me lo da su questa riga
PHP:
$eta 		= 		$mysqli->real_escape_string(trim($_POST['eta']));
e questo è l'inizio del controllo che ho nella stessa pagina
PHP:
if(isset($_POST['invia'])){
	if($_SERVER['REQUEST_METHOD'] == 'POST'){
		//Filtro dati con MYSQLI
		$nome	 	= 		$mysqli->real_escape_string(trim($_POST['nome']));
		$cognome	= 		$mysqli->real_escape_string(trim($_POST['cognome']));
		$eta 		= 		$mysqli->real_escape_string(trim(($_POST['eta'])));
		$email 		= 		$mysqli->real_escape_string(trim($_POST['email']));
		$messaggio 	= 		$mysqli->real_escape_string(trim($_POST['messaggio']));
 
ciao
visto così non vedo errori.
dissenina di var_dump($_POST['eta']) lo script
per capire dove sparisce

dimenticavo: comunque hai messo il ! altrimenti l'if funzia per radio selezionato cioè il contrario di quello che vuoi
 
Ti inserisco il codice semi completo
PHP:
if(isset($_POST['invia'])){
	if($_SERVER['REQUEST_METHOD'] == 'POST'){
		//Filtro dati con MYSQLI
		$nome	 	= 		$mysqli->real_escape_string(trim($_POST['nome']));
		$cognome	= 		$mysqli->real_escape_string(trim($_POST['cognome']));
		$eta 		= 		$mysqli->real_escape_string(trim($_POST['eta']));
		$email 		= 		$mysqli->real_escape_string(trim($_POST['email']));
		$messaggio 	= 		$mysqli->real_escape_string(trim($_POST['messaggio']));

		$time = date("H:i:s"); //Orario
		$data = strftime("%A, %d %B %Y"); //Data
		$IP = ($_SERVER['REMOTE_ADDR']);

		//Funzione di controllo dell'inserimento dati corretti.
		function ver_testo($testo,$min,$max){
			$pattern="/^[a-zA-Z0-9]{".$min.",".$max."}$/";//non prende direttamente il min e il max
			if(preg_match($pattern, $testo)){
				//testo ok
				return TRUE;
			}else{
				return FALSE;
			}
		} //Chiudo funzione verifica lunghezza dati inseriti

		//preparo un messaggio a vuoto per gli errori
		$ok_ko="";
		$visibilità = "hidden";

		if(!ver_testo($nome,3,15)){$ok_ko.="Sei sicuro di aver inserito il nome correttamente? <br />";
			echo "<meta http-equiv='Refresh' content='20; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";}
		if(!ver_testo($cognome,3,15)){$ok_ko.="Sei sicuro di aver inserito il cognome correttamente? <br />";
			echo "<meta http-equiv='Refresh' content='20; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";}
		if(!isset($_POST['eta']) && (empty($_POST['eta']))){$ok_ko.="Ricordati di selezionare la tua età.<br />";
			echo "<meta http-equiv='Refresh' content='20; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";}
		if(!filter_var($email, FILTER_VALIDATE_EMAIL)){$ok_ko.="L'indirizzo email è assente o non è valido <br />";}
		if(!ver_testo($messaggio,3,500)){$ok_ko.="Hai dimenticato di scriverci dicosa hai bisogno.<br />";
			echo "<meta http-equiv='Refresh' content='20; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";}

		if ($ok_ko != "") {
			$visibilità = "visibile";
			echo"<div style=\"visibility:$visibilità;\" class=\"ok_ko\"></div>";
			$ok_ko ="";
			echo "<meta http-equiv='Refresh' content='40; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
		}

		if ($ok_ko == "") {
dopo questo if inizia la creazione di una mail con phpmailer. Quindi se clicco invia mi analizza i dati altrimenti mi da il form. Secondo te c'è qualcosa che non va?

P.S. Inserendo un var_dump($_POST['eta']); mi da undefined index sia alla riga che ho scritto sopra sia a quella del var_dump() ed in questa il valore è NULL
Se invece il metto questo
PHP:
var_dump($eta);
mi da string (0)
 
Ultima modifica:

Discussioni simili