Hi, Tuesday, March 11, 2003, 8:31:47 PM, you wrote: c> Hi, this is kind of a complex question, Im making a message board, now I c> dont want list, lets say, all 25 messages on the same page. I would like c> to have <- previous 1 2 3 next -> type of links and only list 5 messages c> per page and every time a user clicks the next, previous, or one of the c> page number links it will list the next 5 messages that havn't been c> listed yet. Could someone show me how to do this or at least point me in c> the correct direction ? The data is all stored in a MySQL database.
c> Thanks, c> -- c> Conbud <[EMAIL PROTECTED]> c> Graphic & Web Design Using Open Source Technology c> -- Here is a class that will create a google like pagination of results if that is what you are after :) <? class page_class { var $count = 0; //total pages var $start = 0; //starting record var $pages = 0; //number of pages available var $page = 1; //current page var $maxpages; //shows up to 2 * this number and makes a sliding scale var $show; //number of results per page function page_class($count=0,$show=5,$max=9){ $this->count = $count; $this->show = $show; $this->maxpages = $max; ($this->count % $this->show == 0)? $this->pages = intval($this->count/$this->show):$this->pages intval($this->count/$this->show) +1; if(!empty($_GET['search_page'])){ $this->page = $_GET['search_page']; $this->start = $this->show * $this->page - $this->show; } } function get_limit(){ $limit = ''; if($this->count > $this->show) $limit = 'LIMIT'.$this->start.','.$this->show; return $limit; } function make_head_string($pre){ $r = $pre.' '; $end = $this->start + $this->show; if($end > $this->count) $end = $this->count; $r .= ($this->start +1).' - '.$end.' of '.$this->count; return $r; } function make_page_string($words,$pre='Result Page:'){ $r = $pre.' '; if($this->page > 1){ $y = $this->page - 1; $r .= '<a href="'.$_SERVER['PHP_SELF'].'?search_page='.$y.$words.'">Previous</a> '; } $end = $this->page + $this->maxpages-1; if($end > $this->pages) $end = $this->pages; $x = $this->page - $this->maxpages; $anchor = $this->pages - (2*$this->maxpages) +1; if($anchor < 1) $anchor = 1; if($x < 1) $x = 1; if($x > $anchor) $x = $anchor; while($x <= $end){ if($x == $this->page){ $r .= '<span class="s">'.$x.'</span> '; } else{ $r.= '<a href="'.$_SERVER['PHP_SELF'].'?search_page='.$x.$words.'">'.$x.'</a> '; } $x++; } if($this->page < $this->pages){ $y = $this->page + 1; $r .= '<a href="'.$_SERVER['PHP_SELF'].'?search_page='.$y.$words.'">Next</a> '; } return $r; } } //Usage mysql_connect("**.**.**.**", "******", "********") or die (mysql_error()); $Query = "SELECT COUNT(*) AS cnt FROM tabletosearch WHERE fieldtosearch LIKE '%" .$searchword."%'"; $query = mysql_query($Query) or die(mysql_error()); $row = mysql_fetch_array($result); $count = $row['cnt']; if($count > 0){ //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) $page = new page_class($count,5,10); $limit = $page->get_limit(); $Query2= "SELECT * FROM tabletosearch WHERE fieldtosearch LIKE '%" .$searchword. "%' ORDER BY whatever ASC ".$limit; $result = mysql_query($Query2) or die(mysql_error()); $hstring = $page->make_head_string('Results'); $pstring = $page->make_page_string("&searchword=".$searchword."&whatever=".$whatever);//add the other variables to pass to next page in a similar fashion echo "<table><tr><td>".$hstring."</td></tr>"; while($row = mysql_fetch_array($result)){ echo "<tr><td>".$show_data_here."</td></tr>"; } echo "<tr><td>".$pstring."</td></tr></table>"; } ?> Note: the search variables on subsequent pages will be passed by GET method -- regards, Tom -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php