2012-03-07 18 views
1

PHPを使用してラジオボタンの値を取得するのに本当に問題があります。 。 。私は、次のような2つのラジオボタンがあります。PHPがラジオ入力値を取得していません

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

そして、PHPはそれから任意のデータを取得できるかどうかをチェックする条件PHPの声明:

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

問題はPHPが値を返すように見えることができるということです「いいえ」が選択されている場合は「はい」が選択されている場合はラジオボタンが表示されますが、「チェックされた」部分は取り除いてみました。私は何を試しても "0"の値を取得することができません。

PHP配列を使用してチェックボックスに名前を付けるのは覚えていますが、ラジオボタンには必ずしも選択する必要はありません。

または、値0のラジオボタンを返しても問題ありませんか?

また、気づかずに何かひどく間違っているのですか?

答えて

5

PHP関数が空の場合は、0、NULL、 ""などに対してfalseが返されます。 php.netから引用

""(整数として0)(空文字列)

0.0(floatとして0)

" 0 "(0は文字列として)

NULL

FALSE

アレイ()(空の配列)

変数$ VAR。 (変数は宣言されていますが、クラス内に値はありません)

これらはすべてif文の実行を無効にします。

達成したいことに応じて値を反映するように条件を変更する必要があります。

幸運を祈る!

+0

ので、このような状況では "0" の値をチェックするための()作業をISSETでしょうか? – Sean

+0

まさに:)しかし、値が0かどうかをチェックする必要があります。値が1またはその他の値であってもissetは機能します。 Hendrik Richterが言ったような二重の条件を使用してください。乾杯! – optimum

+1

もう一度、ありがとうございます、ここでは、スピードと応答の質に常に驚いています! – Sean

0

私はゼロがあなたの問題だと信じています。それらを "Y"と "N"に設定してみると、N値が来ることがわかります。これは、PHPでは0が空の値であるためです。

3

あなたの問題は、空(0)が空の値として扱われることです。数字が0でもストリングも '0'であっても問題ありません。したがって、empty()を使用する代わりに、isset()および/または直接チェックを使用します。

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

または

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

恐ろしい:)ありがとう! – Sean