Jump to content

still have a pagination problem!


Noskiw

Recommended Posts

  • Replies 87
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

actually, those two things made it worse. i have changed the $nextpage to

 

$nextpage = ($page+1 >= $pages) ? " Next »" : " <a href=\"./forum-index.php?act=topic&id=".$id."&page=".($page+1)."\">Next »</a>";

 

but the next link only shows up on the first page. and not the second. anything wrong there?

Link to comment
Share on other sites

$pages = ceil($amount_count/$limit);

31/10 = 3.1

round up and makes 4... so problem isn't there i think. (to be sure, echo $amount_count somewhere and be sure it is 31 (or more if someone else posts))

 

but I don't see where is is otherwise.

 

Link to comment
Share on other sites

this is the code now

 

<?php

$id = $_GET['id'];

$page = (!$_GET['page'] || $_GET['page'] < 0) ? "1" : $_GET['page'];
$page = ceil($page);
$limit = 10;

$start = $limit;
$end = $page*$limit-($limit);

if(isset($id)){
$sql = "SELECT * FROM forum_topics WHERE id='".$id."'";
$res = mysql_query($sql) or die(mysql_error());
if(mysql_num_rows($res) == 0){
	echo "This topic does not exist!\n";
}else{
	$row = mysql_fetch_assoc($res);
	$sql2 = "SELECT admin FROM forum_sub_cats WHERE id='".$row['cid']."'";
	$res2 = mysql_query($sql2) or die(mysql_error());
	$row2 = mysql_fetch_assoc($res2);
	if($row2['admin'] == 1 && $admin_user_level == 0){
		echo "You cannot view this topic because you are not an admin!\n";
	}else{
		$a = (isa($row['uid'])) ? "<font style=\"color:#800000;\">ADMIN</font>" : "";

		$amount_check = "SELECT * FROM forum_replies WHERE tid='".$tid."'";
		$amount_check_res = mysql_query($amount_check) or die(mysql_error());
		$amount_count = mysql_num_rows($amount_check_res);
		$pages = 4;

		$previous = ($page-1 <= 0) ? "« Prev" : "<a href=\"./forum-index.php?act=topic&id=".$id."&page=".($page-1)."\">« Prev</a>";
		$nextpage = ($page+1 > $pages) ? " Next »" : " <a href=\"./forum-index.php?act=topic&id=".$id."&page=".($page+1)."\">Next »</a>";

		echo $previous;
		for($i=1;$i<=$pages;$i++){
            	$href = ($page == $i) ? " ".$i." " : " <a href=\"./forum-index.php?act=topic&id=".$id."&page=".$i."\">".$i."</a> ";
   
            	echo $href;
         	}
		echo $nextpage;
		echo "</td></tr>\n";

		echo "<table border=\"0\" width=\"100%\" cellspacing=\"3\" cellpadding=\"3\">\n";
		echo "<tr><td colspan=\"2\" align=\"left\"  class=\"forum_header\"><b><font size=\"3\">".$row['title']."</font></b><font size=\"3\"> - Posted On: <em>".$row['date']."</em></font></td></tr>\n";
		echo "<tr><td align=\"left\" width=\"15%\" valign=\"top\"  class=\"forum_header\">".uid($row['uid'], true)."<br>Posts: ".posts($row['uid'])."<br>".$a."</td>\n";
		echo "<td align=\"left\" valign=\"top\" class=\"forum_header\">";
		echo topic($row['message']);
		echo "</td>\n";
		echo "</tr>\n";

		$select_sql = "SELECT * FROM `forum_replies`WHERE tid = ".$id." ORDER BY id ASC LIMIT ".$end.", ".$start."";
		$select_res = mysql_query($select_sql) or die(mysql_error()); 

		while($rowr = mysql_fetch_assoc($select_res)){
			echo "<tr><td colspan=\"2\" align=\"left\"  class=\"forum_header\"><font size=\"3\"> - Posted On: <em>".$rowr['date']."</em></font></td></tr>\n";
			echo "<tr><td align=\"left\" width=\"15%\" valign=\"top\"  class=\"forum_header\">".uid($rowr['uid'], true)."<br>Posts: ".posts($rowr['uid'])."<br>".$a."</td>\n";
			echo "<td align=\"left\" valign=\"top\" class=\"forum_header\">";
			echo topic($rowr['message']);
			echo "</td>\n";
			echo "</tr>\n";
		}

		echo "<form method=\"post\" action=\"./forum-index.php?act=reply&id=".$row['id']."\">\n";
		echo "<tr><td colspan=\"2\" align=\"center\"><textarea style=\"width:90%\" name=\"reply\"></textarea><br><input type=\"submit\" name=\"submit\" value=\"add reply!\" style=\"width:90%\" /></td></tr>\n";

		echo "</table>\n";
	}
}
}else{
echo "Please view a valid topic!\n";
}

