2016-09-04 4 views
1

このコードでエラーを指摘するのに助けてくれる人は誰ですか? フォームは正常にデータベースに送信され、同時に 検証エラーが表示されます。 をmysql dbに送信する前に検証をパスすると仮定します。たとえば、フィールドが空の場合は、 というエラーが表示され、そのフィールドが空であり、同時に がデータベースに挿入されていると表示されます。フィールドが空白であってもこのPHPフォームの検証に合格します

<?php 
    require_once("validation_function.php"); 

    $errors=array(); 
    $message = ""; 
    $username= ""; 
    $password= ""; 

    if(isset($_POST["submit"])){ 

    // open a connection to the database 
    include("db_connect.php"); 
    // initialize variables with form data. 

    $username =trim($_POST["username"]); 
    $password =trim($_POST["password"]); 
     //validations 


     $field_required= array("username", "password"); 
     foreach($field_required as $field){ 
     $value= trim($_POST[$field]); 
      if(!has_presence($value)){ 
      $errors[$field]= ucfirst($field) . " can not be blank"; 
      }  
     } 

     $field_required_max = array("username"=>30,"password"=>8); 
     foreach($field_required_max as $field=> $max){ 
      $value=trim($_POST[$field]); 
      if(!has_max_lenght($value,$max)){ 
      $errors[$field]= ucfirst($field) . " is too long"; 
      } 

     } 


     $query = "INSERT INTO test ("; 
     $query .= " username, password"; 
     $query .= ") VALUES ("; 
     $query .= " '{$username}', '{$password}' "; 
     $query .= ")"; 
     $result= mysqli_query($connection, $query); 

     if($result==1){ 
      echo "records inserted successfully"; 
     }else{ 
     die("data base query failed " . mysqli_error($connection)); 
     } 

      if(isset($connection)){ mysqli_close($connection); } 

    } 
     ?> 

    <html lang="en"> 
     <head> 
     <title>single page form with validations</title> 
    </head> 
     <body> 
     <?php echo form_errors($errors);?> 
      <form action="form_with_validation.php" method="post"> 
      <p>username <input type="text" name="username" value ="" /> 
      </p> 
     <p>password <input type="password" name="password" value=""></p> 
     <input type="submit" name="submit" value="submit"/> 
     </form> 
    </body> 
    </html> 
+0

ありがとうございます。それは完璧に働いた。あなたとあなたの家族と、溢れるスタックに貢献したすべてのことを神が祝福します。 – Abdulrahaman

答えて

0

あなたは$エラー変数に自分のエラーを格納しているが、エラーが存在する場合はチェックしていません。

データベースに挿入する前に、エラーがないかどうかを確認する必要があります。

.... Other code .... 
foreach($field_required_max as $field=> $max){ 
    /* Statements */ 
} 

/* $errors contains the error messages */ 
/* Insert into database if no errors are present */ 

if (!$errors) { 

    $query = "INSERT INTO test ("; 
    ..... 
    $result= mysqli_query($connection, $query); 

    if ($result==1) { 
     echo "records inserted successfully"; 
    } else { 
     die("data base query failed " . mysqli_error($connection)); 
    } 
} 
+0

ありがとうございました。 2つのソリューションが機能しました – Abdulrahaman

1

これを試してみてください:

if(empty($errors)) 
{ 
$query = "INSERT INTO test ("; 
     $query .= " username, password"; 
     $query .= ") VALUES ("; 
     $query .= " '{$username}', '{$password}' "; 
     $query .= ")"; 
     $result= mysqli_query($connection, $query); 

     if($result==1){ 
      echo "records inserted successfully"; 
     }else{ 
     die("data base query failed " . mysqli_error($connection)); 
     } 

} 
+0

このコードでは問題は解決しません。 –

+0

これは動作します。喜んで何がうまくいかないか教えてください。 – Ish

+0

あなたのコードは$ errorsの代わりに$ errorをチェックしました。今それは大丈夫と思われる。 –

関連する問題