Page 1 sur 1

Include

Posté : 29 oct. 2008, 00:52
par sasuukeee
Bonjour,

J'ai un petit souci alors je suis en train de faire un site internet et dans mon menu j'ai mis des boutons qui permettrait de changer de page php sauf qu'ici rien ne fonctionne
Voilà le code
if (isset($HTTP_GET_VARS["page"])) $page = $HTTP_GET_VARS["page"]; else $page = 0;
					$page = htmlspecialchars($page); // evite le cross scripting
					
					switch($page){
					
					case 1:
                    include("actualites.php");
                    break;
                    
					case '2':
                    include("legislation.php");
                    break;

					case 3:
                    include('contact.php');
                    break;
					
					default:
                    include("actualites.php");
                    break;
					}

et

<a href="index.php?page=3" title="Contactez-nous">
Merci.

Posté : 29 oct. 2008, 01:59
par Calimero
Bonsoir,

tu as dû t'inspirer d'un tutorial (ou d'un code) assez ancien : $HTTP_GET_VARS a été remplacé par $_GET , plus pratique à écrire. Si tu effectues les remplacements dans ton code ça devrait marcher.

Posté : 29 oct. 2008, 02:02
par Hywan
Hey :),

Tu as une erreur particulière ?

Préfère utiliser $_GET à $HTTP_GET_VARS, cette dernière est obsolète. Ton code est mal indenté aussi :
$page = '1';
if(isset($_GET['page']))
    $page = $_GET['page'];

switch($page) {

    case '2':
        include 'legislation.php';
      break;

    case '3':
        include 'contact.php';
      break;

    case '1':
    default:
        include 'actualites.php';
}
Toutes les valeurs provenant de $_GET ($_POST, $_COOKIE etc.) sont des chaînes de caractère. Donc même si ?page=1, ici 1 sera une chaîne et pas un entier.

Une façon de tester si ça marche est de faire un var_dump() de $page une fois déclarée et assignée. C'est une façon de débuger :
$page = 0;
if(isset($_GET['page']))
    $page = $_GET['page'];

var_dump($page);
Au passage, appliquer htmlspecialchars() ici n'est pas utile :).

Édition : mince, grillé à pas grand chose … y en a des gens sur ce forum à cette heure tardive :P.

Posté : 29 oct. 2008, 09:20
par albat
Ton code est mal indenté aussi
C'est vrai, mais les goûts et les couleurs... :roll:

Comme l'ont effectivement souligné mes confrères,
il y a effectivement deux sources d'erreur dans ton code :
- utilisation de $HTTP_GET_VARS au lieu de $_GET
- utilisation d'une chaine pour une valeur numérique

Voici ma proposition :
$page = (isset($_GET['page']) ? $_GET['page'] : 1);
switch ($page)
       { case 2 : include ('legislation.php'); break;
         case 3 : include ('contact.php'); break;
         case 1 :
         default : include ('actualites.php');
       }

Posté : 29 oct. 2008, 21:06
par Invité
ça fonctionne
merci beaucoup.

Posté : 29 oct. 2008, 21:30
par albat
Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton Image qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)