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 :

probleme de boucle (foreach)


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Par défaut probleme de boucle (foreach)
    Bonjour alors voila, j'éspere que mon post est adapté a cette section, a vrai dire c'est ici que j'ai pensé après avoir parcouru les autres..

    Mon soucis est que j'ai un panier, tout fonctionne très bien si ce n'est que je n'ai pas ajouté de fonction qui incrémente la quantité d'un produit deja existant dans le panier ainsi le produit sera affiché 2 fois dans le panier jusque la aucun soucis mais lors de l'enregistrement de la commande dans ma BDD, j'ai une table "contient" qui récupère l'ID du produit contenu dans chaque commande, l'id de cette derniere et la quantité associée a chaque produit. Cependant le produit présent 2 fois dans le panier ne sera ajouté qu'une fois dans la BDD.

    j'ai donc créé cette boucle de vérification qui fonctionne lorsque le dernier article ajouté correspond au nouveau mais si j'intercale un autre article entre alors le produit reviendra.

    Exemple: si j'ajoute un clavier il est bien présent dans le catalogue,
    si je réessaie d'intégrer le meme clavier l'ajout n'est pas effectué

    Par contre si j'ajoute un clavier et ensuite une souris et que je
    rajoute encore le meme clavier, il est bien intégré dans le panier...
    c'est ce que je ne veux pas..

    voici ma boucle:

    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
    $ref=$_POST['reference'];
     
    	$cadd=$monpanier->getBasket();
    	foreach ($cadd as $art)
    	{ $ouch=$art;}
     
    		$position=array_search($ref, $ouch);
     
    		if ($position !== false)
    			{					
    				echo'votre article existe deja, veuillez utiliser les bouttons + et - pour ajuster la quantité désirée';				
    			}
    			else
    			{
                                     echo'article ajouté';
    $monpanier->addArticle(array('code'=>$_POST['reference'],'nom'=>$_POST['nom'],'prix'=>$_POST['prix'],'quantite'=>$_POST['quantite']));// on insere les valeurs dans le tableau "monpanier"
    	}

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 68
    Par défaut
    utilise in_array() plutôt que array_search()
    ou alors dans ta condition met

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($position != false)
    != au lieu de !== car array_search peut te sortir 0, false ou "" en fonction des situations...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Par défaut
    merci pour ta réponse, j'utilise in_array() du coup

    mais la vérification ne se fait toujours que sur le dernier article ajouté au panier et non sur le panier en entier...
    ca fait 2 jours que je suis la dessus a faire des bidouilles par-ci par-là pour toujours le même résultat

    si quelqu'un à une idée de mon erreur ou une piste de résolution vous êtes les bienvenus!!

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 68
    Par défaut
    Tu peux nous montrer le contenue de $monpanier->getBasket() avec ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print_r ($monpanier->getBasket())

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Par défaut
    Bien sur voici le résultat avec 1 article dans le panier:


    Array ( [0] => Array ( [code] => 88-RRF-43 [nom] => suite office [prix] => 500,00 [quantite] => 1 ) )

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 68
    Par défaut
    Si tu as seulement le dernier article, c'est à cause de la boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach ($cadd as $art)
    { 
    	$ouch=$art;
    }
    la variable $ouch est écrasé à chaque itération de la boucle... Et donc ne conserve que la dernière valeur

    Essaie plutot ceci

    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
     
    $ref = $_POST['reference'];
     
    $cadd=$monpanier->getBasket();
    foreach ($cadd as $art)
    { 
    	if (in_array($ref, $art))
            {					
    	      echo'votre article existe deja, veuillez utiliser les bouttons + et - pour ajuster la quantité désirée';				
            }
            else
            {
    	      echo'article ajouté';
                  $monpanier->addArticle(array('code'=>$_POST['reference'],'nom'=>$_POST['nom'],'prix'=>$_POST['prix'],'quantite'=>$_POST['quantite']));// on insere les valeurs dans le tableau "monpanier"
            }
    }

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

Discussions similaires

  1. Probleme Boucle foreach
    Par kataboy dans le forum Langage
    Réponses: 4
    Dernier message: 26/03/2012, 09h45
  2. probleme boucle foreach simplexml
    Par magieweb dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 19/01/2009, 21h49
  3. [Language]Problème de boucle
    Par marc_dd dans le forum Langage
    Réponses: 11
    Dernier message: 06/10/2005, 14h24
  4. Problem de boucle.....
    Par skad dans le forum C++
    Réponses: 6
    Dernier message: 29/09/2005, 16h28
  5. [C#] Probleme de boucle for et random
    Par Freeman166 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 09/01/2005, 14h34

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