2014-04-16 5 views
0

데이터베이스에 데이터를 추가하는 양식을 작성 중입니다. 필드가 비어 있거나 유효하지 않은 경우 사용자에게 알려주는 유효성 검사가 있습니다. 일단 모두 유효성이 확인되면 데이터베이스에 제출하고 싶습니다. 현재 사용중인 코드는 데이터의 유효성을 검사 하나 관계없이 제출합니다. 이것은 아마도 내 논리의 결함이며, 그 밖의 문장 일지라도 제대로 작동하지 않는 것 같습니다.PHP가 유효성을 검사 할 때 데이터베이스에 제출

다음은 일부 유효성 검사 및 INSERT 문을 포함하는 코드의 일부입니다.

// Quantity 

if (empty($_POST["qtyAdd"])) 
    { 
    $qtyErr = "Please enter a product quantity"; 
    } 
    else 
if (!is_numeric($year)) 
    { 
    $qtyErr = "Data entered was not numeric"; 
    } 
    else 
if (strlen($number) != 3) 
    { 
    $qtyErr = "The number entered was not 3 digits long"; 
    } 
    else 
    { 
    $qty = test_input($_POST["yearAdd"]); 
    } 

// Featured 

if (empty($_POST["featuredAdd"])) 
    { 
    $featuredErr = "Feature Item?"; 
    } 
    else 
    { 
    $featured = test_input($_POST["featuredAdd"]); 
    } 

//Add to database 

    { 
    $sql = "INSERT INTO tbl_products (product_name, product_description, product_price, product_year, product_show, product_type, product_signed, product_quantity, product_featured, product_img) VALUES ('$name', '$desc', '$price', '$year', '$show', '$cat', '$signed', '$qty', '$featured', $img)"; 
    mysql_query($sql); 
    } 
} 

답변

0

오류가 있는지 확인하는 데 신경 쓰지 않아도됩니다. 그래서 귀하의 검색어는 항상 실행됩니다 :

if (!isset($qtyErr) && !isset($featuredErr)) { 
    $sql = "INSERT INTO tbl_products (product_name, product_description, product_price, product_year, product_show, product_type, product_signed, product_quantity, product_featured, product_img) VALUES ('$name', '$desc', '$price', '$year', '$show', '$cat', '$signed', '$qty', '$featured', $img)"; 
    mysql_query($sql); 
} 
+0

물론입니다. 고맙습니다. – user3521635

+0

질문이 하나 더 있습니다. 내가 한 것처럼 $ qtyErr = $ featuredErr = ""; 오류가 없는지 확인하기 위해 Err이 항상 설정됩니다.이 메서드로 사용할 수있는 isset 이외의 것이 있습니까? – user3521635

+0

'empty()'를 사용할 수 있습니다. 빈 문자열은 true이고, 거기에 오류 메시지가 있으면 false가됩니다. 'if (empty ($ qtyErr) && empty ($ featuredErr)) {' –

관련 문제