Probleme avec Switch
le 03/06/2005 à 22:16
mouna
Bonjour,
Mon probleme c'est d'avoir un resultat dans la bare de des adresses de cette maniere:
index.php?mode=menu&p=page1
Je fais mon switch de la maniere suivante:
<?php
if(isset($_GET["mode"])) $mode = $_GET["mode"];
else $mode = "";
if(!file_exists($mode.'.php.'))
{
$mode="default.php";
}
switch ($mode)
{
case "welcome":
include ("welcome.php");
break;
case "welcome2":
include ("welcome2.php");
break;
case "welcome3":
include ("welcome3.php");
break;
case "welcome4":
include ("welcome4.php");
break;
default:
include ("default.php");
}
//2eme partie
if(isset($_GET["p"])) $p = $_GET["p"];
else $p = "";
if(!file_exists($p.'.php.'))
{
$p="default.php";
}
switch ($p)
{
case "page1":
include ("page1.php");
break;
case "page2":
include ("page2.php");
break;
default:
include ("default.php");
}
?>
Le probleme il m'affiche les donnees des 2 switch melangees.
Comment resoudre ce probleme? parce que ca va me faciliter de mettre l url un peu longue juste en ajoutant un autre switch, par exemple:
index.php?mode=menu&p=page1&article=article1
Merci d'avance
C'est pas en faisant des switch include que tu auras une URL à plusieurs paramètres.
Il te suffit de faire un lien du genre :
<a href="toto.php?param1=1¶m2=titi">lien</a>
le 04/06/2005 à 12:41
mouna
Donc ca existe pas un lien du genre index.php?param1=1¶m2=2 en le faisant par switch, on peut le faire automatiquement
le 04/06/2005 à 13:04
mouna
index.php:
=========
<table width="85%" align=Center>
<tr>
<td>
<table width="85%" align=Center>
<tr>
<td>
<a href="index.php?mode=welcome">Welcome</a>
</td>
</tr>
<tr>
<td>
<a href="index.php?mode=welcome2">Welcome2</a>
</td>
</tr>
<tr>
<td>
<a href="index.php?mode=welcome3">Welcome3</a>
</td>
</tr>
<tr>
<td>
<a href="index.php?mode=welcome4">Welcome4</a>
</td>
</tr>
<tr>
<td>
<a href="index.php?mode=welcome&p=page1">Page1</a>
</td>
</tr>
<tr>
<td>
<a href="index.php?mode=welcome2&p=page2">Page2</a>
</td>
</tr>
</table>
</td>
<td width="80%">
<table>
<tr>
<td>
<?
include ("main.php");
?>
</td>
</tr>
</table>
</tr>
</table>
et main.php:
============
<?php
if(isset($_GET["mode"])) $mode = $_GET["mode"];
else $mode = "";
if(!file_exists($mode.'.php.'))
{
$mode="default.php";
}
switch ($mode)
{
case "welcome":
include ("welcome.php");
break;
case "welcome2":
include ("welcome2.php");
break;
case "welcome3":
include ("welcome3.php");
break;
case "welcome4":
include ("welcome4.php");
break;
default:
include ("default.php");
}
//2eme partie
if(isset($_GET["p"])) $p = $_GET["p"];
else $p = "";
if(!file_exists($p.'.php.'))
{
$p="default.php";
}
switch ($p)
{
case "page1":
include ("page1.php");
break;
case "page2":
include ("page2.php");
break;
default:
include ("default.php");
}
?>
le 04/06/2005 à 13:18
mouna
Quand je click sur:
<a href="index.php?mode=welcome&p=page1">Page1</a>
la page a afficher est: welcome.php et pas page1.php
<a href="index.php? mode=welcome2&p=page2">Page2</a>
la page a afficher est: welcome2.php et pas page2.php
Mais vire tes switch.
Des que tu click sur un lien, tu retournes sur l'index, et avec l'include du main.php, au premier switch, des qu'il trouve la page demandée, il fait l'include de la page (ex. welcome.php).
On ne peut pas faire de lien de ce genre avec des switch include.
Ou alors, il faut faire en sorte que ton switch construise une URL, puis, tu rediriges le visiteurs vers cette URL avec un header.
Mais bon, le plus simple c'est d'oublier le switch include.
le 04/06/2005 à 13:36
mouna
Je change de methode:
<?php
if(isset($_GET['mode'])) $mode = $_GET['mode'];
else $mode ='';
if ($mode == '')
{
include('index2.php');
}
elseif ($mode == 'welcome')
{
include('welcome.php');
}
elseif ($mode == 'welcome2')
{
include('welcome2.php');
}
elseif ($p == 'page1')
{
include('page1.php');
}
else
{
// page par difaut
include('default.php');
}
?>
<a href="index.php?mode=welcome2&p=page2">Page2</a> ca me retourne welcome2.php je vais perdre ma tete, meme si je fais de meme:
Il te suffit de faire un lien du genre :
<a href="toto.php?param1=1¶m2=titi">lien</a>
J'ai inclu ca: elseif $p == page1 include page1.php
Tu le fais expres, c'est pas possible.
Laisse tomber les include !!!
Faire un switch include ou un if elseif include, c'est pareil.
le 04/06/2005 à 13:54
mouna
Alors c'est quoi la methode pour recuperer ce titi:
<a href="toto.php?param1=1¶m2=titi">lien</a>
Ben echo $_GET['param2'].