2012-09-19 4 views
1

이것은 다시 나, 다시 묻습니다. PHP mysql에서 필터링 된 결과를 페이지 매기기하는 방법은 무엇입니까? 내 페이지 매김은 데이터베이스에 저장된 모든 파일 만 표시합니다. 예를 들어 인터뷰 한 비고문의 모든 레코드를 검색하려고하면 비공개 인터뷰를 한 모든 파일이 표시되고 두 번째 페이지에는 필터링 된 결과가 계속 표시됩니다.검색 결과에 대한 페이지 매김 필터링 됨

제 문제는 페이지 매김을 클릭하면 두 번째 페이지가 데이터베이스에 저장된 모든 파일을 다시 검색한다는 것입니다. 나는 두 번째 페이지가 필터링 된 결과를 원한다.

도와주세요.

search.php

<form id="form1" name="form1" method="get" action=""> 
<br/> 
    <div> 
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    <font color ="white" face ="Arial" size ="5" style="padding: 5px; text-align: center;">Search for an Applicant Record</font><br/><br/> 
    <table border=1 cellSpacing=1 cellPadding=1 align ="left" > 
     <tr> 
       <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td> 
       <td>&nbsp;&nbsp;&nbsp;</td> 
       <td>&nbsp;&nbsp;&nbsp;</td> 
       <td>&nbsp;&nbsp;&nbsp;</td> 
       <td>&nbsp;&nbsp;&nbsp;</td> 
       <td>&nbsp;&nbsp;&nbsp;</td> 
       <td><font color ="white" size ="2" face ="Tahoma"><a href="search.php" style="text-decoration:none;"><img src="/applicants/icons/reset.png" title="Reset Page"/><font color="white" size="2" face="Tahoma"><b>Reset</b></font></a></font></td> 
      </tr> 
      <tr> 
       <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td> 
       <td align="left"><p><label for="searchfor"><font color ="white" size ="2" face ="Tahoma"><b>Search for:   </b></font></label></p></td> 
       <td>&nbsp;</td> 
       <td align="left"><input type="text" name="searchfor" class="tb5a" id="searchfor" size="25" /></td> 
       <td align="left"> 
       <select name="select" class="tb5a"> 
       <option selected="selected">Applicant's Name</option> 
       <option>Position Applying For</option> 
       <option>Work Experience</option> 
       <option>Remarks</option> 
       </select> 
       </td> 
       <td>&nbsp;&nbsp;&nbsp;</td> 
       <td>&nbsp;&nbsp;&nbsp;</td> 
      </tr> 
      <tr> 
       <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td> 
       <td align="left"><p><label for="from"><font color ="white" size ="2" face ="Tahoma"><b>Date Applied from:   </b></font></label></p></td> 
       <td>&nbsp;</td> 
       <td align="left"><input name="from" type="text" class="tb5a" id="from" size="10" /></td> 
       <td>&nbsp;&nbsp;&nbsp;</td> 
       <td>&nbsp;&nbsp;&nbsp;</td> 
       <td>&nbsp;&nbsp;&nbsp;</td> 

      </tr> 
      <tr> 
       <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td> 
       <td align="left"><p><label for="date_appliedto"><font color ="white" size ="2" face ="Tahoma"><b>  to:   </b></font></label></p></td> 
       <td>&nbsp;</td> 
       <td align="left"><input name="to" type="text" class="tb5a" id="to" size="10" /></td> 
       <td>&nbsp;&nbsp;&nbsp;</td> 
       <td>&nbsp;&nbsp;&nbsp;</td> 
       <td>&nbsp;&nbsp;&nbsp;</td> 
      </tr> 
      <tr> 
       <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td> 
       <td>&nbsp;&nbsp;&nbsp;</td> 
       <td>&nbsp;</td> 
       <td>&nbsp;&nbsp;&nbsp;</td> 
       <td>&nbsp;&nbsp;&nbsp;</td> 
       <td>&nbsp;&nbsp;&nbsp;</td> 
       <td colspan="1" align="right"><p><input type="submit" name="search" class="update" id="button" value=" Search " onclick=verify();/></p></td> 
      </tr> 
     </table> 
    </div> 
</form> 
    <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/> 
<?php 
error_reporting(0); 
include_once 'include/conn.inc.php'; 
//Include the PS_Pagination class 
include('include/pspagination.php'); 
     //Connect to mysql db 
     $conn = mysql_connect('localhost','root',''); 
    if(!$conn) die("Failed to connect to database!"); 
    $status = mysql_select_db('timemanagement', $conn); 
    if(!$status) die("Failed to select database!"); 



