IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Récupération de variable de session


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 15
    Points : 8
    Points
    8
    Par défaut Récupération de variable de session
    j'ai un problème concernant la récupération de variable de session, j'ai donc 3 checkbox dont les données affichées proviennent de ma bdd et je souhaite récupérer l'ensemble des valeurs cochées sous forme de variables de session pour pouvoir les rediriger sur une autre page, donc j'ai procédé de cette manière car l'ensemble du formulaire post contient également des listes reliées entre elles avec php et ce formulaire doit s'afficher sur toutes les pages.Donc mon problème concerne l'array push, je n'arrive pas à récupérer l'ensemble des valeurs cochées, il m'affiche que la dernière, les deux autres étant écrasées. a vrai dire je ne suis plus sûre que ce soit la meilleure méthode

    page1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    <?
    while ($row = mysql_fetch_array($result)) {
    echo '<input type="checkbox" name="typeUser[]" value="'.$row['IdUsersType'].'" class="checkbox" /><img src="'.$row['CheminIcone'].'" alt="'.$row['DenominationUsers'].'"/>'; 
    	}
    ?>
    code en début de page et rien d'autre avant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    <?session_start();?>
    <? 
    include('connexion.php');
    $tabTypeUser = (isset($_POST['typeUser']))?$_POST['typeUser']:null;
    if(isset($_POST['ok']) )
     { 
    if (!empty($tabTypeUser)) 
    	{
    	foreach($tabTypeUser as $cle => $valeur) 
    	{
    	$sql8="SELECT IdUser as utilisateur FROM Users".
    	  " WHERE UsersType_id = ".$valeur."";
    	 $rech_Type = mysql_query($sql8, $connexion) or die('Erreur SQL : <br />'.$sql8);
    	$_SESSION['utilisateurs']=array();	
    	$nbr_type=0;
    	if($rech_Type!=false)
    	{
    	    while($result1=mysql_fetch_assoc($rech_Type))
    	   {
    	      array_push($_SESSION['utilisateurs'], $result1['utilisateur']);
    	     $nbr_type++;
    	   }
    	}
    	else
    	{
    	echo'une erreur est survenue veuillez essayer ulterieurement';
    	}
     
                  }
     
    	}
     
    	require("testSession.php"); exit();
    }
    page testSession.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php 
    if(!empty($_SESSION['utilisateurs'])) 
    {
    foreach($_SESSION['utilisateurs'] as $typeUsers)
    {
       echo $typeUsers;
    }
     
    }
     
    ?>

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    si quelqu'un pouvait me donner une réponse ce serait bien, à vrai dire ça me bloque pour la suite de la réalisation.
    Donc je précise que j'arrive à récupérer la dernière variable du tableau , les autres étant écrasées.
    J'ai appliqué différentes solutions concernant les tableaux , notamment un exemple que j'ai trouvé sur ce forum mais apparemment ce n'était pas une bonne réponse.

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut salut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      array_push($_SESSION['utilisateurs'], $result1['utilisateur']);
    $_SESSION['utilisateurs'] est un tableau , soit, cependant tu utilise push pour la première clé du tableau, donc tes valeurs se retrouvent écrasées dans $_SESSION['utilisateurs'], if faut utiliser $_SESSION['utilisateurs'][0], $_SESSION['utilisateurs'][1] ....


    voila, bon courage
    Conception / Dev

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['utilisateurs']=array();
    Recrée (écrase) le tableau $_SESSION['utilisateurs'] lors du parcours des checkbox cochées. Soit vous la déplacez avant le foreach ou alors c'est une nouvelle dimension qu'il faut créer à ce tableau : tout dépend de ce que vous cherchez à obtenir.

    Au passage vous pouvez optimiser vos requêtes en en faisant plus qu'une :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?
    session_start();
    include('connexion.php');
    $tabTypeUser = (isset($_POST['typeUser']))?$_POST['typeUser']:null;
    if(isset($_POST['ok']) ) { 
        if (!empty($tabTypeUser)) {
            $tabTypeUser = array_map('intval', $tabTypeUser);
    	$sql8 = 'SELECT IdUser as utilisateur FROM Users WHERE UsersType_id IN ('. implode(', ', $valeur) . ')';
    	 $rech_Type = mysql_query($sql8, $connexion) or die('Erreur SQL : <br />' . $sql8);
    	$_SESSION['utilisateurs'] = array();	
    	$nbr_type = 0;
    	if (!$rech_Type) {
                while($result1=mysql_fetch_assoc($rech_Type)) {
                    array_push($_SESSION['utilisateurs'], $result1['utilisateur']);
                    $nbr_type++;
                }
    	} else {
    	    echo 'une erreur est survenue veuillez essayer ultérieurement';
            }
        }
        require("testSession.php");
        exit();
    }

  5. #5
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Salut,
    en ce qui me concerne je pense que l'erreur ne viens du push_array(...), mais plutôt du post que tu fais, je vois que tu as nomé tous tes checkbox avec "typeUser[]", j'ai déjà vu cette méthode mais je l'ai jamais utilisé, en tout cas si j'ai compris ton code il, vaudrait mieux qu'après cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $tabTypeUser = (isset($_POST['typeUser']))?$_POST['typeUser']:null;
    que tu testes si les valeurs cochées sont bien postées ou pas (avec une boucle), avant de continuer le reste du code.
    J'attend ta réponse.

Discussions similaires

  1. Problème de récupèration de variable de session
    Par l.laurent60 dans le forum Langage
    Réponses: 2
    Dernier message: 10/08/2010, 16h28
  2. initialisation et récupération de variable de session
    Par max33370 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 27/05/2010, 14h08
  3. Réponses: 11
    Dernier message: 15/10/2008, 10h44
  4. récupération de variable de sessions
    Par Junior_jef dans le forum Langage
    Réponses: 8
    Dernier message: 21/03/2008, 15h29
  5. Réponses: 7
    Dernier message: 23/04/2006, 01h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo