2009-10-30 2 views
0

Je suis en train de mettre en œuvre la pagination et je fait. Le problème est lorsque je clique sur le bouton de recherche les résultats de recherche sont affichés sans problème.Les chaînes de requête générant chaque fois que des liens pagination (suivant, précédent) sont cliqués, Aide

1er snap http://www.flickr.com/photos/[email protected]/4057149857/

2ème pression http://www.flickr.com/photos/[email protected]/4057149861/

Lorsque je clique sur le bouton suivant, il obtient une nouvelle fois la valeur de toutes les zones de texte qui est vide par défaut et définit la requête comme select * from locations_ads où city = "" qui est 0 résultat, et donc il affiche 'No Results Found'.

3ème pression http://www.flickr.com/photos/[email protected]/4057149863/

Comment puis-je faire la chaîne de requête pour former uniquement au moment de cliquer sur le bouton de recherche ??.

Toute aide sera grandement appréciée.

Mon code:

rentals_search.template.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<link rel="stylesheet" type="text/css" href="../css/style.css"> </link> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>RBlog - For the Consumers - By the Sellers</title> 



<link href="css/Pager.css" rel="stylesheet" type="text/css" /> 
    <script src="js/jquery-1.2.6.min.js" type="text/javascript"></script> 
    <script src="js/jquery.pager.js" type="text/javascript"></script> 
    <script type="text/javascript" language="javascript"> 

     $(document).ready(function() { 
      $("#pager").pager({ pagenumber: 1, pagecount: 15, buttonClickCallback: PageClick }); 
     }); 

     PageClick = function(pageclickednumber) { 
      $("#pager").pager({ pagenumber: pageclickednumber, pagecount: 10, buttonClickCallback: PageClick }); 
      //$("#result").html("Clicked Page " + pageclickednumber); 
      $("#result").html("Clicked Page " + pageclickednumber); 



     } 
     gen(); 

    </script> 





</head> 

<body> 
    <?php include("includes/header.php"); ?> 
    <?php include("dbclass/paging_class.php"); ?> 
    <div class="afterpicer_total"> 
     <?php include("includes/menu.php"); ?> 
    <div class="wrapper"> 
      <div class="cont"> 
       <?php include("includes/left_menu.php"); ?> 
       <div class="reg_cont"> 
        <form action="search_results.php" method="GET"> 
         <div class="reg_label">Looking for</div> 
         <div class="reg_tbox"> 
          <select name="type" class="reg_combo_style"> 
           <option>Living House</option> 
           <option>Office</option> 
          </select> 
         </div><br/> 
         <div class="reg_label">Rent/Month</div> 
         <div class="reg_tbox"> 
          <select name="rent" class="reg_combo_style"> 
           <option></option> 
           <option><2000</option> 
           <option>2000-4000</option> 
           <option>4000-6000</option> 
           <option>6000-10000</option> 
           <option>>10000</option> 
          </select> 
         </div><br/> 
         <div class="reg_label" >City</div> 

         <div class="reg_tbox"> 
          <select name="city" class="reg_combo_style" > 
           <option></option> 
           <option>Chennai</option> 
           <option>Salem</option> 
           <option>Madurai</option> 
           <option>Trichy</option> 
          </select> 
         </div><br/> 
         <div class="reg_label" >Area</div> 
         <div class="reg_tbox"><input type="text" size="32" name="area" class="reg_tbox_style" value='<?php echo(htmlspecialchars($_SESSION["lastarea"], ENT_QUOTES)); ?>' ></input></div><br/><br/><br/> 



         <div class="reg_tbox"><input type="submit" name="subm" value="Search" class="reg_but_style"style="margin-left:155px;"></input></div><br/><br/> 
         <?php 


          //doPages(10, '/rentals_search.php', 'city=Madurai', 5); 
           /*if (isset($_GET['subm'])) { 
            $_SESSION['searchflag'] = 'on'; 
            } 

            if(isset($_SESSION['searchflag'])) 
            { 
            $newpage=new paging(); 
            //$newpage->pager(" SELECT * FROM rentals_ads WHERE city='Salem'"); 
            $type=$_GET[type]; 
            $city=$_GET[city]; 
            $newpage->pager("SELECT * FROM rentals_ads WHERE city='$city'"); 
            } */ 


         ?> 
         <div class="reg_bl"></div> 
       </form> 
      </div> 
     </div> 
     <div class="adspace"> Advertisement Space</div> 
    </div> 
</div> 

<script language="javascript"> 
function gen() 
{ 
for (var page = 0; page <= 10; page++) { 
    var currentButton = $('<li class="page-number">' + (page) + '</li>'); 
    <a class="pager" href="/ajax_pages/get_results.php?page=3">page </a> 

     } 
     } 


</script> 
</body> 
</html> 

paging_class.php

<?php 
ob_start(); 


    require_once("common/class.Database.php"); 
    require_once("common/varDeclare.php"); 

