2017-04-03 82 views
-5

我以php的形式創建了搜索過濾功能。從表中獲取來自mysql的數據。所有查詢和其他人寫得很好。但搜索功能不起作用。PHP搜索過濾功能不起作用

<?php 
    require_once 'init.php'; 
    include 'header.php'; 
    include 'navigation.php'; 

    if(isset($_POST['search'])){ 
     $valSearch = $_POST['searchButton']; 
     $query = "SELECT * FROM mainTable WHERE CONCAT ('id','commandName','commandDesc','status') LIKE '%".$valSearch."%'"; 
     $featured = filterTable($query); 
    }else{ 
     $query = "SELECT * FROM mainTable"; 
     $featured = filterTable($query); 
    } 

    function filterTable($query){ 
     $connect = mysqli_connect("localhost","root","","linuxcommanddictionary"); 
     $filter_result = mysqli_query($connect,$query); 
     return $filter_result; 
    } 

?> 
<form action = "index.php" method="post"> 
    <div class="container"> 
     <h3>Linux Fedora OS</h3><hr> 
     <button type="submit" name ="searchButton" class="btn btn-default"><span class="glyphicon glyphicon-search"></span></button> 
     <input type="text" name = "search" class="form-control" placeholder="Хайх үгээ бичнэ үү"> 
     <div class="col-md-12"> 
      <div class="row"> 
       <table class="table table-bordered"> 
        <thead> 
         <th>ID</th> 
         <th>Command Name</th> 
         <th>Command Description</th> 
         <th>Status</th> 
        </thead> 
        <tbody> 
         <?php while($result = mysqli_fetch_assoc($featured)): ?> 
         <tr> 
          <td><?=$result['id']; ?></td> 
          <td><?=$result['commandName']; ?></td> 
          <td><?=$result['commandDesc']; ?></td> 
          <td><?=$result['status']; ?></td> 
         </tr> 
         <?php endwhile; ?> 
        </tbody> 
       </table> 
      </div> 
     </div> 
    </div> 
</form> 
<?php 
    include 'footer.php'; 
?> 
</body> 
</html> 

這是數據庫結構。

create table if not exists mainTable(
    id int auto_increment, 
    commandName varchar(255), 
    commandDesc varchar(255), 
    status int(2), 
    primary key(id) 
) 
+0

它不工作是不是從開發者的一個很好的解釋

function filterTable($query){ global $connect; $connect = mysqli_connect("localhost","root","","linuxcommanddictionary"); $filter_result = mysqli_query($connect,$query); // fetch results here as mysqli_query returns true/false. $final_results = array(); while($row=mysqli_fetch_array($filter_result,MYSQLI_NUM)){ $final_results[] = $row; } return $final_results; } 

3-轉。你會得到什麼錯誤? – Akintunde007

+1

也似乎你需要通過你的連接變量作爲你的過濾器表函數的全局變量 – Akintunde007

+0

沒有出現任何錯誤。 – ARLEQUINA

回答

0

,因爲你說你沒有任何錯誤,請嘗試以下操作:

1-通過您的phpmyadmin手動運行查詢,看看你得到任何結果。

2-將您的連接變量作爲全局變量進行PAss。瞭解更多關於變量scopes here更好地理解這些概念所涉及的使用error_reporting,看是否發生了任何事情

0

正如在評論中提到,要調用函數內部的mysqli連接,然後索要mysqli_fetch_assoc()的函數的「範圍」之外。

  1. 學習範圍http://php.net/manual/en/language.variables.scope.php

您可以 -move while循環的函數中,並返回一個數組的「複製」(記憶吸了)。 - 或 - 在全局範圍內創建連接器,並在函數中調用'global'來獲取數據(cpu吸取) - 或者 - 將所有內容全部移到全局範圍內。

+0

你的問題缺乏很多,我甚至試圖編輯它,你沒有足夠的'內容'甚至被編輯。請做好你的功課,這樣我們可以更好地幫助你。 https://stackoverflow.com/help/how-to-ask。 –

+1

謝謝!理解:) – ARLEQUINA