0

我对 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";  
4

2 回答 2

0

正如 Jose 所暗示的,您可以互换使用 $_GET 和 $_POST 表单数据变量。

最好的解决方案是$_REQUEST[]在您可能使用的任何地方使用$_GET[]$_POST[]. $_REQUEST是一个合并的超全局变量,包含所有提交的表单数据,无论是 POST 还是 GET。它本质上是 $_GET 和 $_POST 的组合(以及 $_COOKIE)。手册中的更多信息/说明。

其次,你问的问题是比较数据。您有多个从未执行过的嵌套 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";  
于 2013-04-30T22:21:19.577 回答
0

我没有看到带有 name 的表单元素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";  
于 2013-04-30T22:25:37.230 回答