class paging extends Database 
{ 
    function pager() 
    { 



     $no_results = TRUE; // No results found yet 
     $howmany = 5;  // Return 10 results per query 

     // Set default starting point of query to 0, or, if set, to $_GET['rs'] 
     $row_start = (isset($_GET['rs'])) ? $_GET['rs'] : 0; 


     // Do our SQL query, with something like LIMIT 0, 10 

     $qcity=$_GET[city]; 
     $sql="SELECT * FROM rentals_ads WHERE city='$qcity'"; 
     $result=mysql_query($sql); 
     while($row = mysql_fetch_array($result)) 
     { 
      $count=$count+1; 
     } 
     if($count>0) 
     { 
     echo "$count results found" ; 
     } 



     $sql = "SELECT * FROM rentals_ads WHERE city='$qcity' LIMIT ". $row_start .", ". $howmany .""; 


     $result = mysql_query($sql); 



     // Get the number of rows that would have been returned WITHOUT a limit clause, to be used later for paging. 
     $count_sql  = "SELECT FOUND_ROWS() AS total"; 
     $count_sql_result = mysql_query($count_sql); 

     $count_row = mysql_fetch_array($count_sql_result); 

     $count_result  = $count_row['total']; 

     ?> 
    <div class="paging_title"> 
     <div class="paging_title_title"> Title</div> 
     <div class="paging_title_type">Room Type</div> 
     <div class="paging_title_city">City</div> 
     <div class="paging_title_rent">Rent</div> 
    </div> 
     <? 
       // Start looping through our result set 

     while($row = mysql_fetch_array($result)) { 
      $no_results = FALSE; 

      // Save results of query to $line_output 
      $line_output .= " 
       <div class=\"paging_ad\"> 
        <div class=\"paging_ad_title\">". $row['rentals_title'] ."</div> 
        <div class=\"paging_ad_type\">". $row['rentals_type'] ."</div> 
        <div class=\"paging_ad_city\">". $row['city'] ."</div> 
        <div class=\"paging_ad_rent\">". $row['rent'] ."</div> 
       </div>"; 
     } 

     // Don't bother building paging if we don't have records 
     if ($no_results) { 
      $line_output = "No records found..."; 
      $page_output = ""; 
     } 
     else { 
      // Build <prev> and <next> links and save to $page_output 
      $rs_prev = $row_start - $howmany; // where would prev page start, given current start less no. of records 
      $rs_next = $row_start + $howmany; // where would next page start, given current start plus no. of records 

      // If for some reason the next <prev> starting point is negative, do not display <prev> 
      // This happens when our current starting point is already 0 
      // This may happen if some smartass manually changes the rs= bit in the url 
      $page_output_prev = ($rs_prev < 0) ? "" : "<a href='?rs=".$rs_prev."'>Previous</a>"; 

      // Will the next page jump start point exceed the number of records returned? 
      // If so, don't display <next>' 
      $page_output_next = ($rs_next <= $count_result) ? "<a href='?rs=".$rs_next."'>Next</a>": ""; 

      // Just something to put between <prev> & <next>, IF they are both active 
      if (($page_output_prev == "")) 
      { 
       $page_output ="  <div class=\"paging_nav_cont\"> 


        <div class=\"paging_nav_but\">". $page_output_next ."</div> 
        </div>"; 

      } 
      else if (($page_output_next == "")) 
      { 
       $page_output ="  <div class=\"paging_nav_cont\"> 
        <div class=\"paging_nav_but\">". $page_output_prev ."</div> 


        </div>"; 
      } 

      else 
      { 
       $page_output ="  <div class=\"paging_nav_cont\"> 
        <div class=\"paging_nav_but\">". $page_output_prev ."</div> 

        <div class=\"paging_nav_but\">". $page_output_next ."</div> 
        </div>"; 
      } 
      // Build final paging output 

      //$page_output = $page_output_prev . $page_output_breaker . $page_output_next; 





     } 

     // Write the outputs 
     echo $line_output; 
     echo $page_output; 
    } 
} 
?> 

search_results.template.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>RBlog - For the Consumers - By the Sellers</title> 
<? 
require_once("common/class.Database.php"); 
require_once("dbclass/paging_class.php"); 
?> 
</head> 
<body> 
    <?php include("includes/header.php"); ?> 
    <div class="afterpicer_total"> 
     <?php include("includes/menu.php"); ?> 
    <div class="wrapper"> 
      <div class="cont"> 

       <? 
            $newpage=new paging(); 
            //$newpage->pager(" SELECT * FROM rentals_ads WHERE city='Salem'"); 
            $type=$_GET[type]; 
            $city=$_GET[city]; 
            $newpage->pager(); 
       ?> 
      </div> 
      <div class="adspace"> Advertisement Space</div> 
     </div> 
    </div> 

</body> 
</html> 

Répondre

0

Non, Scavenger est juste, vous devez utiliser la variable $ _SESSION. C'est la seule façon de faire en sorte que PHP se souvienne des choses de la page précédente.

La raison pour laquelle il ne fonctionnait pas pour vous est probablement parce que vous avez défini pas correctement. Vous devez ajouter

<?php session_start(); ?> 

au début de chaque fichier PHP dans lequel vous souhaitez utiliser la variable $ _SESSION. Ensuite, vous devez coder quelque chose comme:

if (isset($_GET['city']) { 
    $qcity = $_GET['city']; 
    $_SESSION['city'] = $qcity; 
} else { 
    $qcity = $_SESSION['city']; 
} 

pour lui rappeler la ville de la dernière fois.

C'est une façon d'aborder le problème, je pense que vous pouvez aussi résoudre le problème avec AJAX. Si vous faites cela, vous devez vous assurer que la page n'est jamais rechargée complètement. Cela maintient les champs d'entrée valides. Au lieu de recharger, vous appelez vos fichiers PHP (contenant des requêtes de base de données) à partir de Javascript, et manipulez la page en conséquence.

Je vais pour les sessions PHP (mais je suis en train de mourir pour en savoir plus AJAX aussi, il est :-) propre.

0

La variable $ _SESSION PHP peut être ce que vous recherchez. Il stocke des valeurs entre les chargements de page. PHP manual

+0

non, j'ai essayé, son stockage nouvelle valeur de la session à chaque fois. donc ce n'est pas utile – Rajasekar

+0

vous devez utiliser session_start(), voir mon message ci-dessous – thomaspaulb

Questions connexes