supanoob Posted July 31, 2008 Share Posted July 31, 2008 Can anyone see why this is showing two pages yet when i click page two it only shows what was on page one again? <?php //connect to the database $dbh=mysql_connect ("localhost", "user", "pass") or die ('I cannot connect to the database because: ' . mysql_error()); mysql_select_db ("wwwcrim_legends"); //end db connect $limit = 25; $query_count = "SELECT * FROM forum where reply_to='$reply_to' AND post_type='reply' AND deleted='0'"; $result_count = mysql_query($query_count); $totalrows = mysql_num_rows($result_count); if(empty($page)){ $page = 1; } $limitvalue = ($page * $limit)- $limit; $query = "SELECT * FROM forum where reply_to='$reply_to' AND post_type='reply' AND deleted='0' ORDER BY post_id asc LIMIT $limitvalue, $limit"; $result = mysql_query($query) or die("Error: " . mysql_error()); if(mysql_num_rows($result) == 0){ echo(""); } while($row = mysql_fetch_array($result)) { $post_body=($row['post_body']); $posted_on=($row['posted_on']); $posted_at=($row['posted_at']); $posted_by_id=($row['posted_by_id']); $forum_name=($row['forum_name']); $post_id=($row['post_id']); $query2="select account_name, account_level from accounts where account_id='$posted_by_id'"; $result2=mysql_query($query2); if (!$result2) { die(mysql_error()); } $num_rows=mysql_num_rows($result2); $row=mysql_fetch_array($result2); $account_name_1=($row['account_name']); $account_level_1=($row['account_level']); echo "<center><a name=$post_id><table border=\"0\" width=\"90%\" id=\"table1\" cellspacing=\"1\"> <tr> <td width=\"24%\" align=\"center\" bgcolor=\"#999999\">Author Info</td> <td align=\"center\" bgcolor=\"#999999\">Message</td> </tr> <tr> <td width=\"24%\" valign=\"top\" bgcolor=\"#666666\">Name: <a href=\"profile.php?step=main&profile=$posted_by_id\">$account_name_1</a> ($posted_by_id)<br> Level: $account_level_1<br> Posted At: $posted_at<br> Posted On: $posted_on<br> Post ID: $post_id</td></td> <td valign=\"top\" bgcolor=\"#666666\">$post_body<br> <br><br><br><br> <table border=\"0\" width=\"100%\" id=\"table2\"> <tr> <td bgcolor=\"#999999\">This will be the signature<br> </td> </tr> </table>[Options: Delete | Edit | Fine | Ban] </td> </tr> </table><br> "; } echo "</center>"; echo "<center>"; if($page != 1){ $pageprev = ($page-1); echo("<a href=\"view_post.php?post_id=$reply_to&step=$step&page=$pageprev\"><</a> "); }else{ echo("< "); } $numofpages = $totalrows / $limit; for($i = 1; $i <= $numofpages; $i++){ if($i == $page){ echo($i." "); }else{ echo("<a href=\"view_post.php?post_id=$reply_to&step=$step&page=$i\">$i</a> "); } } if(($totalrows % $limit) != 0){ if($i == $page){ echo($i." "); }else{ echo("<a href=\"view_post.php?post_id=$reply_to&step=$step&page=$i\">$i</a> "); } } if(($totalrows - ($limit * $page)) > 0){ $pagenext = ($page+1); echo("<a href=\"view_post.php?post_id=$reply_to&step=$step&page=$pagenext\">></a>"); }else{ echo(">"); } mysql_free_result($result); echo "<br><br>"; ?> Link to comment https://forums.phpfreaks.com/topic/117520-paginating/ Share on other sites More sharing options...
samshel Posted July 31, 2008 Share Posted July 31, 2008 try echoing the query and seeing wht limit it takes.. Link to comment https://forums.phpfreaks.com/topic/117520-paginating/#findComment-604468 Share on other sites More sharing options...
JasonLewis Posted July 31, 2008 Share Posted July 31, 2008 Change this: if(empty($page)){ $page = 1; } To this: if(!isset($_GET['page'])){ $page = 1; }else{ $page = $_GET['page']; } Link to comment https://forums.phpfreaks.com/topic/117520-paginating/#findComment-604471 Share on other sites More sharing options...
GingerRobot Posted July 31, 2008 Share Posted July 31, 2008 $page is undefined, and your first query is inefficient. Replace this: $limit = 25; $query_count = "SELECT * FROM forum where reply_to='$reply_to' AND post_type='reply' AND deleted='0'"; $result_count = mysql_query($query_count); $totalrows = mysql_num_rows($result_count); if(empty($page)){ $page = 1; } With this: $limit = 25; $query = "SELECT COUNT(*) FROM forum where reply_to='$reply_to' AND post_type='reply' AND deleted='0'"; $result = mysql_query($query) or trigger_error(mysql_error(),E_USER_ERROR); $totalrows = mysql_result($result,0); $totalpages = ceil($totalrows/$limit); if(!isset($_GET['page'])){ $page = 1; }else{ $page = (int) $_GET['page']; } if($page < 1 || $page > $totalpages){//reset $page if the page number does not exist $page = 1; } While you beat me to it ProjectFear, thought i'd post anyway since i included simple validation as well as the change to the query. Link to comment https://forums.phpfreaks.com/topic/117520-paginating/#findComment-604473 Share on other sites More sharing options...
supanoob Posted July 31, 2008 Author Share Posted July 31, 2008 Thanks for the swift responses guys, much appreciated. Link to comment https://forums.phpfreaks.com/topic/117520-paginating/#findComment-604502 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.