0

Could someone help me to check my code, no matter what value i clicked,the radio always checked on the last one. it doesn't postback correctly, however the return "echo" value is right.

Thanks a lot

here is my code

<html>
  <form id="form" name="form"  method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

<input type="radio" name="foo" value="Apple" checked="checked" <?php if(isset($_POST['foo']) == 'Apple'): echo "checked='checked'"; endif; ?>/>Apple
<input type="radio" name="foo" value="Banana"  <?php if(isset($_POST['foo']) == 'Banana'): echo "checked='checked'"; endif; ?>/>Banana
<input type="radio" name="foo" value="Orange" <?php if(isset($_POST['foo']) == 'Orange'): echo "checked='checked'"; endif; ?>/>Orange

<input type="submit" value="Confirm" /> </form>

<? if(isset($_POST['foo']))
{echo $_POST['foo'];
}
?>

 </html>
4

2 に答える 2

3

比較は、次のようisset()に、の値をテストする必要がある場合のの戻り値に基づいています。$_POST['foo']

if(isset($_POST['foo']) && $_POST['foo'] == 'Orange'):

そうでなければ、PHPは大まかに型付けされ、舞台裏で型強制を実行しているため、true == 'Orange'実際には真になります。これが、この奇妙な結果を得る理由です。

于 2012-07-18T02:48:56.937 に答える
1

これがあなたの問題です:

if(isset($_POST['foo']) == 'Orange')

issettrueまたはfalseを返します。また、PHPの比較が弱いため、true == 'Orange'。代わりにこれを実行する必要があります。

if(isset($_POST['foo']) && $_POST['foo'] == 'Orange')
于 2012-07-18T02:49:11.730 に答える