MySQL / PHP:连接两个单独的搜索表单

时间:2014-12-02 13:28:17

标签: php mysql

我的情况: 我有两个不同的形式。一种常见的搜索表单,用户可以按名称/描述搜索产品,另一种表单可以让用户按位置搜索产品(邮政编码和城市)。

这是我搜索表单的html:

<form name="searchform" method="post" action="index.php?go" class="searchform">            
               <input type="text" name="search" value="" placeholder="Suchen..." class="field_search" id="tags"> 
               </form> 

这是我的位置搜索表单的html:

<form class="location" method="post" action="index.php?go_location">
           <input type="image" src="img/location/location.png" width="30" height="30" id="location_image" title="Ortung aktivieren"/>
           <input type="text" size="18" placeholder="PLZ, Ort" name="location" id="location" title="Standort angeben"/>
           <input type="image" name="" value="" src="img/location/go.png" width="30" height="30" id="location_submit"/>
      </form>

和相应的php:

if(isset($_POST['search'])){
if(isset($_GET['go'])){
if(preg_match("/[A-Z | a-z]+/", $_POST['search'])){
$input=$_POST['search'];

$currently_searching = true;

//connect to db

$sql="SELECT * FROM table WHERE Name LIKE '%".$input."%' OR Description LIKE '%".$input."%'";

//echo results
}}}}

elseif(isset($_POST['location'])){
if(isset($_GET['go_location'])){
$input_location=$_POST['location'];

$currently_locationing = true;

$sql="SELECT * FROM table WHERE Postcode LIKE '%".$input_location."%' OR City LIKE '%".$input_location."%' OR Combined LIKE '%".$input_location."%' OR Combined2 LIKE '%".$input_location."%'";

//echo results
}}}

现在,单独,它们运作良好。 我想要实现的是将这两个表单连接起来,让已经搜索某个字符串的用户(通过公共搜索表单)使用位置搜索表单将结果缩小到与给定邮政编码相对应的结果。 ...

我希望这很清楚。我想的是:如果用户使用公共搜索表单,

$currently_searching

变量变为&#34; true&#34;,所以如果此变量为真,则用户正在使用位置搜索表单,然后连接它们。所以我尝试在php语句中添加这样的东西:

elseif(isset($_POST['location']) && $currently_searching == true){
if(isset($_GET['go_location']) && $currently_searching == true){
if($currently_searching == true){
$input_location=$_POST['location'];

$currently_locationing = true;

//connect to db

$sql="SELECT * FROM table WHERE (Name LIKE '%".$input."%' OR Description LIKE '%".$input."%') AND (Postcode LIKE '%".$input_location."%' OR City LIKE '%".$input_location."%' OR Combined LIKE '%".$input_location."%' OR Combined2 LIKE '%".$input_location."%')";

//echo results
}}}}

虽然它没有用。我很感激一些帮助的人!提前谢谢。

1 个答案:

答案 0 :(得分:1)

这是一个小技巧。将ID locationForm添加到您的位置表单,将searchForm添加到您的搜索表单中,如下所示:

<form id="locationForm" class="location" method="post" action="index.php?go">
    <input type="image" src="img/location/location.png" width="30" height="30" id="location_image" title="Ortung aktivieren"/>
    <input type="text" size="18" placeholder="PLZ, Ort" name="location" id="location" title="Standort angeben"/>
    <input type="image" name="" value="" src="img/location/go.png" width="30" height="30" id="location_submit"/>
</form>

<form id="searchForm" name="searchform" method="post" action="index.php?go" class="searchform">            
    <input type="text" name="search" value="" placeholder="Suchen..." class="field_search" id="tags"> 
</form> 

然后添加此javascript:

<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script>

    $(document).on('submit', '#locationForm, #searchForm',function(e){

        var locationInput = $('#locationForm input[name="location"]').clone();
        locationInput.attr('type','hidden');

        var searchInput = $('#searchForm input[name="search"]').clone();
        searchInput.attr('type','hidden');

        $('#locationForm').prepend(searchInput);
        $('#searchForm').prepend(locationInput);
    });
</script>

在提交之前,javascript会将搜索字段添加到位置表单中,反之亦然。因此,无论何时提交其中一个表单,您都将始终拥有这两个值。

修改

在你的corresponding.php中,如果需要两个单独的查询,你可以使用类似的东西。

if(isset($_POST['search']))
{
    $sql="SELECT * FROM table WHERE Name LIKE '%".$input."%' OR Description LIKE '%".$input."%'";
    //Execute query
    //Fetch results
}

if(isset($_POST['location']))
{
    $sql="SELECT * FROM table WHERE Postcode LIKE '%".$input_location."%' OR City LIKE '%".$input_location."%' OR Combined LIKE '%".$input_location."%' OR Combined2 LIKE '%".$input_location."%'";
    //Execute query
    //Fetch results 
}

//Combine results of search and location query

//echo results

或者,如果可以执行一个查询,您可以使用:

if(isset($_POST['search']) && isset($_POST['location']))
{
    $sql="HERE YOUR QUERY WHERE YOU CAN USE $_POST['search'] AND $_POST['location']";
    //Execute query
    //Fetch results
}

//Combine results of search and location query

//echo results