?>

 

i dont know how to fix it. in the $pages bit

Link to comment
Share on other sites

this is the code now

 

<?php

$id = $_GET['id'];

$page = (!$_GET['page'] || $_GET['page'] < 0) ? "1" : $_GET['page'];
$page = ceil($page);
$limit = 10;

$start = $limit;
$end = $page*$limit-($limit);

if(isset($id)){
$sql = "SELECT * FROM forum_topics WHERE id='".$id."'";
$res = mysql_query($sql) or die(mysql_error());
if(mysql_num_rows($res) == 0){
	echo "This topic does not exist!\n";
}else{
	$row = mysql_fetch_assoc($res);
	$sql2 = "SELECT admin FROM forum_sub_cats WHERE id='".$row['cid']."'";
	$res2 = mysql_query($sql2) or die(mysql_error());
	$row2 = mysql_fetch_assoc($res2);
	if($row2['admin'] == 1 && $admin_user_level == 0){
		echo "You cannot view this topic because you are not an admin!\n";
	}else{
		$a = (isa($row['uid'])) ? "<font style=\"color:#800000;\">ADMIN</font>" : "";

		$amount_check = "SELECT * FROM forum_replies WHERE tid='".$tid."'";
		$amount_check_res = mysql_query($amount_check) or die(mysql_error());
		$amount_count = mysql_num_rows($amount_check_res);
		$pages = 4;

		$previous = ($page-1 <= 0) ? "« Prev" : "<a href=\"./forum-index.php?act=topic&id=".$id."&page=".($page-1)."\">« Prev</a>";
		$nextpage = ($page+1 > $pages) ? " Next »" : " <a href=\"./forum-index.php?act=topic&id=".$id."&page=".($page+1)."\">Next »</a>";

		echo $previous;
		for($i=1;$i<=$pages;$i++){
            	$href = ($page == $i) ? " ".$i." " : " <a href=\"./forum-index.php?act=topic&id=".$id."&page=".$i."\">".$i."</a> ";
   
            	echo $href;
         	}
		echo $nextpage;
		echo "</td></tr>\n";

		echo "<table border=\"0\" width=\"100%\" cellspacing=\"3\" cellpadding=\"3\">\n";
		echo "<tr><td colspan=\"2\" align=\"left\"  class=\"forum_header\"><b><font size=\"3\">".$row['title']."</font></b><font size=\"3\"> - Posted On: <em>".$row['date']."</em></font></td></tr>\n";
		echo "<tr><td align=\"left\" width=\"15%\" valign=\"top\"  class=\"forum_header\">".uid($row['uid'], true)."<br>Posts: ".posts($row['uid'])."<br>".$a."</td>\n";
		echo "<td align=\"left\" valign=\"top\" class=\"forum_header\">";
		echo topic($row['message']);
		echo "</td>\n";
		echo "</tr>\n";

		$select_sql = "SELECT * FROM `forum_replies`WHERE tid = ".$id." ORDER BY id ASC LIMIT ".$end.", ".$start."";
		$select_res = mysql_query($select_sql) or die(mysql_error()); 

		while($rowr = mysql_fetch_assoc($select_res)){
			echo "<tr><td colspan=\"2\" align=\"left\"  class=\"forum_header\"><font size=\"3\"> - Posted On: <em>".$rowr['date']."</em></font></td></tr>\n";
			echo "<tr><td align=\"left\" width=\"15%\" valign=\"top\"  class=\"forum_header\">".uid($rowr['uid'], true)."<br>Posts: ".posts($rowr['uid'])."<br>".$a."</td>\n";
			echo "<td align=\"left\" valign=\"top\" class=\"forum_header\">";
			echo topic($rowr['message']);
			echo "</td>\n";
			echo "</tr>\n";
		}

		echo "<form method=\"post\" action=\"./forum-index.php?act=reply&id=".$row['id']."\">\n";
		echo "<tr><td colspan=\"2\" align=\"center\"><textarea style=\"width:90%\" name=\"reply\"></textarea><br><input type=\"submit\" name=\"submit\" value=\"add reply!\" style=\"width:90%\" /></td></tr>\n";

		echo "</table>\n";
	}
}
}else{
echo "Please view a valid topic!\n";
}

?>

 

i dont know how to fix it. in the $pages bit

 

anyone?

Link to comment
Share on other sites

OK try this code - it looks like you were trying to calculate how many pages before running a query to find out how many lines were being returned.

 

I've re-written the first chunk but formatted everything else - back up your original script first before trying this one.

 

