Page 1 sur 1
if et include: où est mon erreur ?
Posté : 15 juin 2005, 18:20
par Guillmot
Bonjour !
Voilà, après 5 h d'essais infructueux, je rends les armes et vous demande audience...
Je suis un tout jeune novice du php, et je suis en plein problème !
Je voudrais faire une page php; avec inclusion d'autres pages suivant la valeur d'une variable $mod.
Pour 1 -> biologie
Pour 2 -> biochimie
Pour 3 -> physiologie
Par défaut: accueil.
Voici mon code:
<?php
if($mod = 1)
{
include("biologie.php");
}
else if($mod = 2)
{
include("biochimie.php");
}
else if($mod = 3)
{
include("physiologie.php");
}
else
{
include("accueil.php");
}
?>
Je l'ai inséré dans mon index donc; mais il m'inclut toujours biologie.php !
Que faire ? Voyez-vous l'erreur du script ?
Je vous remercie d'avance pour votre aide, et désolé si la question est "idiote" ou trop souvent répétée !
Guillmot
Posté : 15 juin 2005, 18:40
par smarties
utilise include_once("page.php"); pour évter les inclusions multiple du même fichier
Posté : 15 juin 2005, 18:41
par Guillmot
Salut !
Merci du tuyau; mais je dois avoir un autre problème parce que ça n'a pas résolu l'affaire ...
Guillmot
Posté : 15 juin 2005, 18:47
par Cyrano
Essaye avec ça:
<?php
switch ($mod)
{
case 1 : include_once("biologie.php"); break;
case 2 : include_once("biochimie.php"); break;
case 3 : include_once("physiologie.php"); break;
default: include_once("accueil.php");
}
?>
Posté : 15 juin 2005, 18:53
par daoud
oui et sinon, le test d'égalité c'est avec "==" et non "="
a+

daoud
Posté : 15 juin 2005, 18:56
par iclo
La solution de Cyrano est la meilleure, surtout si iil y a beaucoup de possibilités.
Mais juste pour information dans ton premier code, tu utilise un = dans ta condition, un test d'égalité se fait avec == un égale simple correspond à une affectation...
[Edit ] grillé par Daoud...

Posté : 15 juin 2005, 19:03
par Guillmot
Merci pour ces précisions sur les tests d'égalité !
J'ai testé le code (merci Cyrano !). Mais il y a un petit souci qui bloque tout:
Pour la ligne:
switch ($mod)
Mon ordi m'indique:
Notice: Undefined variable: mod in c:\program files\easyphp1-8\www\biologie\index.php on line 25
Je ne comprends pas trop pourquoi ?
Merci de votre aide ! Désolé si les questions sont basiques, mais commencer le php tout seul qd on n'est pas dans l'informatique, c'est dur
Guillmot.
Posté : 15 juin 2005, 19:04
par iclo
Il ne trouve nulle part la variable mod, si elle provient d'un formulaire ou de l'url de la page, il faut la recuperer respectivement par $_POST['mod '] et $_GET['mod']
Posté : 15 juin 2005, 19:07
par Cyrano
"undefined variable" ça veut dire que la variable n'a pas été initialisée, il n'y a donc dedans pas de valeur ou plutôt elle vaut NULL. donc ce que tu peux faire pour corriger le problème:
<?php
if(isset($mod))
{
switch ($mod)
{
case 1 : include_once("biologie.php"); break;
case 2 : include_once("biochimie.php"); break;
case 3 : include_once("physiologie.php"); break;
default: include_once("accueil.php");
}
}
else
{
include_once("accueil.php");
}
?>
Posté : 15 juin 2005, 19:07
par Guillmot
Ok...
Pour moi c'est donc $_GET['mod'] que j'introduis de la sorte:
switch ($_GET['mod'])
Si tout va bien, ça devrait régler le problème !
Edit: désolé Cyrano j'ai pas vu ta réponse, t'es allé + vite que moi ! Mais je la teste aussi merci !
Posté : 15 juin 2005, 19:09
par Cyrano
presque, tu risques une erreur à la première ouverture, modifie donc comme ceci:
<?php
$mod = isset($_GET['mod'])?$_GET['mod']:"";
switch ($mod)
{
case 1 : include_once("biologie.php"); break;
case 2 : include_once("biochimie.php"); break;
case 3 : include_once("physiologie.php"); break;
default: include_once("accueil.php");
}
?>
Posté : 15 juin 2005, 19:09
par iclo
Oui, mais il vaudrait mieux combiner avec la solution de Cyrano:
Imagine qu'un utilisateur accède directement à la page, sans placer de variable mod dans l'url ?
Tu peux donc faire isset($_GET['mod']) comme dans le code que t'a passé Cyrano, ainsi pas d'erreur possible
Posté : 15 juin 2005, 19:24
par Guillmot
Résolu !!!
Voici le code final qui tourne impec' :
<?php
if(isset($_GET['mod']))
{
switch ($_GET['mod'])
{
case 1 : include_once("biologie.php"); break;
case 2 : include_once("biochimie.php"); break;
case 3 : include_once("physiologie.php"); break;
default: include_once("accueil.php");
}
}
else
{
include_once("accueil.php");
}
?>
Merci à tous de votre aide !!! Et à bientôt
Guillmot
Posté : 15 juin 2005, 19:37
par Cyrano
Hum hum, regarde donc deux/trois messages plus haut..... la même en plus court et tout aussi efficace...
Posté : 15 juin 2005, 19:58
par Guillmot

Désolé; mais tu m'as bel et bien grillé
Bah ça montre que le forum est très actif c'est génial ! Et aussi que j'ai compris ce que vous m'avez montré, c'est également très important pour moi

Encore merci !
Guillmot