2016-07-10 11 views
0

こんにちは、私はこの値を選択するためのオプションを持っている検索基準のものを持っているか、またはここでどのような方法ですべての方法を選択するかは、ページングが行われるときに結果を得る方法を手がかりにしていないですか?どのようにページングと連携して検索結果を得ることができますか?

次のページまたは任意のページをクリックすると、ページ番号以外は何も渡されないため、空白のページが表示されます。

は、ここで私は本当にこれであなたの親切に助けをあなたに非常にGREATFULだろう私のコード

<?php 

    $title = clean($_REQUEST['title']); 
    $name = clean($_REQUEST['name']); 
    $description = clean($_REQUEST['description']); 

    $criteria = array(); 

      if($title !='') 
      { 
       $criteria[] = "title = '".$title."'"; 
      }elseif($title =='All') 
       criteria[] = "title = ''"; 
      } 

      if($name !='') 
      { 
       $criteria[] = "name = '".$name."'"; 
      }elseif($name =='All') 
       criteria[] = "name = ''"; 
      } 

      if($description !='') 
      { 
       $criteria[] = "description = '".$description."'"; 
      }elseif($description =='All') 
       criteria[] = "description = ''"; 
    } 

    try { 

    $total = $db->query('SELECT COUNT(*) FROM table WHERE '.implode(' AND ', $criteria).'')->fetchColumn(); 
    global $per_page; 

    $pages = ceil($total/$per_page); 

    $page = min($pages, filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT, array(
     'options' => array(
      'default' => 1, 
      'min_range' => 1, 
     ), 
    ))); 


    $offset = ($page - 1) * $per_page; 
    $start = $offset + 1; 
    $end = min(($offset + $per_page), $total); 


    $stmt = $db->prepare('SELECT * FROM table WHERE '.implode(' AND ', $criteria).' ORDER BY id DESC LIMIT :per_page OFFSET :offset'); 

    $stmt->bindParam(':per_page', $per_page, PDO::PARAM_INT); 
    $stmt->bindParam(':offset', $offset, PDO::PARAM_INT); 
    $stmt->execute(); 

    if ($stmt->rowCount() > 0) { 
     $stmt->setFetchMode(PDO::FETCH_ASSOC); 
     $iterator = new IteratorIterator($stmt); 
     foreach ($iterator as $row) {   

       echo $row['id']; 
     } 

    echo '<div id="pagination"> 
    <div id="pagiCount">'; 
     $prevlink = ($page > 1) ? '<span id="prev"><a href="?page=1" title="First page">First</a></span> <span id="prev"><a href="?page=' . ($page - 1) . '" title="Previous page"><<</a></span>' : ''; 
     $nextlink = ($page < $pages) ? '<span id="next"><a href="?page=' . ($page + 1) . '" title="Next page">>></a></span> <span id="next"><a href="?page=' . $pages . '" title="Last page">Last</a></span>' : ''; 
     echo '<div id="paging"><p><small>', $prevlink, ' Page ', $page, ' of ', $pages, '', $nextlink, '</small></p></div>';   
    echo '</div></div>'; 
    } else { 
     echo '<p>Nothing found.</p>'; 
    } 
} catch (Exception $e) { 
    echo '<p>Nothing found.</p>'; 
} 
?> 

です。歓声

+0

あなたが前と次のリンクをごGET-変数を渡すことによって開始する必要があります。これで、ページ番号を渡すだけで、説明変数、タイトル変数、および名前変数が不足しています。 – 1sloc

+0

@JethroVanThuyneこういう意味ですか? > – rodrix

答えて

0

ページ以外の同じパラメータを使用してクエリ文字列を再生成する必要があります。

だから私はそのようなことがうまくいくと思います。

//regenerate query string with new page 
$cur_params = $_GET; 
unset($cur_params["page"]); 
$cur_url = strtok($_SERVER["REQUEST_URI"],"?") . "?" . http_build_query($cur_params, "", "&"); 
$page_back_url = $cur_url . (empty($cur_params) ? "" : "&") . "page=" . ($page - 1); 
$page_next_url = $cur_url . (empty($cur_params) ? "" : "&") . "page=" . ($page + 1); 
$page_last_url = $cur_url . (empty($cur_params) ? "" : "&") . "page=$pages";  
+0

broしかし、次の前の最初に何が起こるか最後のページオプションは – rodrix

+0

これらのリンクのアンカーへのリンクを追加してください。 –

+0

ありがとうございます。 – rodrix

関連する問題