2012-10-09 1 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

놀라운 매우 빠른 응답! 이것은 트릭을 한 것으로 보인다. 또한 '사이드 노트'를 높이 평가하십시오. 감사!! – ade123

+0

@ ade123 전혀 문제 없습니다. 기꺼이 도와 드리겠습니다! – newfurniturey

관련 문제