如何在没有输入的情况下进行搜索

时间:2015-07-23 05:30:24

标签: php mysql

我正在搜索栏上,其旁边有一个连接到数据库的按钮。单击按钮,它将在搜索栏中获取数据,搜索数据库并显示结果。到目前为止这是有效的。

我无法弄清楚即使搜索栏中的数据丢失,如何进行搜索。例如,用户放置" ma"在搜索栏中。它仍然会显示" mark"," marge"," may"和#34; ma"。怎么做?

index.php(搜索栏)

<SCRIPT>
        function loadSearch()
        {
            var xmlhttp;
            if (window.XMLHttpRequest)
                  {// code for IE7+, Firefox, Chrome, Opera, Safari
                  xmlhttp=new XMLHttpRequest();
                  }
            else
                  {// code for IE6, IE5
                  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
                  }
            xmlhttp.onreadystatechange=function()
              {
                  if (xmlhttp.readyState==4 && xmlhttp.status==200)
                    {
                    document.getElementById("myDivs").innerHTML=xmlhttp.responseText;
                    }
              }
            var bar = document.getElementById('sbar').value;

            xmlhttp.open("GET","search.php?search="+bar,true);  
            xmlhttp.send(); 
        }
</SCRIPT>

<span class="searchbox">    
            <input type="text" class="searchbar" id = "sbar" autocomplete="off" placeholder="Search for site..." autocorrect="off" autocapitalize="off">

            </input>
            </span>

的search.php

<?php
        $getsearch = $_GET['search'];
            $conn = mysqli_connect("localhost", "root", "", "test1");

            // Check connection
        if (!$conn) {
            die("Connection failed: " . mysqli_connect_error());
                }

            $today = date("Y-m-d");
            $sql = "SELECT name, COUNT(*) as Referrals,
            SUM(CASE WHEN leadstatus = 'Hired' THEN 1 ELSE 0 END) as Hired,
            SUM(CASE WHEN leadstatus = 'Failed' THEN 1 ELSE 0 END) as Failed
            FROM table1
            WHERE name > '' AND name = '".$getsearch."' AND month(date) = MONTH(NOW()) AND year(date) = YEAR(NOW())
            GROUP BY name 
            ORDER BY Referrals DESC";
            $result = mysqli_query($conn, $sql);
        ?>

2 个答案:

答案 0 :(得分:4)

在你的sql中将.Name运算符替换为=并使用部分匹配符号LIKE这里我将%放在两边,以便搜索字符串中的任何位置。

如果仅在左侧或右侧使用取决于您的结果也会因搜索条件而异。

%

答案 1 :(得分:0)

在查询中的where语句中使用LIKE而不是=

Where name like '%ma%'

会让你搜索包含ma里面的名字。

Where name like '%$getsearch%' 

在您的特定代码中