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 20/03/2011, 17h45   #1
Invité de passage
 
Inscription : mars 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 5
Points : 0
Points : 0
Par défaut Pb avec array_push

Bonjour,

J'ai un souci avec mon script.

Je possède un panier. Je souhaite récupérer via un formulaire le produit et la quantité demandée de ce produit.

Exemple :
Si pour le produit Voiture1 le client saisie comme quantité "1" puis valide je souhaite avoir dans mon tableau [panier][Voiture1]=>1.

Si ce client saisie tout de suite après 2 quantités de cette même voiture puis valide je souhaite que cette quantité s'ajoute à la précédente. Donc je devrais avoir [panier][Voiture1]=>3.


Problème
1. Je créé mon tableau
$_SESSION['panier'][$_POST['nom_produit']]= array() ;

2. Pour ajouter la quantité je souhaite utiliser array_push :
Code php :
array_push($_SESSION['panier'][$_POST['nom_produit']], $_POST['qte']);
=> Ca ne fonctionne pas, voici le message d'erreur :
Citation:
Warning: array_push() expects parameter 1 to be array, string given in (chemin C:/....)

Lorsque je le fait de la façon suivante cela fonctionne :

Code php :
$_SESSION['panier'][$_POST['nom_produit']]= $_POST['qte'];

Le problème c'est que ma nouvelle valeur va remplacé l'ancienne au lieu de s'ajouter, d'où le fait que je souhaite utiliser array_push.


Quelqu'un saurait-il comment faire ?
Merci d'avance
clementinebis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2011, 22h19   #2
Membre Expert
 
Inscription : septembre 2010
Messages : 1 240
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 240
Points : 1 562
Points : 1 562
Y'a pas de raison que cela fonctionne pas puisque

Code :
1
2
3
4
5
6
7
8
9
$_POST['nom_produit'] ='toto';
$_POST['qte'] =1;
$_SESSION['panier'][$_POST['nom_produit']]= array() ;
 
array_push($_SESSION['panier'][$_POST['nom_produit']], $_POST['qte']);
 
echo '<pre>';
print_r($_SESSION['panier']);
echo '</pre>';
...ça fonctionne.

Sinon plutôt que de faire un array_push tu devrais peut-être plutôt utiliser un index alphanumérique plus facile à gérer :
Code :
1
2
3
4
5
6
7
8
9
$_POST['nom_produit'] ='toto';
$_POST['qte'] =1;
$_SESSION['panier'][$_POST['nom_produit']]= array() ;
 
$_SESSION['panier'][$_POST['nom_produit']]['qte'] = $_POST['qte'];
 
echo '<pre>';
print_r($_SESSION['panier']);
echo '</pre>';
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 19h16   #3
Invité de passage
 
Inscription : mars 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 5
Points : 0
Points : 0
La première fois que j'entre une valeur ca fonctionne mais la deuxième fois ca ne fonctionne pas et du coup ca ne s'ajoute pas à la premiere valeur.

Ce qui est embetant cest que sous cette forme ca aurait ete bon pour le reste de ma programmation mais il m'indique toujours ce message d'erreur =/
clementinebis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 19h40   #4
Invité de passage
 
Inscription : mars 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 5
Points : 0
Points : 0
En essayant ton code ça ne fonctionne pas non plus. Je n'ai pas de message d'erreur mais ça ne s'ajoute pas.

Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$_POST['nom_produit'] ='toto';
$_POST['qte'] =1;
$_SESSION['panier'][$_POST['nom_produit']]= array() ;
 
array_push($_SESSION['panier'][$_POST['nom_produit']], $_POST['qte']);
 
echo '<pre>';
print_r($_SESSION['panier']);
echo '</pre>';
 
 
$_POST['nom_produit'] ='toto';
$_POST['qte'] =2;
array_push($_SESSION['panier'][$_POST['nom_produit']], $_POST['qte']);
 
echo '<pre>';
print_r($_SESSION['panier']);
echo '</pre>';

Au lieu d'avoir 3 j'ai [0]=> 1 [1]=> 2
clementinebis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 20h31   #5
Membre Expert
 
Inscription : septembre 2010
Messages : 1 240
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 240
Points : 1 562
Points : 1 562
Pour ajouter la quantité tu peux faire :

Code :
1
2
3
4
if (isset($_POST['qte']))
{
$_SESSION['panier'][$_POST['nom_produit']]['qte'] = isset($_SESSION['panier'][$_POST['nom_produit']]['qte'])? $_SESSION['panier'][$_POST['nom_produit']]['qte'] + $_POST['qte'] : $_POST['qte'];
}
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/03/2011, 21h09   #6
Invité de passage
 
Inscription : mars 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 5
Points : 0
Points : 0
Merci beaucoup ! J'ai une question liée.

Si jamais j'associe à un nom de produit une quantité ($_session['panier']['voiture']=5)

et que je souhaite calculer le montant :

1. j'écris une requete recuperant dans ma base le prix et le nom du produit c'est à dire Voiture (nom du produit) et 12000 (prix).

Je n'arrive pas a calculer le montant en faisant ceci :

while($data=mysql_fetch_assoc($resultat))
{
$montant=$_SESSION['panier'][$_POST['nom_produit']]*$data['prix'];
}

Pourtant je multiplie bien la quantité par le prix puisque $_SESSION['panier'][$_POST['nom_produit']] renvoie à 5

je viens de me rendre compte de mon erreur.
Ca ne renvoie pas 5 mais ca renvoie 'array'

Comment faire pour que cela renvoie 5??
clementinebis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 21h41   #7
Invité de passage
 
Inscription : mars 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 5
Points : 0
Points : 0
Grace a ta réponse précédente j'ai trouvé la solution, ca m'apprendra a ne pas lire attentivement !
J'ai pu résoudre mon probleme et terminer ma programmation ! je te remercie beaucoup
clementinebis 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 20h17.


 
 
 
 
Partenaires

Hébergement Web