2014-05-18 4 views
0

입력란이 채워지지 않은 경우 "양식 입력"과 같은 오류가 표시되도록 양식을 원합니다.이 작업을 수행하기 위해 올바른 코드를 작성해야하지만 그 작업을 수행해야합니다. 페이지를 처음로드 할 때 오류가 표시됩니다. 나는 그것이 양식이 제출되었을 때 표시되기를 원한다.양식 제출시 오류 표시

양식이 제출 된 경우에만 검증을 적용하기 위해
if (isset($nameErr)) { 
    echo '<span class="error">* ' . $nameErr . '</span>'; 
} 
+1

'isset'을 사용하여 제출 버튼이나 'firstname' 요소와 함께 사용해야합니다. –

+0

'$ nameErr'은 첫 번째로드에서 정의되지 않습니다. 'empty' 또는'isset'을 사용하십시오 – itachi

+0

또 다른 옵션은 HTML5'required' 속성을 사용하고 있습니다. – enapupe

답변

1

기능 validate()이 형태의 컨텐츠 전에 실행됩니다, 그래서 내가 양식이 줄을 추가 PHP와 자바 스크립트의 경우 자바 스크립트

과 양식을 재확인 할이 서버로 전송됩니다.

<form onsubmit="validate()"> 

그럼 당신은이 같은 문서에 javascipt 기능을 추가 할 수 있습니다

function validate() { 
    if (/*check if fields are filled out properly*/) { 
    this.submit(); 
    } else { 
    // show message here when fields are missing 

    return false; // this line is important otherwise the form gets submitted anyway 
    } 
} 

을가 isset()

이의 모습으로 differnt 한 필드를 확인하기에 충분는 PHP의 경우 이 :

$formOK = true; 
if (!isset($_POST["field-name-1"]) || $_POST["field-name-1"] == "") { 
    echo "field-1 is missing"; 
    $formOK = false 
} 
if (!isset($_POST["field-name-2"]) || $_POST["field-name-2"] == "") { 
    echo "field-2 is missing"; 
    $formOK = false 
} 

if (formOK) { 
    echo "everything is fine"; 
    // do something with your form data 
} 

먼저 이중 검사는 가장 좋은 방법입니다. 우선 많은 요청을하지 않고 자바 스크립트가보다 유연하고 속도가 빠르기 때문에 PHP는 아무 것도 잘못 될 수 없다는 보장을 제공하기 때문입니다.

+0

예, 양식을 보내기 전에 확인하는 방법입니다. 그러나 잠재적 인 문제를 피하기 위해 항상 PHP를 두 번 체크인해야합니다. 입력에'required' 속성을 사용할 수도 있지만 충분하지 않습니다. – blex

+0

이런 식으로 나쁜 대답을 주셔서 고마워요. – frieder

+0

빈 필드가있는 양식을 보내면 코드가 "모든 것이 좋습니다"가 반환됩니다. 왜냐하면'isset'으로 필드를 검사하기 때문입니다. 필드가 설정되어 있기 (위해) 때문에, 하늘의 캐릭터 라인 인 경우에서도,이 메소드는 true를 돌려줍니다. ''''과 같은지 확인해야합니다. – blex

0

그냥 시도 이 경우 $_POST['submit']을 받으면

<?php 
    $nameError=""; 

    if(isset($_POST['submit'])) 
    { 
     //validate the form 
     if(condition is not met){ $nameError="your error message"; } 
    } 
?> 

<form> 
    ... 
    <input type="text" name="firstname"/> 
    <input type="submit" name="submit"/> 
    <span class="myError">* <?=$nameError?> </span> 
</form> 

여기에서 제출 버튼은 $_POST['submit']을 전송합니다. 처음에 오류 메시지가 비어 있습니다. 오류가 있으면 변경하십시오. <?=$nameError?>은 비어 있는지 여부에 관계없이 표시합니다.

0

, 당신은 확인할 수 있습니다 : 함께

<div class="Row"> 
<div class="Lable">First Name:</div> <!--End of Lable--> 
<div class="input"> 
<input type="text" id="firstname" class="detail" name="firstname" placeholder="First Name" /> 
</div> <!--End input--> 
</div> <!--End row--> 
<span class="error">* <?php echo $nameErr;?></span> 

PHP의 검증이

if ($_SERVER["REQUEST_METHOD"] == "POST") { 
if (empty($_POST["firstname"])) { 
$nameErr = "Name is required"; 
} else { 
$firstname = test_input($_POST["name"]); 
// check if name only contains letters and whitespace 
if (!preg_match("/^[a-zA-Z ]*$/",$firstname)) { 
    $nameErr = "Only letters and white space allowed"; 
} 
} 

감사

+0

이 오류를 해결 못해. '$ _SERVER [ 'REQUEST_METHOD']'는 완벽합니다. – itachi

+0

@itachi ok, 편집에 functionnality를 추가했습니다. – blex