if ($_REQUEST["searchfor"]<>'') { 
    $search_searchfor = " AND (lname LIKE '%".mysql_real_escape_string($_REQUEST["searchfor"])."%' OR fname LIKE '%".mysql_real_escape_string($_REQUEST["searchfor"])."%' OR mname LIKE '%".mysql_real_escape_string($_REQUEST["searchfor"])."%' OR image LIKE '%".mysql_real_escape_string($_REQUEST["searchfor"])."%' OR appfor LIKE '%".mysql_real_escape_string($_REQUEST["searchfor"])."%' OR workexp LIKE '%".mysql_real_escape_string($_REQUEST["searchfor"])."%' OR remarks LIKE '%".mysql_real_escape_string($_REQUEST["searchfor"])."%')"; 
    } 

    if ($_REQUEST["from"]<>'' and $_REQUEST["to"]<>'') { 
     $sql = "SELECT * FROM applicants_access WHERE date_applied >= '".mysql_real_escape_string($_REQUEST["from"])."' AND date_applied <= '".mysql_real_escape_string($_REQUEST["to"])."'".$search_searchfor; 
    } 
    else if ($_REQUEST["from"]<>'') { 
     $sql = "SELECT * FROM applicants_access WHERE date_applied >= '".mysql_real_escape_string($_REQUEST["from"])."'".$search_searchfor; 
    } 
    else if ($_REQUEST["to"]<>'') { 
     $sql = "SELECT * FROM applicants_access WHERE date_applied <= '".mysql_real_escape_string($_REQUEST["to"])."'".$search_searchfor; 
    } 
    else { 
     $sql = "SELECT * FROM applicants_access WHERE applicant_id>0".$search_searchfor; 
    } 
    if (($_REQUEST["select"])==($_REQUEST["searchfor"])){ 
     $sql = "Select * from applicants_access order by applicant_id desc"; 
    } 
    $sql_result = mysql_query($sql); 

    echo '<center>'; 
     /* 
    * Create a PS_Pagination object 
    * 
    * $conn = MySQL connection object 
    * $sql = SQl Query to paginate 
    * 10 = Number of rows per page 
    * 5 = Number of links 
    * "param1=valu1&param2=value2" = You can append your own parameters to paginations links 
    */ 
    $pager = new PS_Pagination($conn, $sql, 20, 10, "param1=valu1&param2=value2"); 

    /* 
    * Enable debugging if you want o view query errors 
    */ 
    $pager->setDebug(true); 

    /* 
    * The paginate() function returns a mysql result set 
    * or false if no rows are returned by the query 
    */ 
    $rs = $pager->paginate(); 
    if(!$rs) die(mysql_error()); 
      if($sql_result){ 
?> 
<br/> 
<div align ="center"> 
<table id='table-2' cellspacing="0" cellpadding="1" border=1 > 
    <thead> 
    <th><center><font color ="#640303"><b>Last Name</b></font></center></th> 
    <th><center><font color ="#640303"><b>First Name</b></font></center></th> 
    <th><center><font color ="#640303"><b>Middle Name</b></font></center></th> 
    <th><center><font color ="#640303"><b>View Attachment</b></font></center></th> 
    <th><center><font color ="#640303"><b>Contact Number</b></font></center></th> 
    <th><center><font color ="#640303"><b>Position Applying For</b></font></center></th> 
    <th><center><font color ="#640303"><b>Work Experience</b></font></center></th> 
    <th><center><font color ="#640303"><b>Date Applied</b></font></center></th> 
    <th><center><font color ="#640303"><b>Remarks</b></font></center></th> 
</thead> 

<?php 

if (mysql_num_rows($sql_result)>0) { 
    while ($row = mysql_fetch_array($rs)) { 

?> 

     <tbody> 
     <tr> 
     <td><center><font color = 'black'><?php echo $row["lname"]; ?></font></center></td> 
     <td><center><font color = 'black'><?php echo $row["fname"]; ?></font></center></td> 
     <td><center><font color = 'black'><?php echo $row["mname"]; ?></font></center></td> 
     <td><center><font color = 'black'><a href = 'view.php' target='_blank'>view</a></font></center></td> 
     <td><center><font color = 'black'><?php echo $row["cnumber"]; ?></font></center></td> 
     <td><center><font color = 'black'><?php echo $row["appfor"]; ?></font></center></td> 
     <td><center><font color = 'black'><?php echo $row["workexp"]; ?></font></center></td> 
     <td><center><font color = 'black'><?php echo $row["date_applied"]; ?></font></center></td> 
     <td><center><font color = 'black'><?php echo $row["remarks"]; ?></font></center></td> 
     </tr> 
     </tbody> 

<?php 
} 
} 
else { 
?> 
<tr><td colspan="45">No results found.</td></tr> 
<?php 
} 

?>  
</table> 
</div> 
<?php 
     } 
