2013-08-18 68 views
0

我試圖驗證PHP中的表單。我已經指示不改變形式本身(例如字段的名稱),並在它有一個下拉列表與此: <option value=""></option>驗證PHP中的下拉列表

我試圖用這個來驗證:

if (!isset($_POST['cboproduit'])){ 
$message.= "Vous devez sélectionner un téléphone <br />";} 

但由於沒有任何值,所以如果我提交空值的表單,它只會保存一個空值。

我怎樣才能以簡單的方式做到這一點?

回答

2

除了檢查,如果該變量設置,您需要檢查,如果它不是空:

if (!isset($_POST['cboproduit']) || $_POST['cboproduit'] === '') { 
    $message .= "Vous devez sélectionner un téléphone <br />"; 
} 
+0

謝謝爲了快速回答!真的很感激:D –

+1

值得注意的是這樣的檢查有一個可能意想不到的副作用:它將字符串「0」視爲空。這裏是[文檔](http://php.net/manual/en/function.empty.php)和[證明](http://ideone.com/ateuBE)。 – Tadeck

+0

@Tadeck謝謝,我已將它更改爲'=='''。 – Barmar

0

您可以使用empty代替issetempty如果變量存在與否還檢查:

if (empty($_POST['cboproduit'])){ 
    $message.= "Vous devez sélectionner un téléphone <br />"; 
} 
0

不同的函數檢查有關變量的不同事情。根據文檔:

  • isset():確定是否設置了變量並且不是NULL。
  • empty():如果變量不存在或者其值等於FALSE,則該變量被視爲空。
  • array_key_exists():如果給定的鍵陣列

所以你的情況在設定返回TRUE,if (empty($_POST['cboproduit']))似乎是最好的生活方式。它將檢測該值是否以某種方式未傳輸(某人可以在提交它之前在瀏覽器中編輯該表單)或選擇空選項。

(請注意,這意味着,有沒有辦法來確定和一個變量,它是null變量之間的差異不存在。)

0

只是一個想法,但空的可能不是因爲價值爲你工作的<option value=""></option>屬性可以設置爲0的第一個元素(1爲第二等),然後這將意味着你永遠無法刪除第0個元素爲0空的檢查,也爲空

if (empty($_POST['cboproduit'])){ 
    $message.= "Vous devez sélectionner un téléphone <br />"; 
}