marc6678 Posted August 26, 2012 Share Posted August 26, 2012 Hi Guys, Just recently used a pagination script i also found on phpfreaks for a project and i'm having trouble using it as my query pulls data from 2 tables. // connect to the database include('connect.php'); // find out how many rows are in the table $sql = "SELECT MAX(id) FROM actors"; $result = mysql_query($sql, $con) or trigger_error("SQL", E_USER_ERROR); $r = mysql_fetch_row($result); $numrows = $r[0]; // number of rows to show per page $rowsperpage = 6; // find out total pages $totalpages = ceil($numrows / $rowsperpage); // get the current page or set a default if (isset($_GET['currentpage']) && is_numeric($_GET['currentpage'])) { // cast var as int $currentpage = (int) $_GET['currentpage']; } else { // default page num $currentpage = 1; } // end if // if current page is greater than total pages... if ($currentpage > $totalpages) { // set current page to last page $currentpage = $totalpages; } // end if // if current page is less than first page... if ($currentpage < 1) { // set current page to first page $currentpage = 1; } // end if // the offset of the list, based on current page $offset = ($currentpage - 1) * $rowsperpage; // get the info from the db $sql = "select actors.*, images.* from actors, images where actors.id = images.id and images.flag = '1' LIMIT $offset, $rowsperpage"; $result2 = mysql_query($sql, $con) or trigger_error("SQL", E_USER_ERROR); // loop through results of database query, displaying them in the table while($row = mysql_fetch_assoc( $result2 )) { $ID = $row['id']; // collect the data from the second query for the photo $row = mysql_fetch_array( $result2 ); echo '<div class="person">'; if ($row['image'] == false) { echo '<img src="media/images/actors/actor.jpg"/>'; } else { echo '<img src="'.$row['image'] . '"/>'; } // echo out the contents of each row into a table echo '<p>' . '<a href="profile.php?id=' . $row['id'] .'" target="blank">' . $row['firstname'] . " " . $row['surname'] . '</a>' .'</p>' ; echo '</div>'; } /****** build the pagination links ******/ // range of num links to show $range = 3; // loop to show links to range of pages around current page for ($x = ($currentpage - $range); $x < (($currentpage + $range) + 1); $x++) { // if it's a valid page number... if (($x > 0) && ($x <= $totalpages)) { // if we're on current page... if ($x == $currentpage) { // 'highlight' it but don't make a link echo " [<b>$x</b>] "; // if not current page... } else { // make it a link echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$x'>$x</a> "; } // end else } // end if } // end for /****** end build pagination links ******/ The query works and has the desired effect when ran in NetBeans which i why i think its a problem with how i have implemented it in the pagination script. The script only shows one record and not all 4 records which should be shown? any ideas? Thanks in advance, Marc Quote Link to comment Share on other sites More sharing options...
Christian F. Posted August 26, 2012 Share Posted August 26, 2012 I suspect that the following bit is the source of your troubles: while ($row = mysql_fetch_assoc ($result2)) { $ID = $row['id']; // collect the data from the second query for the photo $row = mysql_fetch_array ($result2); Quote Link to comment Share on other sites More sharing options...
marc6678 Posted August 26, 2012 Author Share Posted August 26, 2012 Thanks very much mate. That has fixed the issue. Shows how a fresh pair of eyes can solve even the most stupid problem, been at it for last couple of hours, how embarrasing Thanks again, Marc Quote Link to comment Share on other sites More sharing options...
Christian F. Posted August 26, 2012 Share Posted August 26, 2012 You're welcome, and I'm glad I could help. Also, don't worry about it; We've all done similar stuff at some point, and will most likely do them again. Quote Link to comment 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.