//Display the full navigation in one go 
    //echo $pager->renderFullNav(); 

    //echo "<br />\n"; 

    /* 
    * Or you can display the individual links for more 
    * control over HTML rendering. 
    * 
    */ 
     //echo '<div class="pagination1">'; 


     echo '<div class="paginationTG">'; 
     echo '<ul>'; 
    //Display the link to first page: First 
    echo $pager->renderFirst(); 

    //Display the link to previous page: << 
    echo $pager->renderPrev(); 
     echo'</span>'; 
    /* 
    * Display page links: 1 2 3 
    * $prefix = Will be prepended to the page link (optional) 
    * $suffix = Will be appended to the page link (optional) 
    * 
    */ 

    echo $pager->renderNav('<li class="currentpage">', '</li>'); 

    //Display the link to next page: >> 
    echo $pager->renderNext(); 

    //Display the link to last page: Last 
    echo $pager->renderLast(); 
     echo '</div>' . '</ul>'; 
     echo '</center>'; 
?> 

<script> 
    $(function() { 
     var dates = $("#from, #to").datepicker({ 
      defaultDate: "+1w", 
      changeMonth: true, 
      numberOfMonths: 2, 
      dateFormat: 'yy-mm-dd', 
      onSelect: function(selectedDate) { 
       var option = this.id == "from" ? "minDate" : "maxDate", 
        instance = $(this).data("datepicker"), 
        date = $.datepicker.parseDate(
         instance.settings.dateFormat || 
         $.datepicker._defaults.dateFormat, 
         selectedDate, instance.settings); 
       dates.not(this).datepicker("option", option, date); 
      } 
     }); 
    }); 
    </script> 

내 매김 스크립트 .. pagination.php

<?php 
/** 
* PHPSense Pagination Class 
* 
* PHP tutorials and scripts 
* 
* @package  PHPSense 
* @author  Jatinder Singh Thind 
* @copyright Copyright (c) 2006, Jatinder Singh Thind 
* @link  http://www.phpsense.com 
*/ 

// ------------------------------------------------------------------------ 


class PS_Pagination { 
    var $php_self; 
    var $rows_per_page = 20; //Number of records to display per page 
    var $total_rows = 0; //Total number of rows returned by the query 
    var $links_per_page = 10; //Number of links to display per page 
    var $append = ""; //Paremeters to append to pagination links 
    var $sql = ""; 
    var $debug = false; 
    var $conn = false; 
    var $page = 1; 
    var $max_pages = 0; 
    var $offset = 0; 

    /** 
    * Constructor 
    * 
    * @param resource $connection Mysql connection link 
    * @param string $sql SQL query to paginate. Example : SELECT * FROM users 
    * @param integer $rows_per_page Number of records to display per page. Defaults to 10 
    * @param integer $links_per_page Number of links to display per page. Defaults to 5 
    * @param string $append Parameters to be appended to pagination links 
    */ 

    function PS_Pagination($connection, $sql, $rows_per_page = 20, $links_per_page = 10, $append = "") { 
     $this->conn = $connection; 
     $this->sql = $sql; 
     $this->rows_per_page = (int)$rows_per_page; 
     if (intval($links_per_page) > 0) { 
      $this->links_per_page = (int)$links_per_page; 
     } else { 
      $this->links_per_page = 10; 
     } 
     $this->append = $append; 
     $this->php_self = htmlspecialchars($_SERVER['PHP_SELF']); 
     if (isset($_GET['page'])) { 
      $this->page = intval($_GET['page']); 
     } 
    } 

    /** 
    * Executes the SQL query and initializes internal variables 
    * 
    * @access public 
    * @return resource 
    */ 
    function paginate() { 
     //Check for valid mysql connection 
     if (! $this->conn || ! is_resource($this->conn)) { 
      if ($this->debug) 
       echo "MySQL connection missing<br />"; 
      return false; 
     } 

     //Find total number of rows 
     $all_rs = @mysql_query($this->sql); 
     if (! $all_rs) { 
      if ($this->debug) 
       echo "SQL query failed. Check your query.<br /><br />Error Returned: " . mysql_error(); 
      return false; 
     } 
     $this->total_rows = mysql_num_rows($all_rs); 
     @mysql_close($all_rs); 

     //Return FALSE if no rows found 
     if ($this->total_rows == 0) { 
      if ($this->debug) 
       echo "Query returned zero rows."; 
      return FALSE; 
     } 

     //Max number of pages 
     $this->max_pages = ceil($this->total_rows/$this->rows_per_page); 
     if ($this->links_per_page > $this->max_pages) { 
      $this->links_per_page = $this->max_pages; 
     } 

     //Check the page value just in case someone is trying to input an aribitrary value 
     if ($this->page > $this->max_pages || $this->page <= 0) { 
      $this->page = 1; 
     } 

     //Calculate Offset 
     $this->offset = $this->rows_per_page * ($this->page - 1); 

     //Fetch the required result set 
     $rs = @mysql_query($this->sql . " LIMIT {$this->offset}, {$this->rows_per_page}"); 
     if (! $rs) { 
      if ($this->debug) 
       echo "Pagination query failed. Check your query.<br /><br />Error Returned: " . mysql_error(); 
      return false; 
     } 
     return $rs; 
    } 

