2013-03-27 2 views
1

비슷한 질문을했지만 무용지물로 검색 했으므로 다른 사람이 도울 수 있기를 바랍니다.Zend Paginator를 사용하여 검색 결과에 페이지 매기기 적용하기

젠드 프레임 워크 (1.12)를 사용하여 만든 사이트의 검색 결과를 페이지 매김하는 데 문제가 있습니다. 항목을 검색 할 수 있으며 페이지 매김도 이루어졌지만 다음 페이지로 이동하려면 클릭하면 모든 검색 결과가 손실됩니다. 코드는 URL에? page = 2 e.t.c를 추가하지만 코드는 검색 항목을 잃습니다.

아마도 세션이나 Zend_Session을 사용하여 가능한 한 질문을 읽었지만 현재는 조금 잃어 버렸습니다! PHP에 비교적 익숙하지 않습니다. 이건 내 다른 페이지에 포함 된 검색 form.php (XHTML)

<?php 
// Search Form 
?> 
<div id="search"> 
    <h4 style="margin-bottom:20px;">Search</h4> 
    <form name="prodSearch" action="listing-search.php" method="post"> 
     <input type="text" name="searchitems" id="searchitems" /> 
     <input type="submit" name="search_items" id="search_items" value="Go" /> 
    </form> 
</div> 

-

첫째 여기 내 검색 양식입니다. 쿼리에 $ _POST, 당신은 멀리 탐색 링크를 클릭 할 때 $ _POST를에 저장된 데이터를 잃어 버릴 만 $에 무엇 유지를 전달되기 때문에이

<?php 
require_once('admin/scripts/library.php'); 
require_once('admin/scripts/db_definitions.php'); 
try { 
?> 
<!-- HTML Doc Type, Head removed e.t.c --> 
<div id="listing-col-main"> 
<div id="all-cars"> 
    <h4>Search Results</h4> 
</div> 
<!-- Listings --> 
<?php 
    $query = $_POST['searchitems']; 
    $min_length = 3; 
    if (strlen($query) >= $min_length) { 
     $query = htmlspecialchars($query); 
     $query = mysql_real_escape_string($query); 
     $raw = searchItems($dbread, $query); 
     $paginator = Zend_Paginator::factory($raw); 
      if (isset($_GET['page'])) { 
       $paginator->setCurrentPageNumber($_GET['page']); 
      } 
      $paginator->setItemCountPerPage(8); 
      $paginator->setPageRange(3); 
      $count = $paginator->getTotalItemCount(); 
      if ($count > 0) {   
       foreach ($paginator as $results) { // repeat all results ?> 
<?php 
       $item_id = $results['item_id']; 
       $photos = getRelatedPhotos2($dbread, $item_id); 
       ?> 
<div class="product-listing"> 
    <div class="product-listing-image"> 
    <?php foreach ($photos as $photo) { //repeat ?> 
    <img src="image_upload/<?php echo $photo['filename']; ?>" width="75" alt="" /> 
    <?php } ?> 
    </div> 
    <div class="product-listing-title"> 
    <h4><?php echo $results['type_name']; ?> - <?php echo $results['item_make'] . ' ' . $results['item_model']; ?> </h4> 
    </div> 
    <div class="product-listing-details"> 
    <p>YEAR: <?php echo $results['item_year']; ?> FUEL: <?php echo $results['item_fuel']; ?> TRANS: <?php echo $results['item_transmission']; ?> MILEAGE: <?php echo $results['item_mileage']; ?> </p> 
    </div> 
    <div class="product-listing-viewmore"><a href="itempage.php?item_id=<?php echo $results['item_id']; ?>">More Info</a></div> 
</div> 
<?php } ?> 
<!-- 8 products per page --> 
<div id="product-listing-pagination"> 
    <?php 
    $pages = $paginator->getPages('Elastic'); 
    if (isset($pages->previous)) { 
echo '<a href="' . $_SERVER['PHP_SELF'] . '?page=' . $pages->previous . '">Prev</a>'; 
    } 
    foreach ($pages->pagesInRange as $page) { 
if ($page != $pages->current) { 
    echo " <a href='" . $_SERVER['PHP_SELF'] . "?page={$page}'>$page</a>"; 
} else { 
    echo ' ' . $page; 
} 
    } 
    if (isset($pages->next)) { 
echo ' <a href="' . $_SERVER['PHP_SELF'] . '?page=' . $pages->next . '">Next</a>'; 
    } 

    ?> 
</div> 
<?php } else { ?> 
<div id="noresults"> <?php echo "No results found for " . $query; ?> </div> 
<?php } 
    } ?> 
</div> 
<div id="col-right"> 
<?php include("search-usedcars.php"); ?> 
<!-- End of Main Search --> 
<div id="latest-news"> 
    <h3>Latest News</h3> 
    <?php include("latestnews.php"); ?> 
</div> 
</div> 
<div class="clear"></div> 
<div id="footer-bar"> <a href="#">Designed by</a> </div> 
</div> 
</body> 
</html> 
<?php 
} catch (Exception $e) { 
echo $e->getMessage(); 
} 
?> 

답변

0

을 다음과 같이 목록-search.php은이다 _도망. 검색 양식 메서드를 $ _GET으로 변경하고 &searchitems="'.$query.'"을 탐색 링크에 모두 추가하거나 $ _SESSION에 저장하거나 메서드 게시물이있는 양식으로 둘러싸인 단추로 탐색 링크를 변경하고 searchitemspage에 숨겨진 필드를 포함 할 수 있습니다. 검색 양식 북마크를 허용하고 복잡성을 피할 수 있도록 검색 양식 메서드를 변경하는 것이 좋습니다.

+0

고마워요. 나는 그것이 단순한 무언가 일 줄 알았다. 그러나 나는 그것에 의해 눈이 멀었다. 메소드를 GET으로 변경하고 링크를 수정하면 사라집니다. –