Plusieurs Cadres Includes - Comment garder les choix ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Plusieurs Cadres Includes - Comment garder les choix ?

par Damien49 » 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.

par rami » 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.

par Cyrano » 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

par Damien49 » 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).

par Cyrano » 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 ? ?

par Damien49 » 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

par Cyrano » 18 oct. 2005, 23:17

As-tu bien un paramètre dans l'url au chargement de page ?

par Damien49 » 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. :?

par Cyrano » 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>

par Damien49 » 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 :?

par jeff » 18 oct. 2005, 18:11

salut
session_start doit etre avant toute sortie html c'est a dire que les premieres lignes de ta page principale (ou tu fait des includes )
seront
<?php session_start();
...
..?>

par Damien49 » 18 oct. 2005, 18:08

Bon j'ai essayé plusieurs façon.

Au début j'ai cru que quand tu disais de mettre en haut, il fallait que je mette ça dans une partie à part des scripts php des cadres et que j'y déclare les 6 cadres avec session_start().

Puis j'ai mis ton bout de code dans le haut du script php du cadre même

Mais j'arrive pas à faire marcher. Je dois me tromper.

J'ai lut le tuto mais ça m'aide pas des masses pour mon cas.

Bon voilà ce que j'ai fait en dernier essai. Vous allez rigoler je le sens lol

Pour le cadre 1 :
<div id="classification">
 

<h1>Classification des Nuages</h1>



<div id="class_menu_01"><!--Les Menus-->

	<div class="class_element_menu">
		<h2>Classification Par Altitude</h2>
		<ul>
			<li><a href="_classification.php?cadre1=altitude#classification">Classification par Altitude</a></li>
			<li><a href="_classification.php?cadre1=haute_altitude#classification">Nuages de Haute Altitude</a></li>
			<li><a href="_classification.php?cadre1=moyenne_altitude#classification">Nuages de Moyenne Altitude</a></li>
			<li><a href="_classification.php?cadre1=basse_altitude#classification">Nuages de Basse Altitude</a></li>
			<li><a href="_classification.php?cadre1=altitude_vertical#classification">Nuages à Dévelloppement Verticaux</a></li>
		</ul>
	</div>

</div>



<div id="class_definition"><!--Code PHP  pour le cadre. Permet d'avoir un cadre différent par onglet, sans changer de page-->
						
	<?php 
session_start();
/** valeurs par défaut des cadres **/
if(!isset($_SESSION['cadre1']))
   $_SESSION['cadre1'] = 'altitude';
 if(isset($_GET['cadre1']))
   $_SESSION['cadre1'] = $_GET['cadre1'];  
//puis tu fais tes inclusions comme avant, sauf que tu utilises les variables $_SESSION['cadre1'], $_SESSION['cadre2'].. au lieu des varaibles locales.
	
	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>


<hr/>
Arf j'suis meilleur en Xhtml et css2 :lol:

par zeus » 18 oct. 2005, 17:44

tu doit utiliser $_SESSION["cadre1"] à la place de $cadre1

par Damien49 » 18 oct. 2005, 17:42

Une petite question :
//puis tu fais tes inclusions comme avant, sauf que tu utilises les variables $_SESSION['cadre1'], $_SESSION['cadre2'].. au lieu des varaibles locales.
Mes variables locales c'est lesquels ? 'altitude' par ex (je crois que non, ca c'est la valeur de ma variable)
ou bien c'est $cadre1 ? #-o

par Damien49 » 18 oct. 2005, 17:15

Merci bien à vous deux. J'en ai profité pour m'enregistrer au forum.

Je vais essayé de voir ça. Je vais essayé de me débrouiller avec ce que vous m'avez donné. Je vous tiens au courant. :)

En tout cas merci. Je commence à comprendre et le lien me sera très utile. :wink: