Probleme avec Switch

Mouna
Invité n'ayant pas de compte PHPfrance

04 juin 2005, 12:23

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

Mammouth du PHP | 19672 Messages

04 juin 2005, 12:40

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é.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mouna
Invité n'ayant pas de compte PHPfrance

04 juin 2005, 12:44

Ca donne toujours le meme resultat

Mammouth du PHP | 19672 Messages

04 juin 2005, 12:53

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

04 juin 2005, 12:59

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);

Mammouth du PHP | 19672 Messages

04 juin 2005, 13:00

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mouna
Invité n'ayant pas de compte PHPfrance

04 juin 2005, 13:02

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]

Mammouth du PHP | 19672 Messages

04 juin 2005, 13:17

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: