AdRock Posted July 21, 2006 Share Posted July 21, 2006 Hello there......I have a huge problem and have no idea how to sort itI use a switch statement to display each of my pages (only some of them are shown to save space)[code]<?phpswitch ($_GET['page']){ case "contact":include('contact.php');break;default:include('home.php');}?>[/code]and i have a pagination script to display a set number of record per page. The first page displays ok but when i click on the next page link it defaults back to the default page (obviuosly because the switch statement isn't set up to handle it)The link that appears in the browser window is [b]http://www.mysite.co.uk/index.php?page=newsitem?limit=2&page=2[/b] but no page is displayedHow do I sort this problem out? ??? Link to comment https://forums.phpfreaks.com/topic/15292-help-with-displaying-pagaination-with-switch-statement/ Share on other sites More sharing options...
KittyKate Posted July 21, 2006 Share Posted July 21, 2006 I can find two problems just in the URL. You have two '[color=orange]?[/color]'s and two '[color=red]page[/color]'s defined. Perhaps change the name of one of the pages and figure out where the double question marks are coming from? http://www.mysite.co.uk/index.php[color=orange]?[/color][color=red]page=newsitem[/color][color=orange]?[/color]limit=2&[color=red]page=2[/color] Link to comment https://forums.phpfreaks.com/topic/15292-help-with-displaying-pagaination-with-switch-statement/#findComment-61838 Share on other sites More sharing options...
AdRock Posted July 21, 2006 Author Share Posted July 21, 2006 I have looked at www.php.net/switch and have noticed a post on nested switch.Could that be a solution to the problem and if so how do I implement it.As for the 2 pages, page=2 is in the pagination script Link to comment https://forums.phpfreaks.com/topic/15292-help-with-displaying-pagaination-with-switch-statement/#findComment-61841 Share on other sites More sharing options...
KittyKate Posted July 21, 2006 Share Posted July 21, 2006 My assumption is the issue is with the two "page"s being declared. Try putting [code]case '2': print "Need to fix some GET names"[/code]in the switch you included and see if it returns anything. Link to comment https://forums.phpfreaks.com/topic/15292-help-with-displaying-pagaination-with-switch-statement/#findComment-61858 Share on other sites More sharing options...
AdRock Posted July 21, 2006 Author Share Posted July 21, 2006 Right......here is my index.php switch statement[code]<?php switch ($_GET['page']) { case "contact": include('contact.php'); break; case "news": include('newsitem.php'); break; default: include('home.php'); }?>[/code]and here is the pagination script i'm using in news.php[code]<? //REMEMBER TO CONNECT TO DATABASE! include_once("includes/connection.php"); @mysql_connect($host, $user, $password) or die("ERROR--CAN'T CONNECT TO SERVER"); @mysql_select_db($database) or die("ERROR--CAN'T CONNECT TO DB"); //**EDIT TO YOUR TABLE NAME, ECT. $t = mysql_query("SELECT * FROM `news`"); if(!$t) die(mysql_error()); $a = mysql_fetch_object($t); $total_items = mysql_num_rows($t); $limit = $_GET['limit']; $type = $_GET['type']; $page = $_GET['page']; //set default if: $limit is empty, non numerical, less than 10, greater than 50 if((!$limit) || (is_numeric($limit) == false) || ($limit < 10) || ($limit > 50)) { $limit = 2; //default } //set default if: $page is empty, non numerical, less than zero, greater than total available if((!$page) || (is_numeric($page) == false) || ($page < 0) || ($page > $total_items)) { $page = 1; //default } //calcuate total pages $total_pages = ceil($total_items / $limit); $set_limit = $page * $limit - ($limit); //query: **EDIT TO YOUR TABLE NAME, ECT. $q = mysql_query("SELECT * FROM `news` LIMIT $set_limit, $limit"); if(!$q) die(mysql_error()); $err = mysql_num_rows($q); if($err == 0) die("No matches met your criteria."); //Results per page: **EDIT LINK PATH** echo(" <a href=?page=newsitem?limit=10&page=1></a> <a href=?page=newsitem?limit=25&page=1></a> <a href=?page=newsitem?limit=50&page=1></a>"); //show data matching query: while($code = mysql_fetch_object($q)) { echo("item: ".$code->title."<BR>"); } $id = urlencode($id); //makes browser friendly //prev. page: **EDIT LINK PATH** $prev_page = $page - 1; if($prev_page >= 1) { echo("<b><<</b> <a href=?page=newsitem?limit=$limit&page=$prev_page><b>Prev.</b></a>"); } //Display middle pages: **EDIT LINK PATH** for($a = 1; $a <= $total_pages; $a++) { if($a == $page) { echo("<b> $a</b> | "); //no link } else { echo(" <a href=?page=newsitem?limit=$limit&page=$a> $a </a> | "); } } //next page: **EDIT THIS LINK PATH** $next_page = $page + 1; if($next_page <= $total_pages) { echo("<a href=?page=newsitem?limit=$limit&page=$next_page><b>Next</b></a> > >"); } //all done ?>[/code]if you can make sense of why it's not displaying page=2 etc please let me know Link to comment https://forums.phpfreaks.com/topic/15292-help-with-displaying-pagaination-with-switch-statement/#findComment-61893 Share on other sites More sharing options...
KittyKate Posted July 24, 2006 Share Posted July 24, 2006 You are referencing the variable $_GET['page'] in two contexts. Once, in the first block of code you posted, you use it to determine the page type (contact, news, etc). The second time, you use it for your pagaination (and expect a number). I'm assuming you set the name for the first instance of 'page' yourself. I'd recommend changing that to 'type' or another word. That should remove your issue. Link to comment https://forums.phpfreaks.com/topic/15292-help-with-displaying-pagaination-with-switch-statement/#findComment-62924 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.