title: Pagination with filter in php
body: <p>My problem is when I click the pagination, the second page will retrieve again all files that is stored in database. It does not take the <code>POST</code> data when I click on second page I want the second page is the filtered results. Here is my code</p>
  
  <pre><code>include 'databaseconnect.php';
  
  // How many adjacent pages should be shown on each side?
  
  $adjacents = 3;
  /*
  First get total number of rows in data table.
  If you have a WHERE clause in your query, make sure you mirror it here.
  */
  $bodytypefilter = $_POST['bodytype'];
  $query_str = " WHERE ";
  $query_str.= "body_type='$bodytypefilter'";
  $str.= "&amp;bodytype=" . $bodytypefilter;
  $targetpage = $_SERVER["PHP_SELF"] . "?" . $str;
  $total_pages = mysql_fetch_array(mysql_query("SELECT count(*) as num from lookdescrip join createdlook ON createdlook.product_id1=lookdescrip.id " . $query_str));
  $total_pages = $total_pages[num];
  /* Setup vars for query. */
  $limit = 1; //how many items to show per page
  
  if (isset($_GET['page'])) {
      $page = $_GET['page'];
  }
  else {
  
      // set proper default value if it was not set
  
      $page = '0';
  }
  
  if ($page) $start = ($page - 1) * $limit; //first item to display on this page
  else $start = 0;
  
  // if no page var is given, set start to 0
  
  $valid = "";
  $valid = true;
  $sql1 = "SELECT * from lookdescrip join createdlook ON createdlook.product_id1=lookdescrip.id" . $query_str . " LIMIT $start, $limit";
  
  if ($valid) {
      $result1 = mysql_query($sql1);
      /* Setup page vars for display. */
      if ($page == 0) $page = 1; //if no page var is given, default to 1.
      $prev = $page - 1; //previous page is page - 1
      $next = $page + 1; //next page is page + 1
      $lastpage = ceil($total_pages / $limit); //lastpage is = total pages / items per page, rounded up.
      $lpm1 = $lastpage - 1; //last page minus 1
      /*
      Now we apply our rules and draw the pagination object.
      We're actually saving the code to a variable in case we want to draw it more than once.
      */
      $pagination = "";
      if ($lastpage &gt; 1) {
          $pagination.= "&lt;div class=\"pagination\"&gt;";
  
          // previous button
  
          if ($page &gt; 1) $pagination.= "&lt;a href=\"$targetpage&amp;page=$prev\"&gt;� previous&lt;/a&gt;";
          else $pagination.= "&lt;span class=\"disabled\"&gt;� previous&lt;/span&gt;";
  
          // pages
  
          if ($lastpage &lt; 7 + ($adjacents * 2)) //not enough pages to bother breaking it up
          {
              for ($counter = 1; $counter &lt;= $lastpage; $counter++) {
                  if ($counter == $page) $pagination.= "&lt;span class=\"current\"&gt;$counter&lt;/span&gt;";
                  else $pagination.= "&lt;a href=\"$targetpage&amp;page=$counter\"&gt;$counter&lt;/a&gt;";
              }
          }
          elseif ($lastpage &gt; 5 + ($adjacents * 2)) //enough pages to hide some
          {
  
              // close to beginning; only hide later pages
  
              if ($page &lt; 1 + ($adjacents * 2)) {
                  for ($counter = 1; $counter &lt; 4 + ($adjacents * 2); $counter++) {
                      if ($counter == $page) $pagination.= "&lt;span class=\"current\"&gt;$counter&lt;/span&gt;";
                      else $pagination.= "&lt;a href=\"$targetpage&amp;page=$counter\"&gt;$counter&lt;/a&gt;";
                  }
  
                  $pagination.= "...";
                  $pagination.= "&lt;a href=\"$targetpage&amp;page=$lpm1\"&gt;$lpm1&lt;/a&gt;";
                  $pagination.= "&lt;a href=\"$targetpage&amp;page=$lastpage\"&gt;$lastpage&lt;/a&gt;";
              }
  
              // in middle; hide some front and some back
  
              elseif ($lastpage - ($adjacents * 2) &gt; $page &amp;&amp; $page &gt; ($adjacents * 2)) {
                  $pagination.= "&lt;a href=\"$targetpage&amp;page=1\"&gt;1&lt;/a&gt;";
                  $pagination.= "&lt;a href=\"$targetpage&amp;page=2\"&gt;2&lt;/a&gt;";
                  $pagination.= "...";
                  for ($counter = $page - $adjacents; $counter &lt;= $page + $adjacents; $counter++) {
                      if ($counter == $page) $pagination.= "&lt;span class=\"current\"&gt;$counter&lt;/span&gt;";
                      else $pagination.= "&lt;a href=\"$targetpage&amp;page=$counter\"&gt;$counter&lt;/a&gt;";
                  }
  
                  $pagination.= "...";
                  $pagination.= "&lt;a href=\"$targetpage&amp;page=$lpm1\"&gt;$lpm1&lt;/a&gt;";
                  $pagination.= "&lt;a href=\"$targetpage&amp;page=$lastpage\"&gt;$lastpage&lt;/a&gt;";
              }
  
              // close to end; only hide early pages
  
              else {
                  $pagination.= "&lt;a href=\"$targetpage&amp;page=1\"&gt;1&lt;/a&gt;";
                  $pagination.= "&lt;a href=\"$targetpage&amp;page=2\"&gt;2&lt;/a&gt;";
                  $pagination.= "...";
                  for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter &lt;= $lastpage; $counter++) {
                      if ($counter == $page) $pagination.= "&lt;span class=\"current\"&gt;$counter&lt;/span&gt;";
                      else $pagination.= "&lt;a href=\"$targetpage&amp;page=$counter\"&gt;$counter&lt;/a&gt;";
                  }
              }
          }
  
          // next button
  
          if ($page &lt; $counter - 1) $pagination.= "&lt;a href=\"$targetpage&amp;page=$next\"&gt;next �&lt;/a&gt;";
          else $pagination.= "&lt;span class=\"disabled\"&gt;next �&lt;/span&gt;";
          $pagination.= "&lt;/div&gt;\n";
      }
  
      $images = array();
      $index = 0;
      while ($row = mysql_fetch_assoc($result1)) // loop to give you the data in an associative array so you can use it however.
      {
          $images[$index] = $row;
          $index++;
      }
  
      $rows = mysql_num_rows($result1);
      foreach($images as &amp; $value) {
          echo $value['look_id']
      }
  }
  &lt;?=$pagination?&gt;
  </code></pre>