2017-08-31 17 views
0

ユーザー登録フォームを実装しましたが、ABNフィールドの文字数が11文字かどうかを確認する必要があります。私はそのためにif else文を書いた。しかし、それによると、誰かが11文字を入力しても、エラーメッセージがポップアップします。おそらく、if-elseステートメントに何か問題があります。私がプログラミングに慣れていなくても、エラーを見つけるのは本当に難しいです。私はif-elseプレースメントも変更しましたが、修正できませんでした。どんな種類の助けでも本当に感謝します。私は下に私のコーディングを置くでしょう。ありがとうございました!あなたはstrlengthでなければならないことを述べたようにstrlen()関数を使用して11文字の文字列を確認する

if($_POST){ 
    //validate email 
    if(empty($_POST['email']) || empty($_POST['password']) || empty($_POST['confirm']) || empty($_POST['firstname']) || empty($_POST['lastname']) ||empty($_POST['companyname']) || empty($_POST['companyphone'])||empty($_POST['abn'])||empty($_POST['type'])||empty($_POST['position'])||empty($_POST['phone']) || empty($_POST['address1']) || empty($_POST['city']) || empty($_POST['state']) || empty($_POST['country']) || empty($_POST['postcode'])){ 
    $errors[] = 'You must fill out required field.'; 
    } else { 
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)){ 
     $errors[] = 'You must enter a valid email.'; 
    }else { 
     $query = "SELECT * FROM users WHERE email=?"; 
     $stmt = $db->prepare($query); 
     $stmt->bind_param("s", $email); 
     $stmt->execute(); 
     $result = $stmt->get_result(); 
     $user = mysqli_fetch_assoc($result); 
     $stmt->execute(); 
     $stmt->store_result(); 
     $userCount = $stmt->num_rows(); 
     // Check if the email already exists in database. 
     if($userCount > 0){ 
     $errors[] = 'That email already exists.'; 
     } else { 
     //check if password is not less than 6 characters 
     if (strlen($password) < 6) { 
      $errors[] = 'Password must be at least 6 characters.'; 
     }else { 
      // check if passwords match 
      if($password !=$confirm){ 
      $errors[] = 'The passwords do not match.'; 
      } 
      else{ 
      if(strlen($abn)< 11) 
      {$errors[] = 'ABN Should be 11 characters.';} 
      } 

     } 
     } 
    } 
    } 
+0

のようにする必要がある場合はあなたの文は '場合(strlenを($のABN)!= 11) でなければならない場合には{ echo 'ABNは11文字である必要があります。'; } ' – JYoThI

+0

$ abn変数に格納されている値を確認してください。どこが初期化されているのか分かりません。私はそれが初期化されていない可能性があることを疑います。 – davidwebster48

+0

感謝のヒープ@JYoThIそれは働いた。文字通り私の人生を救う! <3 –

答えて

1

正確に11だから、あなたの文は、この

if(strlen($abn)!=11) { $errors[] ='ABN Should be 11 characters.'; } 
関連する問題