2017-02-10 4 views
1

Я написал простой скрипт страницы, чтобы перебрать динамическую таблицу, которая получает данные из базы данных. Но когда я нажимаю на поиск, страница возвращается пустым без ошибок. Я пытаюсь понять, что происходит без успеха.Php MysQl Search script возвращает пустую страницу

display_table.php

<?php 
    include('session.php'); 
if ($_SESSION['login_user']){ 
    include 'includes/header.php'; 


    $searchQ = "SELECT * FROM companytable"; 


if(isset($_POST['search'])){ 
    $search_term = mysqli_real_escape_string($db, $_POST['search_box']); 
$searchQ .="WHERE title ='{$search_term}' "; 
$searchQ .="OR country ='{$search_term}' "; 
$searchQ .="OR description ='{$search_term}' "; 
$searchQ .="OR timezone ='{$search_term}' "; 
} 
$query = mysqli_query($db, $searchQ) or die(mysqli_error()); 

} 

форма

<form class="form" name="search_form" method="POST" action="display_table.php"> 
     <input id="search_box" style="padding: 2px;" class="" type="text" name="search_box"> 
     <input class="btn btn-default" type="submit" name="search" value="&#128269;"> 
    </form> 

стол

<table> 

    <tr> 
     <th>ID</th> 
    <th>Name</th> 
     <th>Description</th> 
     <th>Type</th> 
    <th>Address</th> 
    <th>Country</th> 
     <th>Time Zone</th> 
    </tr> 

    <?php while($company=mysqli_fetch_array($result)){ ?> 
    <tr> 
     <td data-th="ID"><?=$company['id'];?></a></td> 
     <td data-th="Name"><?=$company['title'];?></td> 
    <td data-th="Description"><?=$company['description'];?></td> 
    <td data-th="Type"><?=$company['type'];?></td> 
    <td data-th="Address"><?=$company['address'];?></td> 
    <td data-th="Country"><?=$company['country'];?></td> 
    <td data-th="Time Zone"><?=$company['timezone'];?></td> 
    </tr> 

    <?php };?> 

</table> 

ответ

1

Вы должны изменить

<?php while($company=mysqli_fetch_array($result)){ ?> 

ссылаться на MySQLi результат вы создали, $query:

<?php while($company=mysqli_fetch_array($query)){ ?> 
+0

же пустой возврат страницы. – Skynet

+0

Вы подтвердили, что созданный '$ searchQ' имеет какие-либо строки в результате? – wogsland

+0

Ну, я сделал тест с '$ searchQ =" SELECT * FROM companytable LIMIT 5 ";', чтобы увидеть, будет ли таблица возвращать только 5 строк за раз, и это работает. Поэтому я думаю, что да. – Skynet

1

Вы можете использовать объектно-ориентированный

<?php 
    include('session.php'); 
if ($_SESSION['login_user']){ 
    include 'includes/header.php'; 

    $query = "SELECT * FROM companytable "; 

    if(isset($_POST['search_box'])){ 
    $search_term = $db->real_escape_string($_POST['search_box']); 

    $query.=" WHERE title ='{$search_term}' 
      OR country ='{$search_term}' 
      OR description ='{$search_term}' 
      OR timezone ='{$search_term}';"; 
    } 

    if(!$s = $db->query($query)){ 
    die($db->error); 
    } 

} 

Таблица

<table> 

    <tr> 
     <th>ID</th> 
     <th>Name</th> 
     <th>Description</th> 
     <th>Type</th> 
     <th>Address</th> 
     <th>Country</th> 
     <th>Time Zone</th> 
    </tr> 

    <?php while($m = $s->fetch_object()){ ?> 
    <tr> 
     <td data-th="ID"><?=$m->id;?></a></td> 
     <td data-th="Name"><?=$m->title;?></td> 
     <td data-th="Description"><?=$m->description;?></td> 
     <td data-th="Type"><?=$m->type;?></td> 
     <td data-th="Address"><?=$m->address;?></td> 
     <td data-th="Country"><?=$m->country;?></td> 
     <td data-th="Time Zone"><?=$m->timezone;?></td> 
    </tr> 
    <?php 
    }; 
    $s->free(); 
    ?> 

</table> 
+0

Теперь я получаю эту Неустранимая ошибка: Невозможно использовать объект типа stdClass как массив – Skynet

+0

@Skynet проверить сейчас, я изменил некоторые переменные. Какую версию php и mysql вы используете? –

+0

Я использую версию 5.6. – Skynet

0

Итак, я решил пойти с sortable.js Он не только заботится о поиске, но и заботится о сортировке строк, нажимая на заголовки. Поэтому, если вы ищете чистое исправление, это будет так.

форма

<form class="form" name="search_form"> <input id="search" style="" class="form-control" type="text" name="search" placeholder="&#128269; Search..."> 

стол

<table id="table" class="sortable" > 

    <thead style="cursor:pointer;"> 
     <th>ID</th> 
    <th>Name</th> 
     <th>Description</th> 
     <th>Type</th> 
    <th>Address</th> 
    <th>Country</th> 
     <th>Time Zone</th> 
</thead> 

<tbody> 
<?php while($company=mysqli_fetch_array($result)){ ?> 
    <tr> 
     <td data-th="ID" sorttable_customkey="2"><?=$company['id'];?></a></td> 
     <td data-th="Name"><?=$company['title'];?></td> 
    <td data-th="Description"><?=$company['description'];?></td> 
    <td data-th="Type"><?=$company['type'];?></td> 
    <td data-th="Address"><?=$company['address'];?></td> 
    <td data-th="Country"><?=$company['country'];?></td> 
    <td data-th="Time Zone"><?=$company['timezone'];?></td> 
    </tr> 
    <?php };?> 
</tbody> 
<tfoot></tfoot> 


</table> 

Поиск сценария

<script src="js/sorttable.js"></script> //load sortable.js 

    <script type="text/javascript"> 
    var $search_rows = $('#table tr'); 
    $('#search').keyup(function() { 
     var val = $.trim($(this).val()).replace(/ +/g, ' ').toLowerCase(); 

     $search_rows.show().filter(function() { 
      var text = $(this).text().replace(/\s+/g, ' ').toLowerCase(); 
      return !~text.indexOf(val); 
     }).hide(); 
    }); 
    </script> 
Смежные вопросы