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

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 11
    Points
    11
    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 régulier
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 68
    Points : 97
    Points
    97
    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 à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 11
    Points
    11
    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 régulier
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 68
    Points : 97
    Points
    97
    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 à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 11
    Points
    11
    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 régulier
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 68
    Points : 97
    Points
    97
    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"
            }
    }

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    ah non j'ai deja essayé ca en fait.
    ca doit pouvoir marcher mais avec un count sur le nombre d'enregistrements par ce que la il n'accepte même pas 1 article dans le panier puisque la vérification est effectuée pour chaque enregistrement du coup dès qu'on ajoute un article il va vérifier et interdire (= afficher "votre article existe deja, veuillez utiliser les boutons + et - pour ajuster la quantité désirée")

    je vais essayer avec une boucle for avec $i<nombre d'articles

    qui vérifiera sur $cadd[$i]

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Bon j'ai éssayé ca ce matin:

    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
    25
    26
    27
    if(isset($_POST['reference'],$_POST['nom'],$_POST['prix'],$_POST['quantite']))
    {	
    	$ref=$_POST['reference'];
     
    	$cadd=$monpanier->getBasket();
    	$nb_art = $monpanier->getNbrArticle();
    	$yo=$nb_art+1;
    	for($i=0; $i<$nb_art; $i++)
    	{
    		$tabs=$cadd[$i];
    	}
    	$x=0;
    	while($x<$yo)
    	{
    	$position=array_search($ref, $tabs);
    	$x++;
    	}
    		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"
            } 
    }
    mais toujours pas de résultat, il me prend toujours la dernière valeur ajoutée
    j'ai fais ca a la base pour pouvoir mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $position=array_search($ref, $tabs[$x])
    mais il n'aime pas le [x]....
    je pensais que ca allait me parcourir chaque liste de valeurs de $tabs mais non..
    comment faire pour la vérification sur toutes les valeurs du tableau?

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

    Informations forums :
    Inscription : Octobre 2009
    Messages : 68
    Points : 97
    Points
    97
    Par défaut
    C'est toujours le même problème...
    Ta boucle for écrase à chaque itération ta variable $tabs... Du coup elle n'a qu'un élément: le dernier de $cadd

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    oui je sais ca m'énerveeeeeeeeeeeeeeeeee car si je mets tout dans ma boucle il n'accepte pas 1 seul enregistrement :'( je déséspere

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

    Informations forums :
    Inscription : Octobre 2009
    Messages : 68
    Points : 97
    Points
    97
    Par défaut
    dans ta boucle au lie de mettre

    met


  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    j'ai aussi éssayé... sans résultat.... ou alors la vérification ne fonctionne même plus pour le dernier article... je pète un câble la...

    sinon est-ce qu'il y a un équivalent de array_search mais pour les variables?
    par ce que je pourrais éssayer:

    foreach($tabs as $articles)

    et faire la verif la dessus c'est peut-etre moins compliqué de le faire sur autre chose qu'un tableau...
    j'aurais bientôt tout essayé
    je vous dis pas quand j'aurais trouvé l'explosion de joie que je vais connaître!!

  13. #13
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Et quelque chose comme ça,
    ça ne ferait pas l'affaire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $trouve=false;
    foreach ($cadd as $art) {
    	if (in_array($ref,$art)) {
    		$trouve=true;
    		break;
    	}
    }
    if ($trouve) 
    	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"
    }
    Fred

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

    Informations forums :
    Inscription : Octobre 2009
    Messages : 68
    Points : 97
    Points
    97
    Par défaut
    Peut tu nous montrer le reste du code de la page ?

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Je t'AIMMMMMMMMMMMMMEEEEEEEEEEEEEE


    c'est toi le meilleur!!! tu déchires!!! quel homme!!! Bravo!!!
    And the winner is micetf


    je sais pas comment te remercier serieux!!!

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    openaccess je te remercie également pour le temps que tu as passé a éssayer de trouver ca!! vous déchirez les gars!!

+ 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