2017-04-03 20 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

なれば、それは動作しません見にerror_reportingのターンオンを、開発者から良い説明ではありません。どのようなエラーが出ますか? – Akintunde007

+1

また、フィルタテーブル関数のグローバル変数として接続変数を渡す必要があるようです。 – Akintunde007

+0

エラーは表示されません。 – ARLEQUINA

答えて

0

あなたはすべてのエラーを持っていないと述べているので、次のことを試してください。

1 - あなたのphpMyAdminを経由して手動でクエリを実行し、あなたがどんな結果を得るかどうかを確認します。

2接続変数をグローバル変数として渡します。より良い概念を理解するために、可変scopes hereの続きを読む

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-関わる何かがアップ

0

コメントで述べたように、あなたは、関数の「範囲」外)(mysqli_fetch_assocを求めるその後、関数内mysqliの接続を呼び出すとされています。

  1. あなたは (メモリが吸う)あなたの関数内であなたのwhileループを-move、配列の「コピー」を返すことができる範囲http://php.net/manual/en/language.variables.scope.php

を学びます。 - または - グローバルスコープでコネクタを作成し、データをフェッチするために関数内で 'global'を呼び出します(cpuは吸い上げます)。 - または - グローバルスコープ内のすべてのすべてをtohetherに移動します。

+0

あなたの質問には欠けています、私はそれを編集しようとしましたし、あなたは編集さえするための十分な 'コンテンツ'がありません。私たちがあなたを助けるためにあなたの宿題をしてください。 https://stackoverflow.com/help/how-to-ask。 –

+1

ありがとう!理解された:) – ARLEQUINA

関連する問題