Page 1 sur 1

variable de session

Posté : 30 janv. 2010, 01:18
par le Piaf
Bonsoir,

J'ai un problème avec une variable de session. J'ai crée deux listes deroulantes liées entre elle en AJAX. J'ai besoin de recuperer les 2 valeurs des listes déroulantes. J'arrive bien a recuperer l'info de la premiere liste mais mais l'info de la seconde.
voici le code du premier formulaire

Code : Tout sélectionner

<?php session_start() // démarre une session dans cette page ?> <h2>Veuillez selectionner une matiere</h2> <?php require("includes/connexion_bd.inc"); $segment = $_POST['segment'] ; $_SESSION['segment'] = $_POST['segment']; $techno = $_POST['techno'] ; $_SESSION['techno'] = $_POST['techno']; echo "segment: <b>".$_SESSION['segment']."</b><br>\n" ; echo "techno: <b>".$_SESSION['techno']."</b><br>\n" ; ?> <html> <head> <title>Matiere et modules</title> <script type="text/javascript"> //construction de l'objet de type http Request //Declarée la variable ici est publique à toutes les autres fonctions var xhr_object = null; //*********************** function ObjXHTTP(){ //*********************** //test le navigateur pour choisir la méthode appropiée et voir s'il est compatible if (window.XMLHttpRequest) { // test Firefox / netscape / Ie>= 7 xhr_object = new XMLHttpRequest(); return ("IE7 et plus"); } else if (window.ActiveXObject) { // IE<7 xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); return ("IE < 7"); } else { // Navigateur non compatible (en apparence) alert ("votre navigateur ne semble pas compatible avec la technologie de ce site"); return(""); // Arret du script } } //**************************** function synchrolistes(){ //*************************** // cette fonction va faire un appel à une requete AJAX pour afficher les villes du pays // recuperer le pays choisi var matiere = document.f.matiere.value; //alert (matiere); // Recupere l'xhr_object au navigateur var test=ObjXHTTP() //alert (test); if (test=="" ){ return;} // Préparation du contenu de la requête // Construction de la QueryString (mode Get) var navig=navigator.appName; // nom du navigateur //alert (navig + "\n" + navigator.appVersion); var qs = "?matiere=" + matiere + "&navig=" + navig; alert (qs); //appel de la page php serveur qui va aller chercher les matieres correspondantes // preparation de la requete en mode GET, non synchrone (false) xhr_object.open("GET", "ajaxmatiere.php" + qs, false); // envoi de la requete xhr_object.send(null); // null car GET si POST on met les variables POST // traitement de la réponse //En mode synchrone on attend ici l'info comme quoi le résultat est pret if (xhr_object.readyState==4){ //le résultat est pret //alert (xhr_object.responseText); if (navig=="Microsoft Internet Explorer"){ document.getElementById("design").outerHTML=xhr_object.responseText } else { document.getElementById("design").innerHTML=xhr_object.responseText } } } </script> </head> <body> <form name="f"> <h4>Choissisez dans la liste ci-dessous :</h4> <select name="matiere" size="1" onChange="synchrolistes()"> <option value="----">----</option> <?php $sql = "SELECT DISTINCT id_matiere,nom_matiere FROM matiere WHERE Id_mat_tech=\"$techno\" and id_mat_seg like '%$segment%' ORDER BY id_mat_tech"; // demande d'execution aupres de mysql $result=mysql_query($sql, $link) or die("Impossible d'executer la requete<br />".mysql_error()); while ($matiere=mysql_fetch_array($result)){ echo "<option value='$matiere[0]'>$matiere[1]</option>,\n\r"; } ?> </select> <h2>Veuillez selectionner un module</h2> <h4>Choissisez dans la liste ci-dessous :</h4> <select name="design" id="design" size="1"> <option value="----">----</option> </select> </form> <form name="f2" target="balnk" method="get" action="synthese.php"> <input type="submit" value="envoyer"> </form> </body> </html>
code de la liste deoulante liée

Code : Tout sélectionner

<?php session_start() // démarre une session dans cette page ?> <?php // recupere la connexion require("includes/connexion_bd.inc"); // lecture des variables de la QuerSstring echo "segment: <b>".$_SESSION['segment']."</b><br>\n" ; echo "techno: <b>".$_SESSION['techno']."</b><br>\n" ; echo "design: <b>".$_SESSION['design']."</b><br>\n" ; echo "navig: <b>".$_SESSION['navig']."</b><br>\n" ; $_SESSION['matiere'] = $_GET['matiere']; $matiere=$_GET["matiere"]; $sql = "SELECT DISTINCT Id_design,Nom_design FROM Design WHERE Id_design=\"$matiere\" ORDER BY Id_design"; $result=mysql_query($sql, $link) or die("Impossible d'executer la requete<br />".mysql_error()); // si le navigateur est ie il faut ajouter une ligne avant et apres pour redefinir les options de la liste SELECT if ($navig=="Microsoft Internet Explorer"){ echo "<select name='design' id='design' size='1'>"; } while ($design=mysql_fetch_row($result)){ echo "<option value=\"$design[0]\">$design[1]</option>,\n\r"; } if ($navig=="Microsoft Internet Explorer"){ echo "</select>"; } ?>
et enfin je teste toutes les infos remontées par les formulaires

Code : Tout sélectionner

<?php session_start() // démarre une session dans cette page ?> <html> <body> <h2>Veuillez selectionner une matiere</h2> <h3>Choissisez dans la liste ci-dessous :</h3> <?php // recupere la connexion require("includes/connexion_bd.inc"); echo "segment: <b>".$_SESSION['segment']."</b><br>\n" ; echo "techno: <b>".$_SESSION['techno']."</b><br>\n" ; echo "matiere: <b>".$_SESSION['matiere']."</b><br>\n" ; echo "design: <b>".$_SESSION['design']."</b><br>\n" ; echo "navig: <b>".$_SESSION['navig']."</b><br>\n" ; ?> </body> </html>
Je souhaite recuperer l'info du design.

Merci d'avance

Re: variable de session

Posté : 31 janv. 2010, 18:36
par Aureusms
:oops: Hmm t'a pas un peu plus court... Ch'ui un peu fainéant en ce moment...
As tu testé tes variables de sessions ?
Est ce que tes sessions fonctionnent ?

C'est ces variables là qui bloquent ?
   echo "segment: <b>".$_SESSION['segment']."</b><br>\n" ;
   echo "techno: <b>".$_SESSION['techno']."</b><br>\n" ;
   echo "design: <b>".$_SESSION['design']."</b><br>\n" ;
   echo "navig: <b>".$_SESSION['navig']."</b><br>\n" ;

Re: variable de session

Posté : 31 janv. 2010, 19:28
par Ryle
Je ne vois nul part dans ton code l'endroit où tu stockes la valeur de 'design' dans ta session ... ça doit expliquer pourquoi ta variable $_SESSION['design'] ne contient pas la valeur attendue :)

Re: variable de session

Posté : 01 févr. 2010, 08:24
par le Piaf
bonjour,

Toutes les variables de session sont remontées sauf le $design.
J'ai ajouté $_SESSION['design'] = $_GET['design'];
$matiere=$_GET["design"];
au code. mais la variable n'est tjs pas remontées.

Merci pour les conseils.