steps avec $_GET

Petit nouveau ! | 3 Messages

30 déc. 2012, 09:34

Bonjour à tous,

J'aurais besoin d'un peu d'aide sur le moyen de pouvoir faire des étapes sur un même php. Ci-dessous le code mis en place mais helas je reste bloqué sur la $viewSitu2 :(

if (($_GET['s']==1)||($_GET['s']==2)||))
{
if (($_GET['h']==1)||($_GET['h']==2))
{
if (($_GET['b']==0)||($_GET['b']==1))
{
$viewFront = true;
$viewSitu3 = false;
$viewSitu2 = false;
$viewSitu1 = false;
}
$viewFront = false;
$viewSitu3 = true;
$viewSitu2 = false;
$viewSitu1 = false;
}
$viewFront = false;
$viewSitu3 = false;
$viewSitu2 = true;
$viewSitu1 = false;
}
else
{
$viewFront = false; // VIEW FRONT
$viewSitu3 = false; // VIEW PART 3
$viewSitu2 = false; // VIEW PART 2
$viewSitu1 = true; // VIEW PART 1
}

if ($viewFront)
{ // code ma page finale }
if ($viewSitu1)
{ echo 'lien vers meme page php?s=1'; }
if ($viewSitu2)
{ echo 'lien vers meme page php?s='.$_GET['s'].'&h=1'; }
if ($viewSitu3)
{ echo 'lien vers meme page php?s='.$_GET['s'].'&h='.$_GET['h'].'&b=1'; }

Vos retours m'aideraient grandement car là ma jeunesse phpdienne me fait defaut.
Un grand merci d'avance

ViPHP
xTG
ViPHP | 7331 Messages

30 déc. 2012, 10:01

Le mieux dans ces conditions là est d'écrire la condition de la façon la plus lisible.
Et pour ce cas là rien de mieux que les conditions ternaires :
A est actif ssi h est à 1 et que c est à 0
B est actif ssi h est à 1 et que c est à 1
C est actif ssi h est différent de c
$A = ($h == 1 && c == 0) ? true : false;
$B = ($h == 1 && $c == 1) ? true : false;
$C = ($h != $c) ? true : false;
Ainsi tu réfléchis à la condition pour une variable à la fois et tu restes vrai dans tous les autres cas. ;)

Petit nouveau ! | 3 Messages

30 déc. 2012, 10:15

Merci pour cette explication mais hélas ce n'est pas que 0 et 1 ... en réalité 's' peut avoir une valeur allant de 1 à 18, 'h' 1 à 3 et 'b' 0 ou 1. Ca en ferait beaucoup de conditions ternaires non ? :(

Merci d'avance

ViPHP
xTG
ViPHP | 7331 Messages

30 déc. 2012, 11:46

Le nombre de condition n'est pas un problème.
Le principe est de ne penser qu'à une seule variable à la fois pour ne pas s'embrouiller.

Actuellement tu travailles sur du N*M, moi je te propose de travailler sur du N à la fois. ;)
Car ton souci est que tu as trop de conditions et que tu t'y perds, cela ne fonctionne pas et tu ne sais plus trouver pourquoi dans ton usine.

Mammouth du PHP | 2278 Messages

30 déc. 2012, 14:08

Comme dit xtg, il est difficile de mariser les conditions complexes. 108 cas si je me souviens bien
Il faudrait en avoir fait les tables de vérité...
Mais un truc dans le genre
switch ($a) // celle qui a le plus de cas
{
   case 1:
   {
      switch ($b) // celle a 3 cas
      {
        case 1:
             if ($c == 1)
            {
              $cas =1;
           }
           else
           {
             $cas =2;
           }
         break;
         default:
           $cas =0;
      }
}
// suivi
switch ($cas)
{

}
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD