2011-03-25 70 views
1

我想使用PHP和mongodb使用表單輸入執行查詢。使用表單數據作爲輸入的條件查詢

<form method="post" action="search.php"> 
<tr><td>Firm</td><td><input type="text" name="firm" /></td></tr> 
<tr><td>City</td><td><input type="text" name="city" /></td></tr> 
<tr><td>State</td><td><input type="text" name="state" /></td></tr> 
<tr><td colspan="2" align="center"><input type="submit" value="Search" /></td></tr> 
</form> 

如果所有的表單字段都被填充了,我可以很容易地做到這一點

extract($_POST); 
$query = array("firm" => $firm, "city" => $city, "state" => $state); 
$fields = array("firm"); 
$cur = $collection->find($query,$fields); 

(中的search.php頁)但是,如果一個或多個字段爲空什麼?有沒有簡單的方法來構建查詢,只包含非空字段?

感謝,

麥克德莫特

+0

關於如何做到這一點,你有什麼想法?你到目前爲止嘗試了什麼? – markus 2011-03-25 18:35:09

+0

對不起,我嘗試使用if語句和array_push來追加查詢字符串,但似乎沒有工作。像這樣,if(empty($ firm))$ query = array_push($ query,「firm」=> $ firm)。我的報價可能會搞砸了。 – mcdermott 2011-03-25 18:38:31

+0

爲什麼PHP開發人員如此粗暴? – Will 2011-03-25 19:01:06

回答

0

什麼:

$query = array(); 

foreach ($_POST as $key => $value) 
{ 
    if (isValid($value)) 
    { 
     $query[$key] = $value; 
    } 
} 

這種方式,你只需要確保該表單字段名稱是相同的數據源的字段名。當然,您可以在循環遍歷已驗證的數組之前進行驗證。

+0

非常感謝markus。我會試一試。 – mcdermott 2011-03-25 18:53:36

+0

請注意,您必須編寫自己的驗證函數isValid(),如果輸入有效,則返回TRUE,否則返回FALSE。 – markus 2011-03-25 18:54:36

+0

明白了。再次感謝。 – mcdermott 2011-03-25 18:56:23

相關問題