2013-04-30 96 views
0

我對PHP很新,但很努力學習。我爲我的學校網站創建了一個提交表單,並在表單中有一組單選按鈕。請看下圖: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

您如何提交數據?我看不到表格。您是通過GET還是POST發送的? – 2013-04-30 20:48:11

回答

0

何塞提到的,您同時使用$ _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"; 
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"; 
+0

哇!非常感謝大家的回覆。我現在看到我做錯了什麼。何塞,我通過電子郵件發送數據,我不明白$ _GET或$ _POST之間的差異,所以我想我只是使用兩者。但是我想我現在將使用$ _REQUEST作爲Set Sail建議。再次感謝!! – user2292856 2013-04-30 22:51:43