2013-05-03 117 views
1

我一直在嘗試使用PHP來驗證我的表單。PHP表單數字驗證

表單要求用戶輸入詳細信息,然後在表單驗證完成後輸入數據庫中的表格。

我在窗體中有一個客戶ID字段,我試圖驗證它以確保它有一個值(必填字段),只包含數字字符,正好是6位數字並且是唯一ID (即在數據庫中不存在)。

這是我到目前爲止有:

<body> 

<?php 
$temp = ""; 
$msg = ""; 
$rst = ""; 

if (isset($_POST["submit"])) { 
$number = $_POST["custid"]; 

if(empty($number)) { 
$msg = '<span class="error"> Please enter a value</span>'; 
} else if(!is_numeric($number)) { 
$msg = '<span class="error"> Data entered was not numeric</span>'; 
} else if(strlen($number) != 6) { 
$msg = '<span class="error"> The number entered was not 6 digits long</span>'; 
} else { 
echo "valid"; 
} 

} 

?> 

<h1>Customer Information Collection <br /></h1> 

<form method="POST" action="<?php echo $_SERVER["PHP_SELF"];?>" id="custinfo" > 
<table> 
<tr> 
    <td><label for="custid">Customer ID (integer value): </label></td> 
    <td><input type="text" id="custid" name="custid" value="<?php echo $temp ?>" size=11 /><?php echo $msg; ?></td> 
</tr> 

<tr> 
    <td><label for="customerfname">Customer Frist Name: </label></td> 
    <td><input type="text" id="customerfname" name="fname" size=50/></td> 
</tr> 
<tr> 
    <td><label for="customerlname">Customer Last Name: </label></td> 
    <td><input type="text" id="customerlname" name="lname" size=50/></td> 
</tr> 
<tr> 
    <td><label for="customeraddress">Customer Address: </label></td> 
    <td><input type="text" id="customeraddress" name="custaddress" size=65/></td> 

    <td><label for="suburb"> Suburb: </label></td> 
<td><input type="text" id="suburb" name="suburb"/></td> 
</tr> 
<tr> 
<td> 
State:<select name="state" id="state"> 
    <option value="select">--</option> 
    <option value="ACT">ACT</option> 
    <option value="NSW">NSW</option> 
    <option value="NT">NT</option> 
    <option value="QLD">QLD</option> 
    <option value="SA">SA</option> 
    <option value="TAS">TAS</option> 
    <option value="VIC">VIC</option> 
    <option value="WA">WA</option> 
    </select> 
</td> 
<td><label for="postcode"> Post Code: </label><input type="text" id="postcode" name="postcode" size=4/></td> 
</tr> 
</table> 
<p><input type="submit" name="submit" value="Save Data"/>&nbsp;<input type="reset" value="Clear Form" /> 
</tr> 

</form> 

</body> 

我遇到的問題是,當我故意輸入不正確的值到客戶ID字段,它並沒有給我任何錯誤。它只是處理不正確的值,就好像它們是正確的。

任何幫助都會非常棒!如果需要更多信息,請詢問。

+0

這可以幫助你.. http://stackoverflow.com/questions/18082/validate-numbers-in-javascript-isnumeric – reikyoushin 2013-05-03 15:07:33

+0

@reikyoushin - 閱讀問題 – Ryan 2013-05-03 15:08:30

+0

是不是我的,如果($號< 6 || $ number> 6){檢查它是否有6位數的正確條件? – user2273149 2013-05-03 15:11:01

回答

10

這裏是你的驗證簡化,並用正確的操作來檢查id的長度。

if(empty($number)) { 
    $msg = '<span class="error"> Please enter a value</span>'; 
} else if(!is_numeric($number)) { 
    $msg = '<span class="error"> Data entered was not numeric</span>'; 
} else if(strlen($number) != 6) { 
    $msg = '<span class="error"> The number entered was not 6 digits long</span>'; 
} else { 
    /* Success */ 
} 
+0

你的答案似乎是正確的,但由於某種原因,當我故意輸入不正確的值時,我的表單不會返回任何錯誤,它只是處理它。 – user2273149 2013-05-03 15:19:27

+0

正在顯示$味精? – Ryan 2013-05-03 15:20:59

+0

哦哇對不起,我已經設置它回聲$ tempmsg而不是$味精,但我現在已經改變了,它現在顯示一個錯誤,但它只顯示「請輸入一個值」,只要我輸入任何類型的值,包括正確的值。 – user2273149 2013-05-03 15:24:36

0

在你的情況發生這種情況。

1)檢查空字符串

2)Cheking數字串,如果是數字,然後檢查長度。

即使您的驗證失敗,例如,如果您輸入無效詳細信息,您的驗證將捕獲錯誤 並將其放入$ msg變量中,但現在您不使用該$ msg變量,如果您回顯該變量,您可以驗證它工作正常與否。

因此做

echo $msg; 

,以驗證您的驗證。

+0

我認爲你可以通過放置代碼示例來改進你的答案。 – 2018-01-15 19:47:22

0
if (isset($_POST['add-contact'])) { 

    $addPhone= $_POST['phone_no']; 
    $addCell = $_POST['cell_no']; 
    $addEmail= $_POST['email_address']; 

    $addPhone = trim($addPhone); 
    $addCell = trim($addCell); 
    $addEmail = trim($addEmail); 


    if (empty($addPhone) && empty($addCell) && empty($addEmail)) { 
     message("danger","At least one field is required..."); 
    } elseif (strlen($addPhone) > 13) { 
     message("danger","Phone No length is too large greater then 13..."); 
    } elseif (strlen($addCell) > 15) { 
     message("danger","Cell No length is too large greater then 15..."); 
    } elseif (!is_numeric($addPhone)) { 
     message("danger","Invalid phone no ,only numbers are allowed.."); 
    } elseif (!is_numeric($addCell)) { 
     message("danger","Invalid cell no ,only numbers are allowed.."); 
    } else { 
     $q = "insert into contact_tbl(phone_no,cell_no,email)values('$addPhone','$addCell','$addEmail')"; 
     mysql_query($q, $connect); 
     message("info", "Contact details added successfully..."); 
    } 
}