PHP中需要单选按钮选中文本框

时间:2013-04-30 20:40:40

标签: php radio-button

我对PHP很新,但我很难学习。我已经为我的学校网站创建了一个提交表单,并且在表单中我有一组单选按钮。见下文:

*Account Fund: <input type="radio" name="accfnd" value="nonprofit" <?php 
echo $nonprofitChecked; ?>>

Academic/Non-Profit <input type="radio" 
name="accfnd" value="commercial" <?php echo $commercialChecked; ?>>

Commercial <input type="radio" name="accfnd" value="uc" <?php echo $ucChecked; ?>>

UC  <input type="text" size="40" name="ucfund" 
value="<?php if(isset($_POST['ucfund'])) echo $_POST['ucfund'];?>" />
<?php if($ucfundError != '') { ?>
    <span class="error">
    <?=$ucfundError;?>
    </span>
<?php } ?>

选中带有value="uc"的单选按钮时,需要填写旁边的文本框,否则会收到错误消息。在大多数情况下,这是正常工作,我遇到的问题是,我收到错误消息,要求填写文本消息,即使我检查了其他一个单选按钮。唯一需要文本框的时间是选中uc单选按钮的时间。我希望我有意义。

以下是php代码。我将不胜感激任何帮助。谢谢。

$accfnd = $_POST['accfnd']; 

if (isset($_GET['uc'])){  
    if ($_GET['accfnd'] == 'uc'){ $ucChecked = ' checked="checked" '; }  
} else if (trim($_POST['ucfund']) === '') { 
    $ucfundError = '<span class="error">Account fund is required for UCI users.</span>'; 
    $hasError = true; 
} else { 
    $ucfund = trim($_POST['ucfund']); 
}  

$body = " Account Fund: $accfnd \n\n UCI Account Fund: $ucfund";  

2 个答案:

答案 0 :(得分:0)

正如Jose提到的那样,你可以互换地使用$ _GET和$ _POST表单数据变量。

最佳解决方案是在$_REQUEST[]$_GET[]处使用$_POST[]$_REQUEST是一个合并的超全局,包含所有提交的表单数据,无论是POST还是GET。它本质上是$ _GET和$ _POST的组合(以及$ _COOKIE)。进一步的信息/澄清here in the manual

其次,您问的问题是比较数据。你有多个从未执行的嵌套if()和elseif()语句,因为$_GET['uc']不存在。

$accfnd = $_REQUEST['accfnd']; 

if ( $accfnd == 'uc'){  // Commercial selected, text box required
    $ucChecked = ' checked="checked" ';
    if (trim($_REQUEST['ucfund']) === '') { 
        $ucfundError = '<span class="error">Account fund is required for UCI users.</span>'; 
        $hasError = true; 
    }
} else { 
    $ucfund = trim($_REQUEST['ucfund']); 
}  

$body = " Account Fund: $accfnd \n\n UCI Account Fund: $ucfund";  

答案 1 :(得分:0)

我没有看到名为uc的表单元素;您的代码也可以简化为

$accfnd = isset($_POST['accfnd']) ? $_POST['accfnd'] : '';
$ucfund = isset($_POST['ucfund']) ? $_POST['ucfund'] : '';

if ($accfnd == 'uc') {
    $ucChecked = ' checked="checked" '; 

    if (trim($ucfund) == '') {
        $ucfundError = '<span class="error">Account fund is required for UCI users.</span>'; 
        $hasError = true; 
    }
}

$body = " Account Fund: $accfnd \n\n UCI Account Fund: $ucfund";