<?php
$intMax=10; //NUMBER OF ITEMS PER PAGE
$id = intval($_GET['id']);
$page = ($_GET['page'] > 0 ? "1" : intval($_GET['page']);

//$page = ceil($page);
//$limit = 10;

//$start = $limit;
//$end = $page*$limit-($limit);

if ($id>0) {
  $sql="SELECT * FROM forum_topics WHERE id='".$id."'";
  $intTotalMatched=mysql_num_rows(mysql_query($sql));
  if (mysql_num_rows($res) == 0) {
    echo "This topic does not exist - Please view a valid topic!\n";
  } else {
    $intTotalPages=ceil($intTotalMatched/$intMax);
    $intStart=(($intPage*$intMax)-$intMax);
    if ($page>$intTotalPages) {$page=$intTotalPages;}
echo 'id='.$id.', page='.$page.', totalmatched='.$intTotalMatched.', totalpages='.$intTotalPages.', start='.$intStart.', end='.$intMax.'<br />';
    $res=mysql_query($sql." LIMIT ".$intStart.",".$intMax);
echo 'sql='.$sql.'<br />';
//  $sql = "SELECT * FROM forum_topics WHERE id='".$id."'";
//  $res = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_assoc($res);
    $sql2 = "SELECT admin FROM forum_sub_cats WHERE id='".$row['cid']."'";
    $res2 = mysql_query($sql2) or die(mysql_error());
    $row2 = mysql_fetch_assoc($res2);
    if ($row2['admin'] == 1 && $admin_user_level == 0) {
      echo "You cannot view this topic because you are not an admin!\n";
    } else {
      $a = (isa($row['uid'])) ? "<font style=\"color:#800000;\">ADMIN</font>" : "";

      $amount_check = "SELECT * FROM forum_replies WHERE tid='".$tid."'";
      $amount_check_res = mysql_query($amount_check) or die(mysql_error());
      $amount_count = mysql_num_rows($amount_check_res);
      $pages = 4;

      $previous = ($page-1 <= 0) ? "« Prev" : "<a href=\"./forum-index.php?act=topic&id=".$id."&page=".($page-1)."\">« Prev</a>";
      $nextpage = ($page+1 > $pages) ? " Next »" : " <a href=\"./forum-index.php?act=topic&id=".$id."&page=".($page+1)."\">Next »</a>";

      echo $previous;
      for($i=1;$i<=$pages;$i++){
        $href = ($page == $i) ? " ".$i." " : " <a href=\"./forum-index.php?act=topic&id=".$id."&page=".$i."\">".$i."</a> ";
   
        echo $href;
      }
      echo $nextpage;
      echo "</td></tr>\n";

      echo "<table border=\"0\" width=\"100%\" cellspacing=\"3\" cellpadding=\"3\">\n";
      echo "<tr><td colspan=\"2\" align=\"left\"  class=\"forum_header\"><b><font size=\"3\">".$row['title']."</font></b><font size=\"3\"> - Posted On: <em>".$row['date']."</em></font></td></tr>\n";
      echo "<tr><td align=\"left\" width=\"15%\" valign=\"top\"  class=\"forum_header\">".uid($row['uid'], true)."<br>Posts: ".posts($row['uid'])."<br>".$a."</td>\n";
      echo "<td align=\"left\" valign=\"top\" class=\"forum_header\">";
      echo topic($row['message']);
      echo "</td>\n";
      echo "</tr>\n";

      $select_sql = "SELECT * FROM `forum_replies`WHERE tid = ".$id." ORDER BY id ASC LIMIT ".$end.", ".$start."";
      $select_res = mysql_query($select_sql) or die(mysql_error()); 

      while($rowr = mysql_fetch_assoc($select_res)){
        echo "<tr><td colspan=\"2\" align=\"left\"  class=\"forum_header\"><font size=\"3\"> - Posted On: <em>".$rowr['date']."</em></font></td></tr>\n";
        echo "<tr><td align=\"left\" width=\"15%\" valign=\"top\"  class=\"forum_header\">".uid($rowr['uid'], true)."<br>Posts: ".posts($rowr['uid'])."<br>".$a."</td>\n";
        echo "<td align=\"left\" valign=\"top\" class=\"forum_header\">";
        echo topic($rowr['message']);
        echo "</td>\n";
        echo "</tr>\n";
      }

      echo "<form method=\"post\" action=\"./forum-index.php?act=reply&id=".$row['id']."\">\n";
      echo "<tr><td colspan=\"2\" align=\"center\"><textarea style=\"width:90%\" name=\"reply\"></textarea><br><input type=\"submit\" name=\"submit\" value=\"add reply!\" style=\"width:90%\" /></td></tr>\n";
      echo "</table>\n";
    }
  }
}

?>

Link to comment
Share on other sites

OK try this code - it looks like you were trying to calculate how many pages before running a query to find out how many lines were being returned.

 

I've re-written the first chunk but formatted everything else - back up your original script first before trying this one.

 

<?php
$intMax=10; //NUMBER OF ITEMS PER PAGE
$id = intval($_GET['id']);
$page = ($_GET['page'] > 0 ? "1" : intval($_GET['page']);

//$page = ceil($page);
//$limit = 10;

//$start = $limit;
//$end = $page*$limit-($limit);

if ($id>0) {
  $sql="SELECT * FROM forum_topics WHERE id='".$id."'";
  $intTotalMatched=mysql_num_rows(mysql_query($sql));
  if (mysql_num_rows($res) == 0) {
    echo "This topic does not exist - Please view a valid topic!\n";
  } else {
    $intTotalPages=ceil($intTotalMatched/$intMax);
    $intStart=(($intPage*$intMax)-$intMax);
    if ($page>$intTotalPages) {$page=$intTotalPages;}
echo 'id='.$id.', page='.$page.', totalmatched='.$intTotalMatched.', totalpages='.$intTotalPages.', start='.$intStart.', end='.$intMax.'<br />';
    $res=mysql_query($sql." LIMIT ".$intStart.",".$intMax);
echo 'sql='.$sql.'<br />';
//  $sql = "SELECT * FROM forum_topics WHERE id='".$id."'";
//  $res = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_assoc($res);
    $sql2 = "SELECT admin FROM forum_sub_cats WHERE id='".$row['cid']."'";
    $res2 = mysql_query($sql2) or die(mysql_error());
    $row2 = mysql_fetch_assoc($res2);
    if ($row2['admin'] == 1 && $admin_user_level == 0) {
      echo "You cannot view this topic because you are not an admin!\n";
    } else {
      $a = (isa($row['uid'])) ? "<font style=\"color:#800000;\">ADMIN</font>" : "";

      $amount_check = "SELECT * FROM forum_replies WHERE tid='".$tid."'";
      $amount_check_res = mysql_query($amount_check) or die(mysql_error());
      $amount_count = mysql_num_rows($amount_check_res);
      $pages = 4;

      $previous = ($page-1 <= 0) ? "« Prev" : "<a href=\"./forum-index.php?act=topic&id=".$id."&page=".($page-1)."\">« Prev</a>";
      $nextpage = ($page+1 > $pages) ? " Next »" : " <a href=\"./forum-index.php?act=topic&id=".$id."&page=".($page+1)."\">Next »</a>";

      echo $previous;
      for($i=1;$i<=$pages;$i++){
        $href = ($page == $i) ? " ".$i." " : " <a href=\"./forum-index.php?act=topic&id=".$id."&page=".$i."\">".$i."</a> ";
   
        echo $href;
      }
      echo $nextpage;
      echo "</td></tr>\n";

      echo "<table border=\"0\" width=\"100%\" cellspacing=\"3\" cellpadding=\"3\">\n";
      echo "<tr><td colspan=\"2\" align=\"left\"  class=\"forum_header\"><b><font size=\"3\">".$row['title']."</font></b><font size=\"3\"> - Posted On: <em>".$row['date']."</em></font></td></tr>\n";
      echo "<tr><td align=\"left\" width=\"15%\" valign=\"top\"  class=\"forum_header\">".uid($row['uid'], true)."<br>Posts: ".posts($row['uid'])."<br>".$a."</td>\n";
      echo "<td align=\"left\" valign=\"top\" class=\"forum_header\">";
      echo topic($row['message']);
      echo "</td>\n";
      echo "</tr>\n";

      $select_sql = "SELECT * FROM `forum_replies`WHERE tid = ".$id." ORDER BY id ASC LIMIT ".$end.", ".$start."";
      $select_res = mysql_query($select_sql) or die(mysql_error()); 

      while($rowr = mysql_fetch_assoc($select_res)){
        echo "<tr><td colspan=\"2\" align=\"left\"  class=\"forum_header\"><font size=\"3\"> - Posted On: <em>".$rowr['date']."</em></font></td></tr>\n";
        echo "<tr><td align=\"left\" width=\"15%\" valign=\"top\"  class=\"forum_header\">".uid($rowr['uid'], true)."<br>Posts: ".posts($rowr['uid'])."<br>".$a."</td>\n";
        echo "<td align=\"left\" valign=\"top\" class=\"forum_header\">";
        echo topic($rowr['message']);
        echo "</td>\n";
        echo "</tr>\n";
      }

      echo "<form method=\"post\" action=\"./forum-index.php?act=reply&id=".$row['id']."\">\n";
      echo "<tr><td colspan=\"2\" align=\"center\"><textarea style=\"width:90%\" name=\"reply\"></textarea><br><input type=\"submit\" name=\"submit\" value=\"add reply!\" style=\"width:90%\" /></td></tr>\n";
      echo "</table>\n";
    }
  }
}

?>

 

the new code hasn't worked.

 

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.