2011-03-25 115 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

相关问题