Problème avec des Variables de Session sous Free

Problème avec des Variables de Session sous Free - PHP - Programmation

Marsh Posté le 20-06-2005 à 12:33:23    

Bonjour!
 
J'ai un petit problème avec des variables de session de type 'tableau' sous free :  
 
pour implémenter un caddie, j'utilise une variable de session $_SESSION['panier'] de type array.
Je stocke ensuite chaque produit de la manière suivante : $_SESSION['panier']['43'] ou encore $_SESSION['panier']['50'] ou 43 et 50 sont les numéros des produits
 
Le problème se produit lorsque je veux enumérer la liste des produits.
J'utilise un foreach($_SESSION as $produit => quantite) mais j'obtient une erreur "Invalid argument supplied for foreach()...."
 
DE même, lorsque je veux ré-accéder à une de ces variables (pour l'incrémenter par exemple), j'obtien l'erreur : "Cannot use a scalar value as an array"
 
Je précise que ce même code fonctionne farpaitement en local avec EasyPHP (mise à jour).
Il semble que ce problème ne se produise qu'avec des tableaux à double entrée.
 
Si vous pouvez m'aider à résoudre ce problème, ça serait sympa!

Reply

Marsh Posté le 20-06-2005 à 12:33:23   

Reply

Marsh Posté le 20-06-2005 à 12:57:48    

dans ton foreach faut pas mettre $_SESSION['panier']??

Reply

Marsh Posté le 20-06-2005 à 13:09:56    

texaff a écrit :

dans ton foreach faut pas mettre $_SESSION['panier']??


exemple

Code :
  1. foreach ($coul as $val)

Reply

Marsh Posté le 20-06-2005 à 13:28:30    

as tu créer le dossier "session" a la racine de ton site

Reply

Marsh Posté le 20-06-2005 à 14:05:18    

oui, pardon, j'ai bien mis '$_SESSION['panier']'
et j'ai aussi créé le dossier session
 
en fait, j'arrive à énumérer les variables $_SESSION, mais je n'arrive pas à accéder aux variables stockées dans $_SESSION['panier'] ($_SESSION['panier'] est en fait un tableau

Reply

Marsh Posté le 20-06-2005 à 16:54:21    

satch1042 a écrit :

mais je n'arrive pas à accéder aux variables stockées dans $_SESSION['panier'] ($_SESSION['panier'] est en fait un tableau

remontre ton code

Reply

Marsh Posté le 20-06-2005 à 17:25:40    

voici le bout de code où le crée le tableau :  
if(!isset($_SESSION['panier']))
    $_SESSION['panier'] = array();    
   if(isset($_SESSION['panier'][$idproduit]))
    $_SESSION['panier'][$idproduit]++;
else
    $_SESSION['panier'][$idproduit] = 1;
 
 
est-ce que je déclare mal le tableau?

Reply

Marsh Posté le 20-06-2005 à 17:28:12    

je dis ptete une connerie mais on a le droit de modifier les variable de session comme ca??
 
moi j'aurai utilisé un session_register ou un truc du genre!

Reply

Marsh Posté le 20-06-2005 à 17:31:47    

$idproduit est un numéro d'article dans la base de données, passé par POST. j'exécute ce script quand j'ajoute un article dans le caddie.
 
ensuite, au moment d'énumérer le contenu du caddie, je fais :  
if(!isset($_SESSION['panier']))
    $_SESSION['panier'] = array();

Reply

Marsh Posté le 20-06-2005 à 17:34:38    

texaff a écrit :

je dis ptete une connerie mais on a le droit de modifier les variable de session comme ca??
 
moi j'aurai utilisé un session_register ou un truc du genre!


 
en tout cas ça marche avec la version d'easyPHP actuelle (donc PHP 4.3.10)
sous free il y a les versions 4.3.10 et 5.0.3 (d'ailleurs, c'est possible, ça? deux version en même temps?)

Reply

Marsh Posté le 20-06-2005 à 17:34:38   

Reply

Marsh Posté le 20-06-2005 à 17:41:54    

oui enfait j'ai di une connerie :)  
 
 
pour les versions il suffit d'aplé tes fichiers  
index.php
ou
index.php3
ou
index.php4
 
alors tu sera en version 4.3.10
 
et si tes fichiers sont de la forme  
index.php5
alors tu seras en php5 :)

Reply

Marsh Posté le 20-06-2005 à 17:48:10    

oki! merci pour l'info sur les version de PHP!
 
j'ai vu que $_SESSION est bien présent depuis PHP4.0.6 (c'est la nouvelle appellation de $HTTP_SESSION_VARS), donc dans tous les cas c'est sensé marcher...

Reply

Marsh Posté le 20-06-2005 à 17:50:14    

t'a essayer de faire ca genre pour le panier 43 :
 
$variable = $_session['panier'];
ensuite
$variable[43]++;
$_session['panier']= $variable ;
 
ca parait un peu con mais moi javais ce genre de probleme quand je voulais inserer dans une fonction  un tablo a double entrée...
 

Reply

Marsh Posté le 21-06-2005 à 09:55:15    

j'ai essayé mais ça ne fait rien.
 
en fait j'ai l'impression que ma variable ne reste pas un tableau à double entrée... quand j'exécute une première fois ce code:  
if(isset($_SESSION['panier'][$idproduit]))
    $_SESSION['panier'][$idproduit]++;
else
    $_SESSION['panier'][$idproduit] = 1;  
 
...c'est le else qui est exécuté : normal
mais après, impossible d'énumérer le tableau, et la deuxième fois, c'est à nouveau le else qui est exécuté,  et j'obtiens l'erreur "Cannot use a scalar value as an array", alors que le tableau n'a pas été réinitialisé

Reply

Marsh Posté le 21-06-2005 à 10:30:41    

j'ai fait des gettype un peu partout... dans le script qui ajoute le produit, la variable $_SESSION['panier'] est bien un array.
lorsque le script qui affiche la panier (avec le foreach) est exécuté, $_SESSION['panier'] est de type resource.
et lorsque je reviens au premier script pour ajouter un autre produit, il se transforme en integer....................

Reply

Marsh Posté le 21-06-2005 à 10:43:28    

j'ai trouvé d'ou venais le problème :  
ma variable de session changeais de type dès que je me connectais à une base de données. je faisais $panier = connect_db(); (un fonction perso) alors que ma variable de session était $_SESSION['panier']...... susceptibles, chez free quand même!!
merci pour votre aide en tout cas!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed