Probleme avec Switch

Répondre
mouna
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
LA GLOBULE
le 04/06/2005 à 12:22
LA GLOBULE
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&param2=titi">lien</a>
mouna
le 04/06/2005 à 12:41
mouna
Donc ca existe pas un lien du genre index.php?param1=1&param2=2 en le faisant par switch, on peut le faire automatiquement
mouna
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");
}
?>
mouna
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
LA GLOBULE
le 04/06/2005 à 13:23
LA GLOBULE
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.
mouna
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&param2=titi">lien</a>


J'ai inclu ca: elseif $p == page1 include page1.php
LA GLOBULE
le 04/06/2005 à 13:50
LA GLOBULE
Tu le fais expres, c'est pas possible.

Laisse tomber les include !!!
Faire un switch include ou un if elseif include, c'est pareil.
mouna
le 04/06/2005 à 13:54
mouna
Alors c'est quoi la methode pour recuperer ce titi:
<a href="toto.php?param1=1&param2=titi">lien</a>
Répondre
LoadingChargement en cours