2017-11-13 28 views
1

検索バーで検索しているときに、検索キー要素に基づいてページが表示されない場合は、コードキーを検索しているときに検索バーに表示されていて、まだテーブルに一致するページがありません

<?php    
       $total_num_page=2; 
       if (isset($_GET['page'])) 
        { 
         $page_id = $_GET['page']; 
        } 
       else 
        { 
         $page_id = 1; 
        } 
        $search = '' ; 
        if(isset($_POST['search'])) 
        { 
         $search = urldecode($_POST['search']); 
        } 
        else if(isset($_GET['search'])) 
        { 
         $search = urldecode($_GET['search']); 
        } 
       if ($search) 
       { 
         $all_post_query = "select * from files where recieved_by like '%" . $search . "%' or processed_by like '%" . $search . "%' or purpose like '%" . $search . "%' or file_name like '%" . $_SESSION["search"] . "%' order by date desc"; 
         $all_post_run = mysqli_query($con, $all_post_query); 
         $all_post = mysqli_num_rows($all_post_run); 
         $total_page = ceil($all_post/$total_num_page); 
         $page_start_from = ($page_id - 1) * $total_num_page; 
       } 
       else { 
        $all_post_query = "select * from files order by date desc"; 
        $all_post_run = mysqli_query($con, $all_post_query); 
        $all_post = mysqli_num_rows($all_post_run); 
        $total_page = ceil($all_post/$total_num_page); 
        $page_start_from = ($page_id - 1) * $total_num_page; 
        } 

       ?> 

これはテーブルが

<?php 
          if ($search) 
          { 
           $p_query = "select * from files where recieved_by like '%$search%' or processed_by like '%$search%' or purpose like '%$search%' or file_name like '%$search%' order by date desc limit $page_start_from, $total_num_page"; 
          } 
          else 
          { 

           $p_query = "select * from files order by date desc limit $page_start_from, $total_num_page"; 
          } 
          $p_run=mysqli_query($con,$p_query); 
          if(mysqli_num_rows($p_run)){ 
          while($row=mysqli_fetch_array($p_run)) 
          { 
           $c_id=$row['id']; 
           $file=$row['file_name']; 
           $purpose=$row['purpose']; 
           $recieve=$row['recieved_by']; 
           $processed=$row['processed_by']; 
           $address=$row['address']; 
           $contact=$row['contact_no']; 
           $date=$row['date']; 


          ?> 

データをフェッチし、これはページネーションコード

<ul class="pagination"> 
     <?php 
     $search_str = ''; 
     if ($search) { 
      $search_str = "&search=" . urlencode($search); 
     } 
     for ($i = 1; $i <= $total_page; $i++) 
      echo "<li class='" . ($page_id == $i ? 'active' : '') . "'><a href='index.php?page=" . $i . $search_str . "'>$i</a></li>"; 
     ?> 

    </ul> 
ある場所であります

これは、私が検索バーのキーを検索しているときに、そのページの総数が表示されていないページの総数が間違っている場合に表示される問題です。enter image description here

+3

私は、あなたがSESSIONではなくパラメータとしてurlにページnoを保持しておくことをお勧めします。 – tan

+1

セッションが設定されていないかどうかを確認してください。 isset(session ['key'])関数を使用します。 –

+0

@VimukthiGuruge、未設定の場所を教えてください。他のリンクをクリックすると、検索セッションを終了するか、更新する必要があります。 – Raj

答えて

2

これはPOSTからの検索文字列を使用しますあなたがページリンクをクリックするとGETを使う。ヌル文字列を使用しない場合

if (isset($_GET['page'])) { 
     $page_id = $_GET['page']; 
    } else { 
     $page_id = 1; 
    } 
    $search = '' ; 
    if(isset($_POST['search'])) { 
     $search = urldecode($_POST['search']); 
    } 
    else if(isset($_GET['search'])) { 
     $search = urldecode($_GET['search']); 
    } 

ここでは、そのキーワードをクエリに使用しています。

提案:num_rowsを使用する代わりにCOUNT(*)を使用して合計レコードを検索するようにクエリを変更します。あなたのページネーションアペンド検索キーワードでも、ここ

<?php 
if ($search) { 
    $p_query = "select * from files where recieved_by like '%$search%' or processed_by like '%$search%' or purpose like '%$search%' or file_name like '%$search%' order by date desc limit $page_start_from, $total_num_page"; 
} else { 

    $p_query = "select * from files order by date desc limit $page_start_from, $total_num_page"; 
} 

Finaly

if ($search) { 

     $all_post_query = "select * from files where recieved_by like '%" . $search . "%' or processed_by like '%" . $search . "%' or purpose like '%" . $search . "%' or file_name like '%" . $search . "%' order by date desc"; 
     $all_post_run = mysqli_query($con, $all_post_query); 
     $all_post = mysqli_num_rows($all_post_run); 
     $total_page = ceil($all_post/$total_num_page); 
     $page_start_from = ($page_id - 1) * $total_num_page; 
    } else { 
     $all_post_query = "select * from files order by date desc"; 
     $all_post_run = mysqli_query($con, $all_post_query); 
     $all_post = mysqli_num_rows($all_post_run); 
     $total_page = ceil($all_post/$total_num_page); 
     $page_start_from = ($page_id - 1) * $total_num_page; 
    } 

。これにより、ページネーション以外のリンクをクリックするとseachキーワードが緩くなります。

<ul class="pagination"> 
      <?php 
      $search_str = ''; 
      if ($search) { 
       $search_str = "&search=" . urlencode($search); 
      } 
      for ($i = 1; $i <= $total_page; $i++) 
       echo "<li class='" . ($page_id == $i ? 'active' : '') . "'><a href='index.php?page=" . $i . $search_str . "'>$i</a></li>"; 
      ?> 

</ul> 
+0

全てうまく動作していますが、それでもまだ一致していない場合はページの総数が表示され続けます – Raj

+1

「ページ数」を表示するものは表示されません(アンカー1,2,3のコードを見ることができます) 。など)、そして何が "まだ一致していない"ことを意味するのか理解していませんでした。キーを検索しているときに検索バーに – tan

+0

が表示されます。 – Raj

関連する問題