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