[Résolu] Problème avec une boucle

Problème avec une boucle [Résolu] - PHP - Programmation

Marsh Posté le 25-09-2008 à 19:03:48    

Bonjour à tous, je fais appel à vos conseils car j'ai un problème avec une boucle php sur lequel je planche depuis plusieurs heures.
 
J'ai une liste d'objets avec la possibilité de les mettre dans un panier.
Je voudrai pouvoir afficher "Ajouter au panier" si l'objet n'est pas encore dans le panier donc et "Supprimer du panier" si l'objet y est déjà.
 
Voici le code de la boucle:
 

Code :
  1. for ($idObjet = 0; $idObjet < $nbObjet; $idObjet++) {
  2. if ($donnees['id_objet'] !== $objet_deja_dans_le_panier[$idObjet]) { ?>
  3.  <a href="">Ajouter au panier</a>
  4. <?php }
  5. else { ?>
  6.  <a href="">Supprimer du panier</a>
  7. <?php }
  8. }


 
Ca fonctionne bien lorsque j'ai un seul bien dans le panier, mais dès que j'en ai deux ou plus, au lieu qu'il n'y ait que "Ajouter au panier" ou "Supprimer du panier", j'ai par exemple:
 
Ajouter au panier
Ajouter au panier
Ajouter au panier
Supprimer du panier
 
Selon le nombre d'objets dans le panier.
Il y a peut être une solution avec 'break', mais je n'ai pas réussi.
 
Merci par avance pour votre aide.


Message édité par Ben-o le 26-09-2008 à 10:55:17
Reply

Marsh Posté le 25-09-2008 à 19:03:48   

Reply

Marsh Posté le 25-09-2008 à 19:07:18    

le  melange id_objet idObjet est du meilleur gout :love:
 

Code :
  1. if ($donnees['id_objet'] !== $objet_deja_dans_le_panier[$idObjet])


 
a remplacer par un truc du genre  

Code :
  1. if(in_array($idObjetEnCours , $tableauDesObjetsDansMOnPanier)))

Reply

Marsh Posté le 25-09-2008 à 19:36:48    

Merci flo, je teste ça !

Reply

Marsh Posté le 25-09-2008 à 22:13:53    

J'ai toujours le même problème punaise, je ne m'en sors pas.
Voici le code complet :
 

Code :
  1. <?php
  2. $nbObjets = count($_SESSION['panier']['idObjet']); // On récupère le nombre total d'objets
  3. $objet_deja_dans_le_panier = array(); // On initialise la variable $objet_deja_dans_le_panier en tant qu'array
  4. if ($nbObjets > 0) { // Si il y a des objets dans le panier
  5.  for ($i = 0; $i < $nbObjets; $i++) { // On fait une boucle pour alimenter l'array avec les id des objets du panier
  6.   $objet_deja_dans_le_panier[] = htmlspecialchars($_SESSION['panier']['idObjet'][$i]);
  7.  }
  8.  for ($idObjet = 0; $idObjet < $nbObjets; $idObjets++) {
  9.   if (in_array($donnees['id_objet'], $objet_deja_dans_le_panier)) { ?>
  10.    <br /><a href="">Supprimer du panier</a>
  11.   <?php }
  12.   else { ?>
  13.    <br /><a href="">Ajouter au panier</a>
  14.   <?php }
  15.  } // Fermeture boucle for ($idObjet = 0; $idObjet < $nbObjets; $idObjet++)
  16. } // Fermeture if ($nbObjets > 0)
  17. // Si il n'y a pas d'Objets dans le panier, on affiche : "ajouter au panier"
  18. else { ?>
  19.  <br /><a href="">Ajouter au panier</a>
  20. <?php }
  21. ?>


 
Merci par avance si quelqu'un peut me donner une piste.
 
PS: je changerai les id_objet et idObjet après coup, merci pour le conseil.

Reply

Marsh Posté le 26-09-2008 à 09:56:38    

Ben-o a écrit :

J'ai toujours le même problème punaise, je ne m'en sors pas.
Voici le code complet :

 
Code :
  1. <?php
  2. $nbObjets = count($_SESSION['panier']['idObjet']); // On récupère le nombre total d'objets
  3. $objet_deja_dans_le_panier = array(); // On initialise la variable $objet_deja_dans_le_panier en tant qu'array
  4. if ($nbObjets > 0) { // Si il y a des objets dans le panier
  5.  for ($i = 0; $i < $nbObjets; $i++) { // On fait une boucle pour alimenter l'array avec les id des objets du panier
  6.   $objet_deja_dans_le_panier[] = htmlspecialchars($_SESSION['panier']['idObjet'][$i]);
  7.  }
  8.  for ($idObjet = 0; $idObjet < $nbObjets; $idObjets++) {
  9.   if (in_array($donnees['id_objet'], $objet_deja_dans_le_panier)) { ?>
  10.    <br /><a href="">Supprimer du panier</a>
  11.   <?php }
  12.   else { ?>
  13.    <br /><a href="">Ajouter au panier</a>
  14.   <?php }
  15.  } // Fermeture boucle for ($idObjet = 0; $idObjet < $nbObjets; $idObjet++)
  16. } // Fermeture if ($nbObjets > 0)
  17. // Si il n'y a pas d'Objets dans le panier, on affiche : "ajouter au panier"
  18. else { ?>
  19.  <br /><a href="">Ajouter au panier</a>
  20. <?php }
  21. ?>
 

Merci par avance si quelqu'un peut me donner une piste.

 

PS: je changerai les id_objet et idObjet après coup, merci pour le conseil.

 


$objet_deja_dans_le_panier[] = htmlspecialchars($_SESSION['panier']['idObjet'][$i]); <== le htmlspecialchars est inutile . Il ne doit servir que lors d'un affichage. Et en plus , tes id sont sensé etre numériques,non?

 


for ($idObjet = 0; $idObjet < $nbObjets; $idObjets++) {  <== tu n'utilise jamais $idObjet dans ta boucle, je suis pas sur que ce soit normal

 

// On initialise la variable $objet_deja_dans_le_panier en tant qu'array <== commentaire inutile


Message édité par flo850 le 26-09-2008 à 09:56:59
Reply

Marsh Posté le 26-09-2008 à 10:55:03    

Merci pour ton aide flo, j'ai résolu le problème, je n'avais tout simplement pas besoin de boucle...

Reply

Marsh Posté le 26-09-2008 à 11:00:53    

Question au hasard : "Comment ajoute-t-on [RESOLU] à l'en-tête d'un sujet clos sur ce forum??" Merci

Reply

Marsh Posté le 26-09-2008 à 11:02:06    

Il te suffit d'éditer ton premier post

Reply

Marsh Posté le 26-09-2008 à 11:02:59    

Merci bien

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed