2016-07-10 2 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 이런 뜻인가요? & title="'.$_GET'[title'].'">> – 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

하지만 다음 이전에 어떻게 될지 처음으로 마지막 페이지 옵션? – rodrix

+0

이 링크의 앵커에 대한 내 링크를 추가하십시오 .. –

+0

감사합니다. – rodrix

관련 문제