【问题标题】:Combine two separate input fields in search with php将搜索中的两个单独的输入字段与php结合起来
【发布时间】:2016-09-11 04:28:45
【问题描述】:

我有两个单独的输入字段,一个用于搜索姓氏,另一个用于搜索 db。

<li><label>Surname: </label><input type="text" name="surname" id="search_text" required autocomplete="off" /></li>
<li><label>Name:  </label><input type="text" name="name" id="name" required autocomplete="off"/></li>

    

<script> // first input live search 
            $(document).ready(function() {
        
        $("#search_text").keyup(function () {
                   var txt = $(this).val();  
                  
        setTimeout(function() { 
             if(txt.length>=3)  
                   {  
                        $.ajax({  
                             url:"fetchsurname.php",  
                             method:"post",  
                             data:{search:txt},  
                             dataType:"text",
                            
                             success:function(data)  
                             {  
                                  $('#searchresults').html(data);  
                             }  
                      });  
                   }  
                   else  
                   {  
                        $('#searchresults').html('');                 
                   }  
            }, 2000); // 1 sec delay to check.
        
            }); // End of  keyup function
        
            }); // End of document.ready

    </script>
<script> // second input live search    
    $(document).ready(function() {

$("#name").keyup(function () {
           var txt = $(this).val();  
          
setTimeout(function() { 
     if(txt.length>=3)  
           {  
                $.ajax({  
                     url:"fetchname.php",  
                     method:"post",  
                     data:{search:txt},  
                     dataType:"text",
                    
                     success:function(data)  
                     {  
                          $('#searchresults').html(data);  
                     }  
              });  
           }  
           else  
           {  
                $('#searchresults').html('');                 
           }  
    }, 2000); // 1 sec delay to check.

    }); // End of  keyup function

    }); // End of document.ready
</script>

使用 php fetchname 和 fetchsuurname 两个单独的文件搜索数据库

"SELECT * FROM base WHERE name LIKE '".$_POST["search"]."%'"

"SELECT * FROM base WHERE surname LIKE '".$_POST["search"]."%'"

我的问题是每个字段都在表中搜索自己的值,而不是与第一个字段结合来显示结果。

【问题讨论】:

    标签: php jquery mysql ajax


    【解决方案1】:

    根据您的 html,您应该更改 jQuery 和以下代码:

    <li><label>Surname: </label><input type="text" name="surname" id="search_text" required autocomplete="off" /></li>
    
    <li><label>Name:  </label><input type="text" name="name" id="search_name" required autocomplete="off"/></li>
    
    <script> // first input live search 
    var keyupfunction = function () {
            var search_text = $("#search_text").val();  
            var search_name = $("#search_name").val();  
    
            setTimeout(function() { 
                if(txt.length>=3)  
                {  
                    $.ajax({  
                        url:"fetchsurname.php",  
                        method:"post",  
                        data:{"surname":search_text, "name":search_name},  
                        dataType:"text",
    
                        success:function(data)  
                        {  
                            $('#searchresults').html(data);  
                        }  
                    });  
                }  
                else  
                {  
                    $('#searchresults').html('');                 
                }  
            }, 2000); // 1 sec delay to check.
    
        }
    
    $(document).ready(function() {
        $("#search_text").keyup(keyupfunction); 
        $("#search_name").keyup(keyupfunction); 
    });
    

    您可以使用 from 或在您的查询中:

    SELECT * FROM base WHERE name LIKE '".$_POST["name"]."%' AND surname LIKE '".$_POST["surname"]."%'
    

    你也可以使用 from 或者如果你不希望这两个字段都有值

    还有另一种解决方案,您可以为 2 个不同的表合并 2 个选择

    SELECT * FROM base WHERE name LIKE '".$_POST["name"]."%'
    union all
    SELECT * FROM base WHERE surname LIKE '".$_POST["surname"]."%'
    

    【讨论】:

    • 我是否也在 ajax 搜索中更改某些内容?
    • 不,你应该用第一个来改变你的查询,第二个是你想要从两个不同的表中得到结果的时间
    • 现在每个输入字段都单独搜索姓氏或名称不起作用。我希望名为“name”的第二个字段取第一个字段的值,并仅搜索与第一个字段匹配的名称,例如。如果姓是 Gates,则第二个字段应搜索 Bill,结果为 Bill Gates。现在它显示的第一个字段是每个有姓或名盖茨的人,第二个也是每个有姓或名比尔的人
    • 请将您的 html 添加到您的问题中
    • 如果你想要像比尔盖茨这样的结果,你必须在第一个查询中将结果与 AND 结合起来,比如 SELECT * FROM base WHERE name LIKE '".$_POST["search"]."% ' AND surname LIKE '".$_POST["search"]."%'
    猜你喜欢
    • 2020-07-07
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 2021-09-28
    • 2020-10-10
    相关资源
    最近更新 更多