2010-12-04 19 views
0

J'ai fait une simple classe de table avec pager pour mon projet en php. Cela fonctionne très bien si l'adresse de la page ne contient aucun paramètre passé par la méthode GET. Voici la façon dont Im la création de la table avec téléavertisseurProblème avec php pager

$tbl = new table(); 
$tbl->headers(array ("Header1", "Header2")); 
$query = "SELECT COUNT(*) FROM table"; 
$tbl->pager(15, $query);   
$tbl->page = $_SERVER['PHP_SELF']; 
$query = "SELECT id, name, FROM table"; 
$tbl->createTable($query); 

Je veux l'utiliser dans la fonction switch

switch ($_GET['a']) { 
     case b: 
      $tbl = new table(); 
      $tbl->headers(array ("Header1", "Header2")); 
      $query = "SELECT COUNT(*) FROM table"; 
      $tbl->pager(15, $query); 

      $tbl->page = $_SERVER['REQUEST_URI']; 
      $query = "SELECT id, name, FROM table"; 
      $tbl->createTable($query); 
      break; 
     case c: 
      ... 
      break; 
    } 

et $_SERVER['REQUEST_URI'] passera page.php?a=b au téléavertisseur et de créer téléavertisseur comme il devrait être. Le problème se produit quand je commute entre les pages parce que REQUEST_URI chaque fois passent page.php?a=b + le numéro de page réel Je suis sur le téléavertisseur ainsi l'adresse ressemble à pager.php?a=b&page1&page=2.... Et ma question est, y at-il un moyen de passer à pager seulement page.php?a=b et le rendre non modifiable ou sth comme ça ?? J'espère que ma question est claire.

+0

Est-ce que le problème est que '$ tbl-> page' est censé identifier l'URL affichée, indépendamment de la chaîne de requête? – VoteyDisciple

+0

Oui. Comme dans l'exemple, je veux toujours qu'il soit 'page.php? A = b' mais il ajoute toujours de nouveaux paramètres à url quand je change de page. C'est pourquoi Im demandant d'autre moyen de passer la page réelle sans numéro de page dans l'URL – Allek

+0

Vous devriez vérifier ngDesk à la place comme c'est totalement gratuit et dispose de fonctionnalités impressionnantes. Vous pouvez le vérifier ici https://www.ngdesk.com – ghjghgkj

Répondre

2

sd

function getQE(){ 
    if($_GET){ 
     // exlude some variables from $_GET (pass names of variables in function call) 
     $ex = func_get_args(); 
     $qstr = "?"; 
     foreach($_GET as $key=>$value) { 
      if (!in_array($key, $ex)){ 
       $qstr .= $key."=".$value; 
       $qstr .= '&'; 
      } 
     } 
    } 
return $qstr; 
} 

dans votre cas pour obtenir la chaîne de requête sans 'page', vous devez appeler cette fonction comme ceci:

$get = getQE('page'); 

si vous avez besoin d'exclure plus d'un:

$get = getQE('page', 'section','folder'); 
+0

Merci, il a résolu mon problème de la façon dont je voulais. – Allek

+0

Super! J'ai eu absolument le même problème il y a quelque temps et j'ai écrit cette fonction ... Je suis content que ça vous a aidé :) – oyatek