Jump to content

Help with displaying pagaination with switch statement


AdRock

Recommended Posts

Hello there......I have a huge problem and have no idea how to sort it

I use a switch statement to display each of my pages (only some of them are shown to save space)
[code]<?php

switch ($_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 displayed

How do I sort this problem out?  ???
Link to comment
Share on other sites

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
Share on other sites

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&amp;page=1></a>
<a href=?page=newsitem?limit=25&amp;page=1></a>
<a href=?page=newsitem?limit=50&amp;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>&lt;&lt;</b> <a href=?page=newsitem?limit=$limit&amp;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&amp;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&amp;page=$next_page><b>Next</b></a> &gt; &gt;");
}

//all done
?>[/code]
if you can make sense of why it's not displaying page=2 etc please let me know
Link to comment
Share on other sites

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
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.