Plusieurs Cadres Includes - Comment garder les choix ?

Eléphanteau du PHP | 10 Messages

18 oct. 2005, 18:29

Ah oui d'accord, merci j'avais pas compris ça.

Bon j'ai mis
    <?php
session_start();
/** valeurs par défaut des cadres **/
if(!isset($_SESSION['cadre1']))
   $_SESSION['cadre1'] = 'altitude';

if(isset($_GET['cadre1']))
   $_SESSION['cadre1'] = $_GET['cadre1'];


etc pour les 6 cadres
	?>  
Tout en haut, et ça regle effectivement un probleme.

Puis dans chaque cadre :

    <?php

    if (!isset($_GET['cadre1'])) $_SESSION['cadre1']= 'altitude';
    else $_SESSION['cadre1']= $_GET['cadre1'];
    switch($_SESSION['cadre1'])
    {
    case 'altitude': include ('Classification/Par Altitude/altitude.html');break;
    case 'haute_altitude': include ('Classification/Par Altitude/haute_altitude.html');break;
    case 'moyenne_altitude': include ('Classification/Par Altitude/moyenne_altitude.html');break;
    case 'basse_altitude': include ('Classification/Par Altitude/basse_altitude.html');break;
    case 'altitude_vertical': include ('Classification/Par Altitude/altitude_vertical.html');break;
    }
    ?>       
</div> 
ce genre là.

Aucun changement :?

Mammouth du PHP | 19672 Messages

18 oct. 2005, 19:15

Tiens, simplification pour la seconde partie avec un petit ajout:
<?php
$_SESSION['cadre1'] = isset($_GET['cadre1']) ? $_GET['cadre1'] : 'altitude';
switch($_SESSION['cadre1'])
{
    case 'altitude':            include ('Classification/Par Altitude/altitude.html');          break;
    case 'haute_altitude':      include ('Classification/Par Altitude/haute_altitude.html');    break;
    case 'moyenne_altitude':    include ('Classification/Par Altitude/moyenne_altitude.html');  break;
    case 'basse_altitude':      include ('Classification/Par Altitude/basse_altitude.html');    break;
    case 'altitude_vertical':   include ('Classification/Par Altitude/altitude_vertical.html'); break;
    default :                   include ('Classification/Par Altitude/altitude.html');
}
    ?>       
</div>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 10 Messages

18 oct. 2005, 23:11

Merci Cyrano, j'ai changé avec ton code, mais hélas toujours aucun changement. Dès que je fais un nouveau choix, il met toujours la valeur par défaut dans les autres cadres sans tenir compte des choix précédants.

J'avoue ne pas comprendre. Le fait de mettre des variables de sessions n'a absolument rien changé. Où peut bien être l'erreur. :?

Mammouth du PHP | 19672 Messages

18 oct. 2005, 23:17

As-tu bien un paramètre dans l'url au chargement de page ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 10 Messages

18 oct. 2005, 23:21

Lorsque j'arrive sur ma page la première fois j'ai les 6 cadres qui ont bien leurs valeurs par défaut, si c'est ça que tu me demandes. Et ces valeurs par défaut reviennent à chaque fois que je clique sur un lien, sauf bien sûr le cadre que j'ouvre. Bref aucun changement par rapport à avant.

Ceci dis, je n'ai aucun bug mysql, ce qui est déjà ça lol

Mammouth du PHP | 19672 Messages

18 oct. 2005, 23:23

Quand tu cliques sur un lien, tu vas avoir une nouvelle url dans la barre d'adresse. Cette url doit avoir un paramètre du genre ?cadre1=altitude_vertical par exemple. Est-ce que tu as ça ou pas dans tes liens ? ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 10 Messages

18 oct. 2005, 23:30

Oui je pense que oui :
Si je clique sur cirrus par ex, j'ai ceci _classification.php?cadre2=cirrus#class_menu_02

J'ai remis sur mon ftp la page de test en question, après les modifs :

