Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/11/2007, 22h53   #1
Invité de passage
 
Inscription : novembre 2006
Messages : 15
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 15
Points : 2
Points : 2
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 :
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 :
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 :
1
2
3
4
5
6
7
8
9
10
11
12
 
<?php 
if(!empty($_SESSION['utilisateurs'])) 
{
foreach($_SESSION['utilisateurs'] as $typeUsers)
{
   echo $typeUsers;
}
 
}
 
?>
cel.Saint-Louis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2007, 09h00   #2
Invité de passage
 
Inscription : novembre 2006
Messages : 15
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 15
Points : 2
Points : 2
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.
cel.Saint-Louis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2007, 09h23   #3
Membre éclairé
 
Inscription : juin 2007
Messages : 342
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 342
Points : 398
Points : 398
Par défaut salut

Code :
  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
ascito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2007, 11h48   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Code :
$_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 :
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();
}
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2007, 04h17   #5
Invité régulier
 
Inscription : novembre 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 7
Points : 8
Points : 8
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 :
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.
randomize est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h18.


 
 
 
 
Partenaires

Hébergement Web