Hulio Posted November 25, 2006 Share Posted November 25, 2006 Is there anyone, who could give me a solution for this problem: My paging is working fine, but only the pageorder is wrong. The newest written item should set to the first page but it always goes to top of the last page. How could I get it working so that the newest items are always on the top of the first page?Code:<?phpinclude("MySQL.php");mysql_connect($mysql_server,$mysql_user,$mysql_pass);mysql_selectdb($mysql_db);class Pager{function getPagerData($numHits, $limit, $page){$numHits = (int) $numHits;$limit = max((int) $limit, 1);$page = (int) $page;$numPages = ceil($numHits / $limit);$page = max($page, 1);$page = min($page, $numPages);$offset = ($page - 1) * $limit;$ret = new stdClass;$ret->offset = $offset;$ret->limit = $limit;$ret->numPages = $numPages;$ret->page = $page;return $ret;}}// get the pager input values$page = $_GET['page'];$limit = 20;$result = mysql_query("select count(*) from Table");$total = mysql_result($result, 0, 0);// work out the pager values$pager = Pager::getPagerData($total, $limit, $page);$offset = $pager->offset;$limit = $pager->limit;$page = $pager->page;// use pager values to fetch data$query = "select * from Table order by Id limit $offset, $limit";$result = mysql_query($query);// use $result here to output page content// output paging system (could also do it before we output the page content)if ($page == 1) // this is the first page - there is no previous pageecho "Previous";else // not the first page, link to the previous pageecho "<a href=\"thepage.php?page=" . ($page - 1) . "\">Previous</a>";for ($i = 1; $i <= $pager->numPages; $i++) {echo " | ";if ($i == $pager->page)echo "Page $i";elseecho "<a href=\"thepage.php?page=$i\">Page $i</a>";}if ($page == $pager->numPages) // this is the last page - there is no next pageecho "Next";else // not the last page, link to the next pageecho "<a href=\"thepage.php?page=" . ($page + 1) . "\">Next</a>";for($i = mysql_numrows($result); $i > 0; $i--) {$ii = $i;$ii--;echo "<h1>";echo mysql_result($result,$ii,"Topic");echo "</h1>";echo "<p>";echo mysql_result($result,$ii,"Txt");echo "</p>";echo "<p>";echo mysql_result($result,$ii,"Sender");echo " - ";echo mysql_result($result,$ii,"Time");echo "</p>";}mysql_close();?> Quote Link to comment https://forums.phpfreaks.com/topic/28427-paging-problem/ Share on other sites More sharing options...
mansuang Posted November 25, 2006 Share Posted November 25, 2006 you may have to put DESC at ORDER BY in SQL statement.// use pager values to fetch data$query = "select * from Table order by Id [color=red]DESC[/color] limit $offset, $limit";$result = mysql_query($query); Quote Link to comment https://forums.phpfreaks.com/topic/28427-paging-problem/#findComment-130161 Share on other sites More sharing options...
The Little Guy Posted November 25, 2006 Share Posted November 25, 2006 $result = mysql_query("select count(*) from Table" ORDER BY DESC); Quote Link to comment https://forums.phpfreaks.com/topic/28427-paging-problem/#findComment-130164 Share on other sites More sharing options...
Hulio Posted November 25, 2006 Author Share Posted November 25, 2006 That doesn't solve the problem, because the pageorder is right, but the newest items go to the bottom of the first page. Quote Link to comment https://forums.phpfreaks.com/topic/28427-paging-problem/#findComment-130250 Share on other sites More sharing options...
Hulio Posted November 26, 2006 Author Share Posted November 26, 2006 Or should I just give up and try something else??! Quote Link to comment https://forums.phpfreaks.com/topic/28427-paging-problem/#findComment-130461 Share on other sites More sharing options...
mansuang Posted November 26, 2006 Share Posted November 26, 2006 Try to revise your "for" loop like this.for($i = [color=Red]$limit[/color]; $i > [color=red]$offset[/color]; $i--) {$ii = $i;$ii--;echo "<h1>";echo mysql_result($result,$ii ,"Topic");echo "</h1>";echo "<p>";echo mysql_result($result,$ii,"Txt");echo "</p>";echo "<p>";echo mysql_result($result,$ii,"Sender");echo " - ";echo mysql_result($result,$ii,"Time");echo "</p>";}Hope it works Quote Link to comment https://forums.phpfreaks.com/topic/28427-paging-problem/#findComment-130509 Share on other sites More sharing options...
Hulio Posted November 26, 2006 Author Share Posted November 26, 2006 No, it didn't work...it only shows the first page with oldest updated items... Quote Link to comment https://forums.phpfreaks.com/topic/28427-paging-problem/#findComment-130633 Share on other sites More sharing options...
sasa Posted November 26, 2006 Share Posted November 26, 2006 [code]<?phpinclude("MySQL.php");.....// use pager values to fetch data$query = "select * from Table order by Id DESC limit $offset, $limit"; // <= chamge this line $result = mysql_query($query);...for($ii = 0; $ii < mysql_numrows($result); $ii++) { // change this 3 lines// $ii = $i;// $ii--;echo "<h1>";echo mysql_result($result,$ii,"Topic");echo "</h1>";echo "<p>";echo mysql_result($result,$ii,"Txt");echo "</p>";echo "<p>";echo mysql_result($result,$ii,"Sender");echo " - ";echo mysql_result($result,$ii,"Time");echo "</p>";}mysql_close();?>[/code] Quote Link to comment https://forums.phpfreaks.com/topic/28427-paging-problem/#findComment-130646 Share on other sites More sharing options...
Hulio Posted November 27, 2006 Author Share Posted November 27, 2006 THere it is!!! Thanks a lot! Quote Link to comment https://forums.phpfreaks.com/topic/28427-paging-problem/#findComment-130859 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.