2014-04-16 3 views
0

다음은 데이터를 테이블에 삽입하는 스크립트입니다. 내 질문은 PHP에서 폼 유효성 검사에만 관한 것입니다. 여기 PHP 폼 유효성 확인

내 PHP 코드입니다 :

<?php 
//Here I have defined an error variable for each of the variables in the project 

$nameErr = $productErr = $priceErr = $catErr = $regionErr = ""; 
$product_name = $product_cond = $product_price = $product_cat = $product_region = ""; 

$con=mysqli_connect("localhost","*****","*****","my_project"); 
if (mysqli_connect_errno()) 
{ 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

    // here in this elseif, I check the number of characters in the field and then it is suppose to send an error (on the same page) if it does not match 

elseif (strlen($_POST['product_name']) < 5) { 

    $productErr = "name is too short"; 
} 
elseif (strlen($_POST['product_name']) > 10) { 

    $productErr = "name is too long"; 
} 
elseif (empty($_POST['product_cond'])) { 
    $productErr = "product condition required"; 
} 
else 
{ 
    $sql= "INSERT INTO Product (product_name, product_cond, product_price, product_cat, product_region, email, phone_num) 
      VALUES 
      ('$_POST[product_name]','$_POST[product_cond]','$_POST[product_price]','$_POST[product_cat]','$_POST[product_region]','$_POST[Email]','$_POST[PhoneNumber]')"; 

    if (!mysqli_query($con,$sql)) 
    { 
     echo 'Error: ' . mysqli_error($con); 
    } 
    else  
    { 
     echo "1 record added"; 
    } 
} 
mysqli_close($con); 
?> 

여기 내 HTML 페이지 :

<html> 
<body> 
    <h3> Please enter your product information bellow: </h3> 
    <form action="insert_data.php" method="post"> 
Product name: <input type="text" name="product_name" > 

// here I added this line that is suppose to do echo the error message: 

<span class="error">* <?php echo $nameErr;?></span> 
Condition: 
<select name="product_cond"> 
    <option value="" >SELECT</option> 
    <option value="Used" >Used </option> 
    <option value="new" >New</option> 

</select> 

Category: 
<select name="product_cat"> 
    <option value="" >SELECT</option> 
    <option value="books" >books</option> 
    <option value="Computers" >Computers</option> 
    <option value="Hardware/Tools" >Hardware/Tools </option> 
    <option value="Cars" >Cars</option> 
    <option value="home Appliances" >home Appliances</option> 
</select> 

Region: 
<select name="product_region"> 
    <option value="Oulu" >Oulu</option> 
    <option value="Turku" >Turku</option> 
    <option value="Helsinki" >Helsinki </option> 
    <option value="Tornio" >Tornio</option> 
    <option value="Tampere" >Tampere</option> 
    <option value="Kemi" >Kemi</option> 

</select> 
Product price: <input type="text" name="product_price"> 

<input type="submit"> 
</form> 
</body> 
</html> 

문제이 방법은 아직 데이터가 테이블에 삽입 할 수 있지만하지 않도록한다는 것입니다 대신 나에게 오류를주지 마라, 그것은 단지 나에게 빈 화면을 준다. 문제는 무엇입니까. PHP 코드 아래

+2

보십시오 : (http://www.w3schools.com/php/showphp.asp?filename=demo_form_validation_required 나는 w3school에서 제공하는이 예제를 사용하고 있습니다) 각 조건에서 변수 $ productErr을 반향합니다. –

+0

당신은'$ productErr'에 오류를 저장하고 있습니다 만, 당신은 어디에서도'$ productErr'을 참조하거나 에코하지 않습니다. –

+0

에코 에러가 아닌 다이로 검사 해보고, 문자열 변수를 만들고 if 문으로 본문 어딘가에 출력하면 –

답변

0

시도 :

<?php 

$con=mysqli_connect("localhost","*****","*****","my_project"); 
if (mysqli_connect_errno()) 
{ 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

$error = false; 
$errorMsg = ""; 

if (strlen($_POST['product_name']) < 5) { 
    $error = true; 
    $errorMsg. = "name is too short"; 
} 
elseif (strlen($_POST['product_name']) > 10) { 
    $error = true; 
    $errorMsg. = "name is too long"; 
} 

if (empty($_POST['product_cond'])) { 
    $error = true; 
    $errorMsg. = "product condition required<br/>"; 
} 
if (empty($_POST['product_price'])) { 
$error = true; 
    $errorMsg. = "product price required<br/>"; 
} 

if (empty($_POST['product_cat'])) { 
$error = true; 
    $errorMsg. = "product category required<br/>"; 
} 

if (empty($_POST['product_region'])) { 
$error = true; 
    $errorMsg. = "product region required<br/>"; 
} 

if (empty($_POST['email'])) { 
$error = true; 
    $errorMsg. = "email required<br/>"; 
} 

if (empty($_POST['phone_num'])) { 
$error = true; 
    $errorMsg. = "phone required<br/>"; 
} 


if(!$error) 
{  
    $sql= "INSERT INTO Product (product_name, product_cond, product_price, product_cat, product_region, email, phone_num) 
     VALUES   ('$_POST[product_name]','$_POST[product_cond]','$_POST[product_price]','$_POST[product_cat]','$_POST[product_region]','$_POST[Email]','$_POST[PhoneNumber]')"; 

    if (!mysqli_query($con,$sql)) 
    { 
     echo 'Error: ' . mysqli_error($con); 
    } 
    else  
    { 
     echo "1 record added"; 
    } 
}else{ 
    echo $errorMsg; 
} 
mysqli_close($con); 
?> 
+0

그래, 당신은 HTML 부분에 아무 것도하지 않습니까? – user3463859

+0

PHP 유효성 검사는 PHP 파일에서 작동합니다. html 부분에 JavaScript 유효성 검사를 사용해야합니다 ... –

+0

주의 : SQL INJECTION –

0

PHP 코드

<?php 


    //Here I have defined an error variable for each of the variables in the project 

    if (isset($_POST['product_name']) && isset($_POST['product_cond']) && isset($_POST['product_price']) && isset($_POST['product_cat']) && isset($_POST['product_region']) && isset($_POST['Email']) && isset($_POST['PhoneNumber'])) { 

     $nameErr = $productErr = $priceErr = $catErr = $regionErr = ""; 
     $product_name = $product_cond = $product_price = $product_cat = 
     $product_region = ""; 


     $con = mysqli_connect("localhost", "*****", "*****", "my_project"); 
     if 
     (mysqli_connect_errno() 
     ) { 
      echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
     } 


     // here in this elseif, I check the number of characters in the 
     field and then it is suppose to send an error(on the same page) if it 
      does not match 

    elseif (strlen($_POST['product_name']) < 5) { 

      $productErr = "name is too short"; 
     } elseif (strlen($_POST['product_name']) > 10) { 

      $productErr = "name is too long"; 
     } elseif (empty($_POST['product_cond'])) { 
      $productErr = "product condition required"; 
     } 

    else { 
      $sql = "INSERT INTO Product (product_name, product_cond, product_price, product_cat, product_region, email, phone_num) 

       VALUES 
       ('$_POST['product_name']','$_POST['product_cond']','$_POST['product_price']','$_POST['product_cat']','$_POST['product_region']','$_POST['Email']','$_POST['PhoneNumber']')"; 

     if (!mysqli_query($con, $sql)) { 
      echo 'Error: ' . mysqli_error($con); 
     } else { 

      echo "1 record added"; 
     } } mysqli_close($con); 
    } 
    ?> 

HTML

<html> 
<body> 
    <h3> Please enter your product information bellow: </h3> 
    <form action="insert_data.php" method="post"> 
Product name: <input type="text" name="product_name" pattern="[a-zA-Z]{4,9}" required> 

// here I added this line that is suppose to do echo the error message: 
<span class="error">* <?php echo $nameErr;?></span> 
Condition: 
<select name="product_cond" required> 
    <option value="" >SELECT</option> 
    <option value="Used" >Used </option> 
    <option value="new" >New</option> 

</select> 

Category: 
<select name="product_cat" required> 
    <option value="" >SELECT</option> 
    <option value="books" >books</option> 
    <option value="Computers" >Computers</option> 
    <option value="Hardware/Tools" >Hardware/Tools </option> 
    <option value="Cars" >Cars</option> 
    <option value="home Appliances" >home Appliances</option> 
</select> 

Region: 
<select name="product_region" required> 
    <option value="Oulu" >Oulu</option> 
    <option value="Turku" >Turku</option> 
    <option value="Helsinki" >Helsinki </option> 
    <option value="Tornio" >Tornio</option> 
    <option value="Tampere" >Tampere</option> 
    <option value="Kemi" >Kemi</option> 

</select> 
Product price: <input type="text" name="product_price" pattern="[0-9]{0,5}" required> 



<input type="submit"> 
</form> 
+0

이 기능이 작동하지 않습니다! – user3463859

+0

내 대답을 편집했습니다. –