    /** 
    * Display the link to the first page 
    * 
    * @access public 
    * @param string $tag Text string to be displayed as the link. Defaults to 'First' 
    * @return string 
    */ 
    function renderFirst($tag = 'First') { 
     if ($this->total_rows == 0) 
      return FALSE; 

     if ($this->page == 1) { 
      return "$tag "; 
     } else { 
      return '<a href="' . $this->php_self . '?page=1&' . $this->append . '">' . $tag . '</a> '; 
     } 
    } 

    /** 
    * Display the link to the last page 
    * 
    * @access public 
    * @param string $tag Text string to be displayed as the link. Defaults to 'Last' 
    * @return string 
    */ 
    function renderLast($tag = 'Last') { 
     if ($this->total_rows == 0) 
      return FALSE; 

     if ($this->page == $this->max_pages) { 
      return $tag; 
     } else { 
      return ' <a href="' . $this->php_self . '?page=' . $this->max_pages . '&' . $this->append . '">' . $tag . '</a>'; 
     } 
    } 

    /** 
    * Display the next link 
    * 
    * @access public 
    * @param string $tag Text string to be displayed as the link. Defaults to '>>' 
    * @return string 
    */ 
    function renderNext($tag = 'Next') { 
     if ($this->total_rows == 0) 
      return FALSE; 

     if ($this->page < $this->max_pages) { 
      return '<a href="' . $this->php_self . '?page=' . ($this->page + 1) . '&' . $this->append . '">' . $tag . '</a>'; 
     } else { 
      return $tag; 
     } 
    } 

    /** 
    * Display the previous link 
    * 
    * @access public 
    * @param string $tag Text string to be displayed as the link. Defaults to '<<' 
    * @return string 
    */ 
    function renderPrev($tag = 'Previous') { 
     if ($this->total_rows == 0) 
      return FALSE; 

     if ($this->page > 1) { 
      return ' <a href="' . $this->php_self . '?page=' . ($this->page - 1) . '&' . $this->append . '">' . $tag . '</a>'; 
     } else { 
      return " $tag"; 
     } 
    } 

    /** 
    * Display the page links 
    * 
    * @access public 
    * @return string 
    */ 
    function renderNav($prefix = '<span>', $suffix = '</span>') { 
     if ($this->total_rows == 0) 
      return FALSE; 

     $batch = ceil($this->page/$this->links_per_page); 
     $end = $batch * $this->links_per_page; 
     if ($end == $this->page) { 
      //$end = $end + $this->links_per_page - 1; 
     //$end = $end + ceil($this->links_per_page/2); 
     } 
     if ($end > $this->max_pages) { 
      $end = $this->max_pages; 
     } 
     $start = $end - $this->links_per_page + 1; 
     $links = ''; 

     for($i = $start; $i <= $end; $i ++) { 
      if ($i == $this->page) { 
       $links .= $prefix . " $i " . $suffix; 
      } else { 
       $links .= ' ' . $prefix . '<a href="' . $this->php_self . '?page=' . $i . '&' . $this->append . '">' . $i . '</a>' . $suffix . ' '; 
      } 
     } 

     return $links; 
    } 

    /** 
    * Display full pagination navigation 
    * 
    * @access public 
    * @return string 
    */ 
    function renderFullNav() { 
     return $this->renderFirst() . '&nbsp;' . $this->renderPrev() . '&nbsp;' . $this->renderNav() . '&nbsp;' . $this->renderNext() . '&nbsp;' . $this->renderLast(); 
    } 

    /** 
    * Set debug mode 
    * 
    * @access public 
    * @param bool $debug Set to TRUE to enable debug messages 
    * @return void 
    */ 
    function setDebug($debug) { 
     $this->debug = $debug; 
    } 
} 
?> 
+0

코드를 추가하십시오. –

+0

jquery 페이지 매김을 사용하거나 데이터베이스 레코드를 제한 –

+0

다음 페이지 번호 매김 링크와 함께 검색 키를 전달할 수 있습니다 ... 먼저 코드를 표시하고 – Gautam3164

답변