ushanbb Posted October 27, 2009 Share Posted October 27, 2009 Hi everyone, I have seen a few topics like this one. Still cant find the specific thing, so I am asking - does anyone know this? I am trying to combine a mysql query with this code I found at php-mysql-tutorial.com. Essentially this is the rub. The pages are working fine, but I am flumoxxed as to how to apply the $imgid to a page (viewing one image per page). The imgid are in numerical order but do not begin at one, and there may be gaps - eg img 3, 5, 7,8 ,9 and 10 on a 6 page pagination. I can pass the $page variable because it is a simple increment iteration, but how do I apply the changing $imgid value? so that pp1 has an imgid of 3 passed, pp2 is 5, pp3 is 7 etc. I expect it is something to do with combining a query and an array and applying it, but I'm having a brain-strain at that point. Gratefully, here is my code stripped of excess ( I hope). <?php // back button depending on which gallery is parent if(!isset($_REQUEST['random'])) { $file= "gallery"; $varid = 0; } else { $file= "random"; $varid = 1; } echo "<fieldset><div id=\"back_but\"><a href=\"gallery.php?blog=$file\"> <br /></a></div>"; $url = "blog=picture&pics=picdetail&"; // how many rows to show per page $rowsPerPage = 1; // by default we show first page $pageNum = 1; // if $_GET['page'] defined, use it as page number if(isset($_GET['page'])) { $pageNum = $_GET['page']; } // counting the offset $offset = ($pageNum - 1) * $rowsPerPage; $query = "SELECT imgid, title, year, description, thumburl, imgurl, medium, style, clientname FROM images LEFT JOIN mediums ON images.mediumid = mediums.mediumid LEFT JOIN imgstyle ON images.styleid = imgstyle.styleid LEFT JOIN clients ON images.clientid = clients.clientid WHERE imgid = $imgid". " LIMIT $offset, $rowsPerPage"; echo $query; $result = mysql_query($query); while($row=mysql_fetch_array($result, MYSQL_ASSOC)) { $imgid = $row['imgid']; $title = $row['title']; $year = $row['year']; $description = $row['description']; $thumburl = $row['thumburl']; $medium = $row['medium']; $style = $row['style']; $client = $row['clientname']; } ?> <fieldset><?php // how many rows we have in database $query = "SELECT COUNT(imgid) AS numrows FROM images WHERE tarot = $varid"; $result = mysql_query($query) or die('Error, query failed'); $row = mysql_fetch_array($result, MYSQL_ASSOC); $numrows = $row['numrows']; // how many pages we have when using paging? $maxPage = ceil($numrows/$rowsPerPage); // print the link to access each page $self = $_SERVER['PHP_SELF']; $nav = ''; for($page = 1; $page <= $maxPage; $page++) { if ($page == $pageNum) { $nav .= " $page "; // no need to create a link to current page } else { $nav .= " <a href=\"$self?$url&page=$page\">$page</a> "; } } // creating previous and next link // plus the link to go straight to // the first and last page if ($pageNum > 1) { $page = $pageNum - 1; $prev = " <a href=\"$self?$url&page=$page\">[Prev]</a> "; $first = " <a href=\"$self?$url&page=1\">[First Page]</a> "; } else { $prev = ' '; // we're on page one, don't print previous link $first = ' '; // nor the first page link } if ($pageNum < $maxPage) { $page = $pageNum + 1; $next = " <a href=\"$self?$url&page=$page\">[Next]</a> "; $last = " <a href=\"$self?$url&page=$maxPage\">[Last Page]</a> "; } else { $next = ' '; // we're on the last page, don't print next link $last = ' '; // nor the last page link } // print the navigation link echo $first . $prev . $nav . $next . $last; ?></fieldset> Link to comment https://forums.phpfreaks.com/topic/179152-passing-variables-with-pagination-iterating-through-unique-id-per-link/ Share on other sites More sharing options...
WolfRage Posted October 27, 2009 Share Posted October 27, 2009 Although I am not sure I totally understand your request. I believe the best solution to your problem is to use sessions. Then you can make a query to the database and extract all of the $imgid 's at the same time and feed them to an array. Save that array in the user’s session and then access them by page 6 at a time. Then you are reducing the number of request that you are making to the database and you will have an array with the correct $imgid 's. You could even cache this value and have it updated every so often to further reduce the number of queries being processed on the database. Link to comment https://forums.phpfreaks.com/topic/179152-passing-variables-with-pagination-iterating-through-unique-id-per-link/#findComment-945337 Share on other sites More sharing options...
ushanbb Posted November 2, 2009 Author Share Posted November 2, 2009 Thanks WolfRage - Yes, I can see how that might work - store all the $imgid's into a session array and do the maths according to which page it is. I'll play with it - let you know how I go. Link to comment https://forums.phpfreaks.com/topic/179152-passing-variables-with-pagination-iterating-through-unique-id-per-link/#findComment-949011 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.