2012-04-19 52 views
0

我有一個php表單,它將信息添加到我的sql數據庫中,我需要它只接受文本框中的數字。如何向我的表單添加驗證?

這是我的PHP形式

<form id="MakeBid" action="MakeBid.php" method="POST"> 
    <input type="hidden" name="propertyID" value="1" /> 
    <div>Bid Now 
     <input type="text" name="pricesoldfor" /> 
    </div> 
    <input id="submit" input type="submit" value="Submit" /> 
</form> 
+4

服務器端或客戶端驗證?你有什麼嘗試?你究竟在哪裏遇到問題? – JJJ 2012-04-19 10:42:27

+0

這將是事物的客戶端,我在服務器端進行了驗證,如果客戶插入了字母,只需要顯示一條錯誤消息 – Jobbo05 2012-04-19 12:21:28

回答

1

客戶端進行反饋,而不加載,喲ü可以做這樣的事情

<form [...] onsubmit="if(!this.pricesoldfor.match(/\d+/)) { 
    alert('Please enter only numbers for the price!'); return false; 
}"> 

(我寫這個例子在線 - 爲您的形式將可能是更大的,我勸你不要使用屬性的onsubmit,而是附加一個適當的事件處理程序。看看preventDefault()以及這通常是return false一個更好的選擇。)

你將真正需要做在你PHP(服務器端進行驗證),這是唯一的號碼,你保存之前到數據庫。例如像這樣:

if((string)(int)$input === $input) { /*was a number*/ } else { /*was not a number*/ } 

請記住這兩個將只允許全數字(整數),所以沒有「35.43」或類似。看看is_numeric()

1

您可以使用JavaScript進行客戶端驗證。這不是非常安全,但其速度很快,可用於提供響應式用戶體驗,但應始終使用服務器端驗證進行備份。

您可以使用正則表達式的組合和的if/else或case /開關,看看有什麼字符已經鍵入英寸

if (!preg_match("/^[0-9]", $textfield)) 
// display error message 
1
$num = 123456; 
if(!filter_var($num, FILTER_VALIDATE_INT)) 
{ 
echo("Not number"); 
} 
else 
{ 
echo("Number"); 
}