2010-05-15 2 views
2

У меня есть форма поиска, в которой пользователь вводит ключевое слово, и результаты отображаются с разбивкой по страницам. все работает отлично, за исключением того, что когда пользователь нажимает кнопку «Далее», панель разбиения на страницы также исчезает, когда страница загружается для извлечения данных через ajax.pagination panel должен оставаться статическим

Как сделать панель разбиения на страницы статической, в то время как данные извлекаются?

search.html:

<form name="myform" class="wrapper"> 
     <input type="text" name="q" id="q" onkeyup="showPage();" class="txt_search"/> 
     <input type="button" name="button" onclick="showPage();" class="button"/> 
     <p> </p> 
     <div id="txtHint"></div> 

    </form> 

Аякса:

var url="search.php"; 
url += "?q="+str+"&page="+page+"&list="; 
url += "&sid="+Math.random(); 
xmlHttp.onreadystatechange=stateChanged; 
xmlHttp.open("GET",url,true); 
xmlHttp.send(null); 

function stateChanged(){ 
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){ 
document.getElementById("txtHint").innerHTML=xmlHttp.responseText; 
} //end if 
} //end function 

search.php:

$self = $_SERVER['PHP_SELF']; 
      $limit = 3; //Number of results per page 
      $adjacents = 2; 
      $numpages=ceil($totalrows/$limit); 

      $query = $query." ORDER BY idQuotes LIMIT " . ($page-1)*$limit . ",$limit"; 
      $result = mysql_query($query, $conn) 
      or die('Error:' .mysql_error()); 
?> 

<div class="search_caption">Search Results</div> 
<div class="search_div"> 
<table class="result"> 
    <?php while ($row= mysql_fetch_array($result, MYSQL_ASSOC)) { 
     $cQuote = highlightWords(htmlspecialchars($row['cQuotes']), $search_result); 
     ?> 
     <tr> 
     . . .display results. . . 
     </tr> 
    <?php } ?> 
</table> 
</div> 

<hr> 
<div class="searchmain"> 
<?php 
    //Create and print the Navigation bar 
     $nav=""; 
     $next = $page+1; 
     $prev = $page-1; 
     if($page > 1) { 
      $nav .= "<a onclick=\"showPage('','$prev'); return false;\" href=\"$self?page=" . $prev . "&q=" .urlencode($search_result) . "\">< Prev</a>"; 

      $first = "<a onclick=\"showPage('','1'); return false;\" href=\"$self?page=1&q=" .urlencode($search_result) . "\"> << </a>" ; 
     } 

     else { 
      $nav .= "&nbsp;"; 
      $first = "&nbsp;"; 
     } 

     for($i = 1 ; $i <= $numpages ; $i++) { 
      if($i == $page) { 
       $nav .= "<span class=\"no_link\">$i</span>"; 
      }else{ 
       $nav .= "<a onclick=\"showPage('',$i); return false;\" href=\"$self?page=" . $i . "&q=" .urlencode($search_result) . "\">$i</a>"; 
      } 
     } 

     if($page < $numpages) { 
      $nav .= "<a onclick=\"showPage('','$next'); return false;\" href=\"$self?page=" . $next . "&q=" .urlencode($search_result) . "\">Next ></a>"; 

      $last = "<a onclick=\"showPage('','$numpages'); return false;\" href=\"$self?page=$numpages&q=" .urlencode($search_result) . "\"> >> </a>"; 
     } 

     else { 

      $nav .= "&nbsp;"; 
      $last = "&nbsp;"; 
     } 

     echo $first . $nav . $last; 
?> 

</div> 

ответ

0

Не уверен, что вы имеете в виду. Просто измените таблицу результатов не на всю страницу в функции showPage.

+0

уточните пожалуйста. – input

+0

Ну, если вы сделаете вызов AJAX в showPage(), то после получения данных вы можете изменить состояние активной страницы с помощью JS и только изменить таблицу (вы можете захотеть использовать ее для более удобного поиска). Вы также можете использовать некоторую библиотеку AJAX - например, sajax или что-то подобное, чтобы получить код cleanr. – Nux

Смежные вопросы