2013-02-07 2 views
0

그래서 나는 PHP 용 폼의 유효성을 검사하려고합니다.내 foreach 루프와 관련된 문제

if (empty($_POST) === false) { 
$errors = array(); 

$name  = $_POST['name']; 
$email = $_POST['email']; 
$message = $_POST['message']; 

if(empty($name) === true || empty($email) === true || empty($message) === true) { 
    $errors[] = 'Please fill out all the required forms!'; 
} else { 
    if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) { 
     $errors[] = 'Sorry please enter a valid email address'; 
    } 
    if (ctype_alpha($name) === false) { 
     $errors[] = 'Sorry, name must contain only letters!'; 
    } 
} 
print_r ($errors); 

지금 내가 인쇄하려고 :

내 연락처 양식

<form method="post" action="contact.php"> 
    <table class="contact"> 
    <tr> 
     <th> 
     <label for="name">Name</label> 
     </th> 
    <td> 
     <input type="text" name="name" id="name"> 
    </td> 
    </tr> 
    <tr> 
    <th> 
    <label for="email">Email</label> 
    </th> 
    <td> 
    <input type="text" name="email" id="email"> 
    </td> 
    </tr> 
    <tr> 
    <th> 
    <label for="message">Message</label> 
    </th> 
    <td> 
    <textarea name="message" id="message"></textarea> 
    </td> 
    </tr>  
</table> 
    <input type="submit" value="Send">  

지금 내가 여기에 PHP는 유효성 검사를 추가 할 당신의 전형적인 형태이다 그래서 나는 다음을 생성 이 출력과 배열은 데이터가 입력란에 입력 된 것으로 보이며 모든 유효성 검사가 올바르게 작동합니다. 내가 가진 문제는 목록에서 배열을 에코하기 위해 PHP를 추가하는 다음 단계입니다.

<?php 
if (empty($errors) === false) { 
echo '<ul>'; 
foreach($errors as $error) { 
echo '<li>' , $error ,'</li>'; 
} 
echo '</ul>'; 
} 
?> 

하지만 지금 문제는 이것이다 :

내가 폼 위에 추가 코드는 검증의 실패에 대해 표시 한 오류를 나열하는 가정 된 foreach 루프이었다 매번 지금 내가 작성 foreach가 보이지 않으면 오류가 양식에서 원래 배열을 생성하는 목록을 생성하지 않습니다.

어떤 제안이나 도움이 좋을 것입니다!

들 덕분에,이와

+1

과 같은 결과를 제공 훨씬 적은 문자입니다. 음 ... 아마 10 년 전 일 겁니다. :) – keyboardSmasher

+0

'=== false'를 popnoodles에있는 것으로 바꾸거나! empty를 대신 사용해야합니다. – Celeritas

+0

테이블의 양식에 관한 한 가지는 다른 방법보다 입력을 정렬하는 마크 업이 적고 필드가 표 형식으로 작동하지 않게하려면? 레이아웃을 위해 테이블을 사용하지 않는 것은 절대적으로 옳지 만 입력 후 입력이있는 양식에서는 제대로 작업하지 않아도됩니다. 얼굴을 아는 것처럼 코를 자르는 것과 같습니다. – Popnoodles

답변

1
if (count($errors)) echo '<ul><li>'.implode('</li><li>', $errors).'</li></ul>'; 
else echo 'No errors'; 

당신은 "오류"를보고 있지?

을 제외하고,이

if(empty($name) === true) 

빈 ($ 이름)을 할 필요가 참 또는 거짓이된다 없습니다. 그런 다음 그것을 사실과 비교할 필요가 없습니다.

if(empty($name)) 

그렇지 않으면 말도 것

if ((count(12)>0)==true)!=false) 

묻는처럼 완벽하게 괜찮습니다. 그리고 실제로

if(empty($name.$email.$message)) 

는 "전형적인"가 아닌 HTML 테이블 양식을 레이아웃

if(empty($name) === true || empty($email) === true || empty($message) === true)