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> '; 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> '; TR> } TR> else{ TR> $r.= '<a href="'.$_SERVER['PHP_SELF'].'?search_page='.$x.$words.'">'.$x.'</a> '; 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> '; 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("&searchword=".$searchword."&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