2010-05-15 4 views
2

J'ai un formulaire de recherche dans lequel un utilisateur entre le mot-clé et les résultats sont affichés avec pagination. tout fonctionne bien, sauf que lorsque l'utilisateur clique sur le bouton "Suivant", le panneau de pagination disparaît également lorsque la page se charge de récupérer les données via ajax.Le panneau de pagination doit rester statique

Comment rendre le panneau de pagination statique pendant la récupération des données?

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> 

ajax:

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> 

Répondre

0

Je ne sais pas ce que vous voulez dire. Changez juste la table de résultat pas la page entière dans la fonction de showPage.

+0

veuillez élaborer. – input

+0

Eh bien, en supposant que vous fassiez un appel AJAX dans showPage(), après avoir reçu des données, vous pouvez changer l'état de la page active avec JS et changer seulement la table (vous pourriez vouloir l'identifier pour faciliter la recherche). Vous pouvez également utiliser une bibliothèque AJAX - comme sajax ou quelque chose comme ça pour obtenir un code de nettoyage. – Nux

Questions connexes