Page 1 sur 1

probleme avec switch include

Posté : 13 nov. 2012, 01:00
par Mr-lova58
Bonjour,
je maitrise pas encore php je voudrais faire une include sur mon site.
Au départ je me sert de quelque page vide pour le test mais j'ai un message d'erreure et je ne c'est pas si c'est comme cela qu'on fait pour utiliser Include.

<a href="switch_include.php?lien=episode">episode<br>
<a href="switch_include.php?lien=faq">faq<br>
<a href="switch_include.php?lien=news">news</a><br>

<br>
<?php

switch ($_GET['lien'])
{
case "faq": // ouvre la page faq
include ("faq.php");
break;

case "news": // ouvre la page news
include ("news.php");
break;

case "episode";
include ("episode.php");
break;

default:
include ("news.php");
}
?>


enfette le script marche quand je clique sur les lien mais quand je sui dans la page d'index ( switch_include.php ).
sa m'affiche un message d'erreur :

episode
faq
news


( ! ) Notice: Undefined index: lien in C:\wamp\www\tests\condition\switch_include.php on line 8
Call Stack
# Time Memory Function Location
1 0.0003 366984 {main}( ) ..\switch_include.php:0
la page newsssssssss !!!!

Re: probleme avec switch include

Posté : 13 nov. 2012, 02:28
par AB
Faut vérifier l'existence de ta variable avant de la tester :
<?php if (isset($_GET['lien']))
{
switch ($_GET['lien'])
{
case "faq": // ouvre la page faq
include ("faq.php");
break;

case "news": // ouvre la page news
include ("news.php");
break;

case "episode":
include ("episode.php");
break;

default:
include ("news.php");
}
}?>
Attention dans ton code tu avais un ';' juste après case "episode"

Re: probleme avec switch include

Posté : 13 nov. 2012, 03:40
par mr-lova58
Merciii beaucoup je comprend mieu maintenant.

Mais il y a une dernière chose que je n'arrive pas à faire.

je voudrai que justement dans l'index(switch_include.php) la page news.php soit inclus obliger.
Ensuite une fois cliquer sur les liens on puisse accéder aux pages demandé.

Comment faire STP :(

Re: probleme avec switch include

Posté : 13 nov. 2012, 09:48
par Mazarini
Le plus simple est de commencer par calculer la page souhaité :
<?PHP
if (isset($_GET['lien'])) {
   $lien = $_GET['lien'];
} else {
   $lien = 'news';
} 
?>
et de remplacer le $_GET['lien'] par $lien dans le switch.

Re: probleme avec switch include

Posté : 13 nov. 2012, 22:39
par mr-lova58
Merci a vous deux !! :)

voici le codage finale qui fonctionne très bien ! :

// ( index = switch_include.php )
<a href="switch_include.php?lien=episode">episode<br>
<a href="switch_include.php?lien=faq">faq<br>
<a href="switch_include.php?lien=news">news</a><br>

<br>
<?php
if (isset($_GET['lien'])) // verifie si $_GET['lien'] existe avec isset
{
$lien = $_GET['lien'];
}
else
{
$lien = false; // si il existe pas alors $lien est egale a faux.
}
switch ($lien)
{
case "faq": // dans le cas ou $note vaut 0
include ("faq.php");
break;

case "news": // dans le cas ou $note vaut 5
include ("news.php");
break;

case "episode": // vaut 10
include ("episode.php");
break;

default:
include ("news.php"); // si $lien égale faux alors on ouvre news.php
}

?>

Re: probleme avec switch include

Posté : 14 nov. 2012, 02:59
par AB
if (isset($_GET['lien']))
{
$lien = $_GET['lien'];
}
else 
{
$lien = false; 
}
//...
Pour facilité l'écriture de conditions simples comme celles-ci, php dispose de l'opérateur ternaire.
Tu pourrais donc remplacer ce code par une seule ligne :
$lien = isset($_GET['lien']) ? $_GET['lien'] : false;
Notes bien que cela donne exactement le même résultat, c'est juste histoire d'avoir à écrire moins de code. Si ce sujet t'intéresse tu peux regarder là