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 :

[Tableaux] Problème dans caddie


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 40
    Points : 32
    Points
    32
    Par défaut [Tableaux] Problème dans caddie
    Salut à tous,

    j'ai un pb dans mon caddie.
    Je veux vérifier que le produoit n'y soit pas déjà pour rajouter une ligne. S'il y est déjà, je voudrai modifier sa quantité...

    <?php

    if(isset($_GET&#91;'action']) && isset($_GET&#91;'id']))
    {
    &#160;&#160;&#160;if(
    session_is_registered('panier') && is_array($panier)) // le panier existe déjà
    &#160;&#160;&#160;
    {
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    $nbprod = count($panier);
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (
    $_GET&#91;'action'] == "add") // on ajoute le produit
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    {
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for(
    $i=0;$i<$nbprod;$i++) // on liste tous les pdts du panier
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    {
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (
    $panier&#91;$i]&#91;'prod'] == $_GET&#91;'prod']) // le pdt existe déjà LE BUG EST ICI !
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    {
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    $newQte = ($_GET&#91;'qte'] + $panier&#91;$i]&#91;'qte']);
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    array_splice($panier,$prodline,$newQte);
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    $message = "+ 1 en qte";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else
    // n'existait pas, on le rajoute
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    {
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    $ajout = 1;
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (
    $ajout == 1)
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    array_push($panier,array("prod" => $_GET&#91;'id'],"qte" => $_GET&#91;'qte']));
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    $message = "on en rajoute 1 / 1 ligne";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;elseif ((
    $_GET&#91;'action'] == "del")) // on supprime le produit
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    {
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    $message = "on en effece 1";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;elseif (
    $_GET&#91;'action'] == "mod") // on modifie la quantité
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    {
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    $message = "on en modif 1";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else
    // couille dans le potage
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    {
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    //$message = "Une erreur s'est produite, merci de renouveller votre action.";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    }
    &#160;&#160;&#160;}
    &#160;&#160;&#160;else
    // le panier n'existe pas
    &#160;&#160;&#160;
    {
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    session_register('panier');
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    $panier = array ();
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    array_push($panier,array("prod" => $_GET&#91;'id'],"qte" => $_GET&#91;'qte']));
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    //$message = "Votre produit a bien &eacute;t&eacute; rajouté au panier.";
    &#160;&#160;&#160;
    }
    }

    ?>
    Colorez votre code PHP sur les forums grâce à Developpez.com

    Merci pour votre coup de main

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Turquie

    Informations forums :
    Inscription : Avril 2005
    Messages : 614
    Points : 502
    Points
    502
    Par défaut
    Qu'est censé contenir $_GET['prod'] ?

    si c'est l'id du produit alors la condition serai simplement :
    if ($panier[$i] == $_GET['prod'])
    et je dirai meme que çà ce cas là il suffirait de faire:
    if($panier[$_GET['prod']]) // test si ton produit est présent dans le tableau

    j'attends de tes news

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 40
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par maximenet
    Qu'est censé contenir $_GET['prod'] ?

    si c'est l'id du produit alors la condition serai simplement :
    if ($panier[$i] == $_GET['prod'])
    et je dirai meme que çà ce cas là il suffirait de faire:
    if($panier[$_GET['prod']]) // test si ton produit est présent dans le tableau

    j'attends de tes news
    Salut maximenet,

    effectivement $_GET['prod'] est bien l'id du produit.

    J'ai testé tes différentes propositions mais elles ne fonctionnent pas !

    Merci

  4. #4
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Déjà n'utilise pas session_is_registered() mais plutot isset($_SESSION['panier']), tout comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    session_register('panier');
    $panier = array ();
    array_push($panier,array("prod" => $_GET['id'],"qte" => $_GET['qte']));
    //$message = "Votre produit a bien &eacute;t&eacute; rajouté au panier.";
    Utilise plutot simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $_SESSION['panier'] = array("prod" => $_GET['id'],"qte" => $_GET['qte']);
    //$message = "Votre produit a bien &eacute;t&eacute; rajouté au panier.";
    Essai ça pour ta boucle et dit moi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    foreach($_SESSION['panier'] as $key => $array) {
       if ($array['prod'] == $_GET['id']) {
          $newQte = ($_GET['qte'] + $array['qte']);
          $_SESSION['panier'][$key]['qte'] = $newQte;
          $message = "+ 1 en qte";
       }
       else
          $ajout = 1;
    }

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 40
    Points : 32
    Points
    32
    Par défaut
    Merci Anduriel !

    Cela a presque fonctionné du premier coup En fait il manquait des crochets à la déclaration du tableau :

    <?php
    $_SESSION
    ['panier'][] = array("prod" => $_GET['id'],"qte" => $_GET['qte']);
    ?>
    Colorez votre code PHP sur les forums grâce à Developpez.com

    Bon maintenant c'est ma fonction pour supprimer qui me rend fou... Je risque de revenir

    Merci encore !

    PS : il faudra que je me penche qomme il faut sur ton bout de code car je n'ai pas compris grand chose.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 40
    Points : 32
    Points
    32
    Par défaut Pb pour supprimer produit
    Bon,

    maintenant, je voudrai supprimer un article de mon panier. Et bien sûr, ce que j'ai pu trouver sur le net, ne fonctionne pas du premier coup

    <?php
    elseif (($_GET['action'] == "del")) // on supprime le produit
    {
    foreach(
    $_SESSION['panier'] as $key => $array)
    {
    if (
    $array['prod'] == $_GET['id'])
    {
    unset(
    $_SESSION['panier'][$i]);
    $message = " effacé !! ";
    }
    }
    }

    ?>
    Colorez votre code PHP sur les forums grâce à Developpez.com

    Ca buggue ou ? Thanxx !

  7. #7
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unset($_SESSION['panier'][$i]);
    devient:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unset($_SESSION['panier'][$key]);

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 40
    Points : 32
    Points
    32
    Par défaut
    NIKEL ! Décidemment, je n'ai pas tout compris à ce système de key

    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Tableaux] Problème dans ma requête UPDATE SET
    Par mickado dans le forum Langage
    Réponses: 7
    Dernier message: 02/05/2007, 23h41
  2. [Tableaux] Problème dans ma boucle
    Par Sandara dans le forum Langage
    Réponses: 29
    Dernier message: 28/06/2006, 11h34
  3. Réponses: 5
    Dernier message: 24/12/2005, 15h40
  4. Réponses: 2
    Dernier message: 19/12/2005, 12h23
  5. Réponses: 2
    Dernier message: 14/09/2005, 13h39

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