2012-03-07 2 views
1

J'ai un vrai problème avec la récupération de la valeur d'un bouton radio en utilisant PHP. . . J'ai deux boutons radio en tant que tels:PHP ne récupère pas la valeur d'entrée radio

<input name="admin" type="radio" value="1" />Yes 
<input name="admin" type="radio" value="0" checked />No 

et une déclaration de PHP conditionnelle vérifier si PHP peut récupérer toutes les données qu'il contient:

if(!empty($_POST['admin'])) { 
    // do stuff 
} 
else { 
    echo "Value not set"; 
} 

le problème est que PHP peut sembler retourner une valeur pour les boutons radio si "oui" est sélectionné, mais pas si "non" est sélectionné, j'ai essayé de supprimer la partie "cochée", mais en vain. Je ne peux tout simplement pas l'obtenir pour récupérer la valeur "0" quoi que j'essaie.

Je me souviens d'utiliser des tableaux PHP pour nommer les cases à cocher, mais cela ne devrait pas être nécessaire pour les boutons radio, car seulement peut être sélectionné à un moment donné?

Ou est-ce que PHP a juste un problème pour renvoyer des boutons radio avec une valeur de 0? Ou est-ce que je fais quelque chose d'horriblement mal sans m'en rendre compte?

Répondre

5

La fonction PHP vide retournera false pour 0, NULL, "", et autres.

Citation de php.net:

"" (une chaîne vide)

0 (0 en tant qu'entier)

0,0 (0 en tant que flotteur)

" 0 "(0 en tant que chaîne)

FALSE

tableau

() (un tableau vide)

var $ var; (une variable déclarée, mais sans valeur dans une classe)

Tous ces éléments retourneront (faux), annulant ainsi l'exécution de votre instruction if.

Vous devrez modifier votre condition pour refléter une valeur en fonction de ce que vous souhaitez accomplir.

Bonne chance!

+0

aurait donc isset() travailler pour vérifier la valeur "0" dans cette situation? – Sean

+0

Exactement :) Mais vous devrez également vérifier si la valeur est 0, isset fonctionnerait même si la valeur était 1 ou toute autre valeur. Utilisez une double condition comme l'a dit Hendrik Richter. À votre santé! – optimum

+1

Merci encore, toujours étonné de la rapidité et de la qualité des réponses ici! – Sean

0

Je crois que le zéro est votre problème. Essayez de les régler sur "Y" et "N" et vous devriez voir que la valeur N vient à travers. C'est parce que 0 est une valeur vide en PHP.

3

Votre problème est que empty() traite les zéros comme des valeurs vides, qu'il s'agisse d'un nombre 0 ou d'une chaîne '0'. Ainsi, au lieu d'utiliser empty(), utilisez isset() et/ou des contrôles directs, par ex.

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

ou

if (isset($_POST['admin']) && $_POST['admin'] == 0) { 
+0

Génial :) merci! – Sean

Questions connexes