Hi,

Wednesday, December 11, 2002, 8:02:41 PM, you wrote:
TR> Hi,

TR> Wednesday, December 11, 2002, 2:05:25 AM, you wrote:
LR>> Hi,

LR>> Just wondering if anybody knows a script to display a resultset over several 
pages using page numers & previous, next links.

LR>> So far I've only found such scripts for mysql using the the following sql syntax 
which is not odbc compliant: SELECT * from table LIMIT 0, 4

LR>> I've looked at many sites to find such a script without luck so far...

LR>> Thanks in advance for your help,

LR>> -Luc
TR> Here is a paging class I wrote, it is using mysql but the example is not using
TR> the LIMIT feature so it should work with a little change for odbc.

TR> <?
TR> class page_class {
TR>         var $count = 0;         //total pages
TR>         var $start = 0;         //starting record
TR>         var $pages = 0;         //number of pages available
TR>         var $page = 1;          //current page
TR>         var $maxpages;          //shows up to 2 * this number and makes a sliding 
scale
TR>         var $show;              //number of results per page
TR>         function page_class($count=0,$show=5,$max=9){
TR>                 $this->count = $count;
TR>                 $this->show = $show;
TR>                 $this->maxpages = $max;
TR>                 ($this->count % $this->show == 0)? $this->pages = 
intval($this->count/$this->show) :$this->pages = intval($this->count/$this->show) +1;
TR>                 if(!empty($_GET['search_page'])){
TR>                         $this->page = $_GET['search_page'];
TR>                         $this->start = $this->show * $this->page -$this->show;
TR>                 }
TR>         }
TR>         function get_limit(){
TR>                 $limit = '';
TR>                 if($this->count > $this->show) $limit = 
'LIMIT'.$this->start.','.$this->show;
TR>                 return $limit;
TR>         }
TR>         function get_start(){
TR>                  return $this->start;
TR>         }
TR>         function get_end(){
TR>                  return ($this->start + $this->show);
TR>         }
TR>         function make_head_string($pre){
TR>                 $r = $pre.' ';
TR>                 $end = $this->start + $this->show;
TR>                 if($end > $this->count) $end = $this->count;
TR>                 $r .= ($this->start +1).' - '.$end.' of '.$this->count;
TR>                 return $r;
TR>         }
TR>         function make_page_string($words,$pre='Result Page:'){
TR>                 $r = $pre.' ';
TR>                 if($this->page > 1){
TR>                         $y = $this->page - 1;
TR>                         $r .= '<a 
href="'.$_SERVER['PHP_SELF'].'?search_page='.$y.$words.'">Previous</a>&nbsp;';
TR>                 }
TR>                 $end = $this->page + $this->maxpages-1;
TR>                 if($end > $this->pages) $end = $this->pages;
TR>                 $x = $this->page - $this->maxpages;
TR>                 $anchor = $this->pages - (2*$this->maxpages) +1;
TR>                 if($anchor < 1) $anchor = 1;
TR>                 if($x < 1) $x = 1;
TR>                 if($x > $anchor) $x = $anchor;
TR>                 while($x <= $end){
TR>                         if($x == $this->page){
TR>                                 $r .= '<span class="s">'.$x.'</span>&nbsp;';
TR>                         }
TR>                         else{
TR>                                 $r.= '<a 
href="'.$_SERVER['PHP_SELF'].'?search_page='.$x.$words.'">'.$x.'</a>&nbsp;';
TR>                         }
TR>                         $x++;
TR>                 }
TR>                 if($this->page < $this->pages){
TR>                         $y = $this->page + 1;
TR>                         $r .= '<a 
href="'.$_SERVER['PHP_SELF'].'?search_page='.$y.$words.'">Next</a>&nbsp;';
TR>                 }
TR>                 return $r;
TR>         }
TR> }

TR> //Usage
TR> $searchword = 'MSIE';
TR> $whatever = 'user=me';
TR> mysql_connect("localhost", "user", "pw......") or die (mysql_error());

TR> $Query = "SELECT COUNT(*) AS cnt FROM db.table WHERE agent LIKE '%" .$searchword. 
"%'";
TR> if(!$result = mysql_query($Query)){
TR>         echo 'oops: '.mysql_error();
TR>         exit;
TR> }
TR> $row = mysql_fetch_array($result);
TR> $count = $row['cnt'];

if($count >> 0){
TR>       //start class total number of results,number of results to show,max number 
of pages on a sliding scale (ends up as 2x this number..ie 20)
TR>     $page = new page_class($count,5,10); 
TR>     $start = $page->get_start();
TR>     $end = $page->get_end();
TR>     $Query2= "SELECT * FROM db.table WHERE agent LIKE '%".$searchword. "%' ORDER 
BY  time_stamp ASC ";
TR>     $result = mysql_query($Query2) or die(mysql_error());
TR>     $hstring = $page->make_head_string('Results');
TR>     $pstring = 
$page->make_page_string("&amp;searchword=".$searchword."&amp;whatever=".$whatever);//add
 the other variables to pass to next page in a similar fashion
TR>     echo "<table><tr><td>".$hstring."</td></tr>";
TR>     $x = 0;
TR>     while($row = mysql_fetch_array($result)){
TR>       if($x >= $start){
TR>         echo '<tr><td>'.$x.' '.$row['agent'].' '.$row['time_stamp'].'</td></tr>';
TR>       }
TR>       $x++;
TR>       if($x > $end) break;
TR>     }
TR>     echo '<tr><td>'.$pstring.'</td></tr></table>';
TR> }
TR> //Note: the search variables on subsequent pages will be passed by GET method
?>>


Small change to the while loop.

while($row = mysql_fetch_array($result)){
           if($x >= $start){
                 echo '<tr><td>'.($x+1).' '.$row['agent'].' 
'.$row['time_stamp'].'</td></tr>';
           }
           $x++;
           if($x >= $end) break;
}

-- 
regards,
Tom


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to