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 02/08/2007, 16h29   #1
Membre régulier
 
Avatar de akara
 
Inscription : juin 2007
Messages : 299
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 299
Points : 81
Points : 81
Par défaut Élément tableau dans variable de session

Bonjour à tous !

J'ai créé un tableau dans une variable de session :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
//requete etc....
$_SESSION['test_dep'] = array();
while($dep = mysql_fetch_assoc($res_dep)){
	$num_dep = $dep['num_dep'];
 
	if($j<$nb_dep){
 
		echo "<dd>- ".stripslashes($dep['nom'])." ($num_dep) , </dd>";
		$j++;
	}else{
		echo "<dd>- ".stripslashes($dep['nom'])." ($num_dep) . </dd></dl>";
	}
array_push($_SESSION['test_dep'],array('num_dep'=>$num_dep,'nom_dep'=>stripslashes($dep['nom'])));
}
et :

Code :
1
2
 
print_r($_SESSION['test_dep']['nom_dep']."<br />");
Puis j'ai l'erreur suiivant : Undefined index: nom_dep

Ma question est : comment atteindre les éléments de mon tableau alors ?
__________________
Le no life répond "Counter Strike : Source"
Le geek répond "Cascading Style Sheets"
Ce n'est pas un hasard si deux choses vitales ont le même sigle
akara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2007, 16h43   #2
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451


Commence par faire un print_r de l'ensemble de ton tableau, histoire de voir ce qu'il continet vraiment :
Code :
1
2
3
echo '<pre>';
print_r $_SESSION ;
echo '</pre>';
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2007, 17h10   #3
Membre régulier
 
Avatar de akara
 
Inscription : juin 2007
Messages : 299
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 299
Points : 81
Points : 81
hé bin ...
il affiche bien ce qu'il y a dans le $_SESSION mais j'ai quand même l'undefenied sur nom_dep sur cette ligne
Code :
print_r($_SESSION['test_dep']['nom_dep']."<br />");
, alors que j'ai bien les valeurs de nom_dep
__________________
Le no life répond "Counter Strike : Source"
Le geek répond "Cascading Style Sheets"
Ce n'est pas un hasard si deux choses vitales ont le même sigle
akara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2007, 18h48   #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
Qui dit array_push dit clés numériques, le tableau devrait être de la forme :
Code X :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Array(
    'test_dep' => Array(
        0 => Array(
            'num_dep' => A,
            'nom_dep' => B
        )
        1 => Array(
            'num_dep' => C,
            'nom_dep' => D
        )
        2 => ...
    )
)

echo $_SESSION['test_dep'][1]['num_dep'];
Et non :
Code X :
1
2
3
4
5
6
Array(
    'test_dep' => Array(
        'num_dep' => X,
        'nom_dep' => Y
    )
)
ou je ne sais quelle autre forme.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2007, 10h54   #5
Membre régulier
 
Avatar de akara
 
Inscription : juin 2007
Messages : 299
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 299
Points : 81
Points : 81
Citation:
Envoyé par julp
Qui dit array_push dit clés numériques, le tableau devrait être de la forme :
Code X :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Array(
    'test_dep' => Array(
        0 => Array(
            'num_dep' => A,
            'nom_dep' => B
        )
        1 => Array(
            'num_dep' => C,
            'nom_dep' => D
        )
        2 => ...
    )
)

echo $_SESSION['test_dep'][1]['num_dep'];
salut,
oué oué je vois merci j'en prend note...
Code :
1
2
3
4
5
 
$nb_commune = count($_SESSION['test_dep']);
for($i=0;$i<$nb_commune;$i++){
	echo $_SESSION['test_dep'][$i]['nom_dep']."<br /> ";
}
... je veux mettre dans l'envoie d'un mail , tous les nom_dep et num_dep choisit... et je ne vois vraiment pas comment listé dans un mail cela
__________________
Le no life répond "Counter Strike : Source"
Le geek répond "Cascading Style Sheets"
Ce n'est pas un hasard si deux choses vitales ont le même sigle
akara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2007, 11h54   #6
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
Citation:
Envoyé par akara
... je veux mettre dans l'envoie d'un mail , tous les nom_dep et num_dep choisit... et je ne vois vraiment pas comment listé dans un mail cela
Sauf que nous ne sommes pas dans votre tête : difficile de proposer une solution pertinente sans aucune information ...

Peut être :
Code :
1
2
3
4
5
6
7
8
9
$str_nom = $str_num = '';
if (isset($_SESSION['test_dep']) && is_array($_SESSION['test_dep'])) {
    foreach ($_SESSION['test_dep'] as $v) {
        $str_nom .= (empty($str_nom) ? '' : ', ') . $v['nom_dep'];
        $str_num .= (empty($str_num) ? '' : ', ') . $v['num_dep'];
    }
}
var_dump($str_nom);
var_dump($str_num);
?

Dans votre cas, et si cela vous est possible, une autre organisation de votre tableau test_dep aurait permis de faciliter le code en permettant l'emploi direct de la fonction implode (l'organisation que vous cherchiez au départ à utiliser en vain).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2007, 13h59   #7
Membre régulier
 
Avatar de akara
 
Inscription : juin 2007
Messages : 299
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 299
Points : 81
Points : 81
Citation:
Envoyé par julp
Sauf que nous ne sommes pas dans votre tête : difficile de proposer une solution pertinente sans aucune information ...

Peut être :
Code :
1
2
3
4
5
6
7
8
9
$str_nom = $str_num = '';
if (isset($_SESSION['test_dep'] && is_array($_SESSION['test_dep'])) {
    foreach ($_SESSION['test_dep'] as $v) {
        $str_nom .= (empty($str_nom) ? '', ', ') $v['nom_dep'];
        $str_num .= (empty($str_num) ? '', ', ') $v['num_dep'];
    }
}
var_dump($str_nom);
var_dump($str_num);
logique..
des parses erreur...il manque une parenthèse pour le isset, et
Citation:
$str_nom .= (empty($str_nom) ? '', ', ') $v['nom_dep'];
$str_num .= (empty($str_num) ? '', ', ') $v['num_dep'];
mais je ne vois pas vraiment ou car je n'utilise jamais cette forme
__________________
Le no life répond "Counter Strike : Source"
Le geek répond "Cascading Style Sheets"
Ce n'est pas un hasard si deux choses vitales ont le même sigle
akara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2007, 14h03   #8
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Il doit manquer une concaténation :
Code :
1
2
$str_nom .= (empty($str_nom) ? '', ', ').$v['nom_dep'];
$str_num .= (empty($str_num) ? '', ', ').$v['num_dep'];
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2007, 14h30   #9
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
Citation:
Envoyé par Celira
Il doit manquer une concaténation :
Code :
1
2
$str_nom .= (empty($str_nom) ? '', ', ').$v['nom_dep'];
$str_num .= (empty($str_num) ? '', ', ').$v['num_dep'];
S'il n'y avait que ça Je pense les avoir corrigé (faut que j'arrête de poster avant midi ).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2007, 14h32   #10
Membre régulier
 
Avatar de akara
 
Inscription : juin 2007
Messages : 299
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 299
Points : 81
Points : 81
euh nan plus, toujours parse error
__________________
Le no life répond "Counter Strike : Source"
Le geek répond "Cascading Style Sheets"
Ce n'est pas un hasard si deux choses vitales ont le même sigle
akara 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 04h21.


 
 
 
 
Partenaires

Hébergement Web