2012-10-09 14 views
0

我有以下形式:我有一個問題,需要在單選按鈕上通過表單提交一些PHP驗證?

<form action="?" method="post" name="contactform"> 
<?php if(@$errorsAndNotices):?> 
<div class="error"> 
<p><?php echo @$errorsAndNotices; ?></p> 
</div> 
<?php endif; ?> 

<div class="question"> 
<p><span><input type="radio" name="answer" value="Yes"/></span> Yes</p> 
</div> 
<div id="one" class="answers" style="display:none"> 
<p><input type="radio" name="answerdetail" value="Reason One" /> Reason One</p> 
<p><input type="radio" name="answerdetail" value="Reason Two" /> Reason Two</p> 
</div><!-- end answers --> 

<div class="question"> 
<p><span><input type="radio" name="answer" value="No"/></span> No</p> 
</div> 
<div id="two" class="answers" style="display:none"> 
<p><input type="radio" name="answerdetail" value="Reason One" /> Reason One</p> 
<p><input type="radio" name="answerdetail" value="Reason Two" /> Reason Two</p> 
</div><!-- end answers --> 

<div class="question"> 
<p><span><input type="radio" name="answer" value="Not sure" /></span> Not sure</p> 
</div> 
<div id="three" class="answers" style="display:none"> 
<p>No problem, we’ll drop you an email next week.</p> 
</div> 

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

如果一個是「是」或「否」選中,然後在子單選按鈕顯示,然後你可以選擇其中之一。

我有以下簡單的驗證:

orsAndNotices = ''; 
if([email protected]$_REQUEST['answer'])      { $errorsAndNotices .= "Please select Yes, No or Not sure.<br/>\n"; $nameFail = 1; } 
if([email protected]$_REQUEST['answerdetail'])    { $errorsAndNotices .= "Please select your answer.<br/>\n"; $emailFail = 1; } 

如果沒有選擇,我得到一個錯誤的通知,因爲我想要的。

如果選擇了「是」或「否」,但沒有選中子單選按鈕,則會再次出現錯誤通知。

問題是當選擇「不確定」時,由於沒有選擇子輻射按鈕,所以出現錯誤通知。我不想要這個錯誤。

如果選擇了「是」或「否」,並且沒有選擇其子單選按鈕,我只需要一個錯誤提示。如果不確定,我希望表單提交時沒有任何錯誤。

我希望我解釋過這個好!

任何幫助將是偉大的。

回答

1

我會早於其他檢查Not Sure單選按鈕,將其設置爲一個標誌您的所有其他條件來使用:

if (!$notSure && [email protected]$_REQUEST['answerdetail']) ... 

$notSure = (!empty($_REQUEST['answer']) && ($_REQUEST['answer'] == 'Not sure')); 

的你可以用它注意事項(未回答特定問題)
使用@進行錯誤抑制可能會導致代碼運行緩慢。對於簡單的任務,如檢查是否$_REQUEST值設置,我會建議使用isset()empty()代替,如:

if (!$notSure && empty($_REQUEST['answerdetail'])) ... 
+0

驚人的,非常快速的響應!這似乎已經成功了。也欣賞'Side Note'。謝謝!! – ade123

+0

@ ade123完全沒問題,很高興能幫到你! – newfurniturey