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 :

Pb avec array_push


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 5
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    array_push($_SESSION['panier'][$_POST['nom_produit']], $_POST['qte']);
    => Ca ne fonctionne pas, voici le message d'erreur :
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $_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

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Y'a pas de raison que cela fonctionne pas puisque

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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>';

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 5
    Par défaut
    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 =/

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 5
    Par défaut
    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 : 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
    $_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

  5. #5
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Pour ajouter la quantité tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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'];
    }

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 5
    Par défaut
    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??

Discussions similaires

  1. probleme de tableau array avec la fonction array_push()
    Par carmen256 dans le forum Langage
    Réponses: 13
    Dernier message: 07/09/2009, 17h21
  2. [Tableaux] souci avec array_push sous firefox
    Par gregetso dans le forum Langage
    Réponses: 4
    Dernier message: 02/02/2009, 14h16
  3. [Tableaux] Problème avec array_push()
    Par tatayer_42 dans le forum Langage
    Réponses: 8
    Dernier message: 05/01/2007, 11h15
  4. [Tableaux] Souci avec array_push()
    Par renaud26 dans le forum Langage
    Réponses: 1
    Dernier message: 28/07/2006, 14h00
  5. [Tableaux] Pb avec array_push et foreach
    Par pounie dans le forum Langage
    Réponses: 4
    Dernier message: 16/12/2005, 17h56

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