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 :

array-search et array-push


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Par défaut array-search et array-push
    Bonjour,

    Je débute en php, et j'ai suivi des tutos pour apprendre, notamment un tuto sur les paniers sur ce site.

    Mais voila j'ai des probleme avec certaines fonctions qui me renvoi des erreurs. Apres avoir verifié sur la doicumentation php, je ne vois vraiment pas le probleme.

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ajouterArticle("Test1",2,12,8);
    Code : 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
    19
    20
    21
    22
    23
    24
     
    function ajouterArticle($libelleProduit,$qteProduit,$prixProduit){
     
       //Si le panier existe
       if (creationPanier() && !isVerrouille())
       {
          //Si le produit existe déjà on ajoute seulement la quantité
          $positionProduit = array_search($libelleProduit,  $_SESSION['panier']['libelleProduit']);
     
          if ($positionProduit !== false)
          {
             $_SESSION['panier']['qteProduit'][$positionProduit] += $qteProduit ;
          }
          else
          {
             //Sinon on ajoute le produit
             array_push( $_SESSION['panier']['libelleProduit'],$libelleProduit);
             array_push( $_SESSION['panier']['qteProduit'],$qteProduit);
             array_push( $_SESSION['panier']['prixProduit'],$prixProduit);
          }
       }
       else
       echo "Un problème est survenu veuillez contacter l'administrateur du site.";
    }
    Creation panier et isVerouille permettent de creer et verouiller le panier.

    L'excution de ce code me renvoi les erreurs suivantes:
    Warning: array_search() [function.array-search]: Wrong datatype for second argument in /Users/.../fonctions/PanierFunctions.php on line 29

    Warning: array_push() [function.array-push]: First argument should be an array in /Users/.../fonctions/PanierFunctions.php on line 38

    Mes arguments sont pourtant de bon type.

    Merci par avance pour votre aide.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    utilise var_dump() pour controler ta variable.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Par défaut
    J'ai utilisé var_dump, ma variable existe bien, mais il ne veut pas que je la remplisse

  4. #4
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Le problème c'est juste que $_SESSION['panier']['libelleProduit'] n'est pas un tableau je pense, et array_search cherche dans... des tableaux.

    Que renvoie ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var_dump(is_array($_SESSION['panier']['libelleProduit']));
    Tu as mal compris l'utilisation des tableaux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // on ajoute un produit au panier
    $_SESSION['panier'][] = array(
        'libelleProduit' => 'Cacahuètes',
        'prix' => 5
    );

  5. #5
    Membre éclairé Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Par défaut
    Salut,

    Merci pour ta réponse. Je suis au boulot, je fais le test en rentrant ce soir et publie le résultat.

    Mais pour info, j'ai bien suivi ce tuto pour faire mon panier et il me semble que mon panier est bien un array.

  6. #6
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Je trouve que dans ce tuto la manière dont sont stockées les produits dans le panier n'est pas logique, même si cela fonctionne évidemment.

    Aussi, $_SESSION['panier'] est surement un array, mais dans ton code $_SESSION['panier']['libelleProduit'] ne l'est clairement pas.

  7. #7
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    ThomasR +1

    La construction de ton tableau de session de produit ne t'aide pas à la gestion de tout ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // on ajoute un produit au panier
    $_SESSION['panier'][] = array(
        'libelleProduit' => 'Cacahuètes',
        'prix' => 5
    );
    Donc ici, il se créé un indice automatiquement pour chaque produit.
    Le principe est donc déjà bien mieux, car il permet de mieux représenter la réalité, comme tous les produit auront tous 1 libellé, un prix, une quantité etc ...

    Cependant, pour encore facilité l'accès à ce tableau, au lieu de faire accorder un indice automatique, l'idéal serait de mettre l'ID du produit.
    Exemple lors de la création d'un produit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // on ajoute un produit au panier
    $produit_id = (int)$_POST['produit_id'];
     
    $_SESSION['panier'][$produit_id] = array(
        'libelleProduit' => 'Cacahuètes',
        'prix' => 5
    );
    Ce qui fait que (par exemple) lors de la récupération d'un produit, en supposant que tu prévois de toujours t'appuyer sur l'ID du produit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $produit_id = (int)$_POST['produit_id'];
     
    $info_produit = $_SESSION['panier'][$produit_id];
    echo 'Le prix : '.$info_produit['prix'];
    echo 'Libellé : '.$info_produit['libelleProduit'];
    Ca devient très simple, et dans tous les cas : Ajout, suppression, mise à jours, affichage.

    Donc on a pas à ce prendre le choux à savoir la position du produit, l'ID du produit DOIT être un élément connu et indispensable à la gestion d'un panier.
    Bref ... le principe fourni par le tuto me semble pas aussi une bonne solution, c'est fort dommage vu le travail accompli.

  8. #8
    Membre éclairé Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Par défaut
    J'avais bien pigé ce tuto. Certes je trouve ca bourrin, mais comme je suis pas un pro du php, je l'ai pris tel quel.

    Merci pour vos conseils, j'essaye de mettre ca en place ce soir.

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    il me semble que
    La réponse était dans le var_dump() justement.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. Array dans un Array.. Dans un Array
    Par blinkman04 dans le forum Langage
    Réponses: 3
    Dernier message: 27/01/2014, 14h36
  2. Réponses: 22
    Dernier message: 18/02/2010, 18h59
  3. Réponses: 7
    Dernier message: 12/03/2007, 09h06
  4. Différence entre ARRAY et PACKED ARRAY
    Par homeostasie dans le forum Langage
    Réponses: 5
    Dernier message: 16/01/2007, 22h02
  5. [Tableaux] Affichage d'array et sous-array
    Par zebulon90 dans le forum Langage
    Réponses: 6
    Dernier message: 06/10/2006, 09h56

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