Include

sasuukeee
Invité n'ayant pas de compte PHPfrance

29 oct. 2008, 00:52

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.

ViPHP
ViPHP | 2287 Messages

29 oct. 2008, 01:59

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.
if(!@work()){ Nespresso(); } else { what(); }
______________________________

ViPHP
ViPHP | 4674 Messages

29 oct. 2008, 02:02

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.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

29 oct. 2008, 09:20

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');
       }
Modifié en dernier par albat le 29 oct. 2008, 21:30, modifié 1 fois.

Invité
Invité n'ayant pas de compte PHPfrance

29 oct. 2008, 21:06

ça fonctionne
merci beaucoup.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

29 oct. 2008, 21:30

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 !!! ;)