Page 1 sur 1

Probleme avec Switch

Posté : 04 juin 2005, 12:23
par Mouna
Bonjour,

Mon but c'est d'avoir ce resultat avec switch et include:

index.php?mode=menu&p=page1

switch ($mode)
switch ($p)

et a chaque fois j'aimerais ajouter un parametre je peux ajouter un switch et les cases.

index.php?mode=menu&p=page1&article=article1 ainsi de suite

Mais comme resultat ca me donne un melange de contenu du $mode et $p

Code : Tout sélectionner

<?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"); } ?>
Merci

Posté : 04 juin 2005, 12:40
par Cyrano
Ok, on va commencer par l'optimisation de ton code:
<?php
$mode = isset($_GET["mode"])?$_GET["mode"]:"";
if(($mode != "") && (!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

$p = isset($_GET["p"])?$_GET["p"]:"";
if(($p != "") && !(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");
}
?>
Maintenant, ce qui manque, c'est la manière dont tu construis des urls: ce code ne sert pas à ça, il sert à include des fichiers. Il doit manduer du code dans ce que tu as montré.

Re

Posté : 04 juin 2005, 12:44
par Mouna
Ca donne toujours le meme resultat

Posté : 04 juin 2005, 12:53
par Cyrano
même problème => même question: comment génères-tu ton url ?? où est le code qui te sert à faire ça: pour l'instant, je ne le vois pas du tout, je ne vois qu'un code de récupération de paramètre et d'inclusion de fichiers.

Posté : 04 juin 2005, 12:59
par albat
Vu que tu testes en détail tes variables, on peut encore optimiser ton code:
$mode = (isset($_GET["mode"]) ? $_GET["mode"] : "");
if (($mode!="") && (!file_exists($mode.'.php.')))
   { $mode="default.php";
   }
include ($mode);

//2e partie

$p = isset($_GET["p"])?$_GET["p"]:"";
if (($p!="") && !(file_exists($p.'.php')))
   { $p="default.php";
   }
include ($p);

Posté : 04 juin 2005, 13:00
par Cyrano
Ha ben tiens oui, au fond, c'est encore plus simple ;)

Quoique j'ai fait une erreur:
<?php
$mode = (isset($_GET["mode"]) ? $_GET["mode"] : "");
if (($mode == "") || (!file_exists($mode.'.php.')))
{
    $mode="default.php";
}
include ($mode);

//2e partie

$p = isset($_GET["p"])?$_GET["p"]:"";
if (($p == "") || !(file_exists($p.'.php')))
{
    $p="default.php";
}
include ($p);
?>
Là, moins de risque de bug.

Re

Posté : 04 juin 2005, 13:02
par Mouna
Index.php

Code : Tout sélectionner

<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>
[/code]

Posté : 04 juin 2005, 13:17
par Cyrano
Bon, on va commencer avec une petite correction: dans les 4 dernières lignes, il manque un </td>

Code : Tout sélectionner

</table> </td> </tr> </table>
Et ça n'explique pas trop ce que tu veux faire: la construction des liens n'est pas dynamique, elle est en "dur" alors je vois pas où est le problème.

Je crois que quand tu arriveras à l'expliquer pour qu'on comprenne bien, tu auras résolu toi-même le problème.