http://www.meteobell.com/Test/_classification.php

Est-ce que ça pourrait venir de l'id #class_menu_02 que j'ai rajouté et qui me sert à ce que l'utilisateur reste à proximité du cadre qu'il ouvre. (je pense pas, mais bon ça vaut la peine de se poser la question).

Mammouth du PHP | 19672 Messages

19 oct. 2005, 09:30

J'ignore ce que tu attends qu'il se passe, mais j'ai testé ton adresse et cliqué un peu partout, en apparence tout a l'air de fonctionner. Il semble que tu voies autre chose ou alors tu attends autre chose, mais là, je ne vois pas trop quoi :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 983 Messages

19 oct. 2005, 10:11

Il faut que tu rajoutes une condition:
<?php
if(isset($_GET['cadre1']))
     $_SESSION['cadre1'] =   $_GET['cadre1'] ;
elseif(!isset($_SESSION['cadre1']))
     $_SESSION['cadre1'] = 'valeur par défaut';
// tu peux le faire comme cyrano te l'a proposé mais avec 2 conditions, l'opérateur ternaire devient un peu illisible
switch($_SESSION['cadre1'])
{
    case 'altitude':            include ('Classification/Par Altitude/altitude.html');          break;
    case 'haute_altitude':      include ('Classification/Par Altitude/haute_altitude.html');    break;
    case 'moyenne_altitude':    include ('Classification/Par Altitude/moyenne_altitude.html');  break;
    case 'basse_altitude':      include ('Classification/Par Altitude/basse_altitude.html');    break;
    case 'altitude_vertical':   include ('Classification/Par Altitude/altitude_vertical.html'); break;
    default :                   include ('Classification/Par Altitude/altitude.html');
}
    ?> 
Le problème est que si $_GET[cadrex'] n'est pas défini, tu mets dans la varaible de session correspondante la valeur par défaut, écrasant ainsi son ancienne valeur.

Eléphanteau du PHP | 10 Messages

19 oct. 2005, 17:00

Je reviens du boulot et viens juste de tester avec ta modification et.........

CA MARCHE :D

Ca marche même super.

Merci à :google: pour m'avoir trouvé ce forum.
Merci à heddicmi pour avoir introduit le problème avec les sessions :merci:
Merci à zeus pour m'avoir montré la différence entre variable locale et variable session :merci:
Merci jeff pour m'avoir montré que session_start, c'est au début qu'il faut le mettre :merci:
Merci à Cyrano pour avoir optimisé le code :merci:
Et je fais un super merci à rami car tu as fait presque tous le code et sans toi rien n'aurais été possible. Merci pour ta persévérance :merci: :merci:

Bref un super travail d'équipe :wink:

Vous avez fait un nouveau converti à PHPFrance et j'ai quelques connaissances en Xhtml et css et si je peux à mon tour aidé ce sera avec plaisir. En tout cas vous êtes dans mes favoris.

Car j'ai fait plusieurs autres forums et ca pas été pareil.
Sur php débutant. A part pour modérer mon message pour dire que j'utilisais pas le wall on m'a jamais répondu.
Sur hardware.fr ma question d'origine est perdu dans les limbes du fond du forum sans que personne ne se soit penché sur la question, à part pour dire que les switch c'etait pas super.
Sur phpscript on a carément effacer mon message car on a pas le droit de mettre du code dans les posts
Enfin sur PresencePC, on m'a proposé une autre solution qui ne m'a paru que peu convaincante. Genre :
Pour que te variables gardent la même valeur, il faut que tu les transmettes à chaque fois par l'url en les récupérant avec $_GET :
tonurl.php?variable1=truc&variable2=bidule
$variable1=$_GET['variable1'];
Bref je dis Vive PHPFrance.

PS : ca se voit que je content là, où j'en fait pas assez ? lol :roll:

Bon je met le sujet en Résolu. Ca marche nikel. :)

Edit : ah bah non je peux pas mettre résolu, j'étais pas inscrit au début.