Il etait un panier...

Répondre
mojorisin
le 23/04/2005 à 13:51
mojorisin
Eh bien relis le manuel sur la fonction array_key_exists et tu devrais trouver d'où vient le warning.
echo ’16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D4D465452snlbxq’|dc
Touille
le 23/04/2005 à 15:29
Touille
lerreur fallé inversé les argument de array_key_exists.
ms bon sa modifié mon panier fonctionne correctement. ms jai rajouter la fonction supprimer
  1. <?php
  2. elseif ($_GET['action']=='del')
  3. {
  4. // suppression de l'article
  5. if (array_key_exists($_GET['produit'],$_SESSION['panier']))
  6. {
  7. //deux solution on supprime tous ou on en enlève 1 :)
  8. // tous supprimer
  9. //array_splice ($_SESSION['panier'], $_GET['produit'],1);
  10. // enlever un a la quantité
  11. $_SESSION['panier'][$_GET['produit']]--;
  12. if ($_SESSION['panier'][$_GET['produit']]==0)
  13. {
  14. array_splice ($_SESSION['panier'], $_GET['produit'],1);
  15. }
  16. }
  17. }
  18. ?>


mais qd jen rajoute sa augmente bien ms des ke c a 1 et je fé supprimer sa me decale tou mon tablo enfin par ex o debu sa maffiche
23 -> 1 si jai ajouter le 24 ieme mssi jsuppr et ben il affiche 0 -> 0 jpense ke ma fonction array_splice es mal utilisé ms bo lire le manuel jpige pa qqqun peu maider ?
Kel Bouille ^^
moogli
le 23/04/2005 à 17:23
moogli
Le array_splice sert a supprimer une ligne lorsque la quantité est nulle (tu devrait changer le == en >= pour ajouter le cas inférieur a zéro !).

Je n'est pas vraiment compris le problème, ton style sms me laisse dans le doute !

je pense qu'une explicatin claire avec des exemples plus claire pourrait nous aider a t'aider :)

ajoute a cela un var_dump($_SESSION['panier']) ainsi que la valeur de $_GET['produit'] lorsque tu veut supprimer.

N'oublie pas de vérifier si $_GET['produit'] existe !

smiley
Il en faut peu pour être heureux !!!!!
Touille
le 23/04/2005 à 18:39
Touille
bon alor je vai m'expliquer et mieu écrire :

Je crée un tablo dbase contenant tou mes produits.
  1. <?php
  2. $dbase = array();
  3. $dbase[] = array ('ArtBook','CowBoy Bebop','Titre : Knockin on heavens door.');
  4. $dbase[] = array ('ArtBook','Evangelion','Titre : Die Sterne.');
  5. $dbase[] = array ('ArtBook','Naruto','Titre : Uzumaki Illustrations.');
  6. $dbase[] = array ('ArtBook','Ah! My Goddes','Titre : The Field of Goddess (Screenplay Version).');
  7. $dbase[] = array ('Figurine','Street Fighter 2 !','Figurine M. Bison articulé.');
  8. $dbase[] = array ('Figurine','Chevalier du Cancer','Figurine Saint Seiya Myth Cloth Cancer.');
  9. $dbase[] = array ('Figurine','Goldorak Go!','Figurine Goldorak en plastique, 40 cm de marque MARMIT .');
  10. $dbase[] = array ('Figurine','Evangelion','Figurine Yuna.','produits/figurine/yuna.jpg');
  11. $dbase[] = array ('Figurine','Le joker de Batman','Figurine Joker de marque YAMATO.');
  12. $dbase[] = array ('Figurine','Street Fighter 2 !','Figurine Ryu articulé.');
  13. $dbase[] = array ('Poster','DragonBall Z','Fusion Songoten + Trunks.');
  14. $dbase[] = array ('Poster','DragonBall Z','Super guerrier à l\'attaque');
  15. $dbase[] = array ('Poster','DragonBall Z','Songoku de profil');
  16. $dbase[] = array ('Poster','DragonBall Z','Songoku et son fils (+ d\'autres perso)');
  17. $dbase[] = array ('Poster','DragonBall Z','Songoku Super Guerrier Niv 4');
  18. $dbase[] = array ('Poster','DragonBall Z','Songoku et la troupe');
  19. $dbase[] = array ('Poster','SAINT SEIYA Les chevaliers du zodiaque','dkjlsfdofghdlfjhsdfl.');
  20. $dbase[] = array ('Poster','SAINT SEIYA Les chevaliers du zodiaque','Descriptif.');
  21. $dbase[] = array ('Poster','SAINT SEIYA Les chevaliers du zodiaque','Descriptif.');
  22. $dbase[] = array ('Poster','SAINT SEIYA Les chevaliers du zodiaque','Descriptif.');
  23. $dbase[] = array ('Poster','SAINT SEIYA Les chevaliers du zodiaque','Descriptif.');
  24. $dbase[] = array ('Poster','SAINT SEIYA Les chevaliers du zodiaque','Descriptif.');
  25. $dbase[] = array ('Poster','SAINT SEIYA Les chevaliers du zodiaque','Descriptif.');
  26. $dbase[] = array ('Poster','SAINT SEIYA Les chevaliers du zodiaque','Descriptif.');
  27. ?>


Je les fai afficher dans un tableau et avec les liens ajouter et supprimer

  1. <?php
  2. echo "<table border='0'>";
  3. foreach ($dbase as $clef => $val)
  4. {
  5. echo "<tr>";
  6. echo " <td width='150px'>$val[0]</td>
  7. <td width='150px'>$val[1]</td>
  8. <td width='150px'>$val[2]</td>
  9. <td with='150px'>
  10. [ [ <a href='?produit=$clef&&action=ajout'>ajouter</a> ] ] - [ [ <a href='?produit=$clef&&action=del'>supprimer</a> ] ]
  11. </td>
  12. ";
  13. echo "</tr>";
  14. echo "<tr><td colspan='4'></td></tr>";

  15. }
  16. echo "</table>";
  17. ?>


Le code des liens ajouter et supprimer

  1. <?php
  2. if (isset ($_GET['action']) && isset ($_GET['produit']) )
  3. {
  4. if ($_GET['action']=='ajout') {
  5. //ajout d'un produit pour cela on utilise une variable de session => panier qui est un tableau donc les index sont les index du tableaux catalogue (celui du fichier) et dont le contenu est le nombre produits)
  6. if (array_key_exists($_GET['produit'],$_SESSION['panier']))
  7. {
  8. //on a déja le produit dans le tableau, on ajoute 1
  9. $_SESSION['panier'][$_GET['produit']]++;
  10. }
  11. else
  12. {
  13. //le produit n'existe pas dans le tableau on l'ajout
  14. $_SESSION['panier'][$_GET['produit']]=1;
  15. }
  16. }
  17. elseif ($_GET['action']=='del')
  18. {
  19. // suppression de l'article
  20. if (array_key_exists($_GET['produit'],$_SESSION['panier']))
  21. {
  22. //deux solution on supprime tous ou on en enlève 1 :)
  23. // tous supprimer
  24. //array_splice ($_SESSION['panier'], $_GET['produit'],1);
  25. // enlever un a la quantité
  26. $_SESSION['panier'][$_GET['produit']]--;
  27. if ($_SESSION['panier'][$_GET['produit']]<=0)
  28. {
  29. array_splice ($_SESSION['panier'], $_GET['produit'],1);
  30. }
  31. }
  32. }
  33. }
  34. ?>


Pour afficher la clef du produit de dbase et la qtite ajouter ds le panier

  1. <?php
  2. foreach ($_SESSION['panier'] as $cle => $valeur)
  3. {
  4. echo "$cle -> $valeur ";
  5. }
  6. ?>


Mon problème :
si jajoute d produit genre jajoute 2 foi celui la :
  1. <?php
  2. dbase[] = array ('Poster','SAINT SEIYA Les chevaliers du zodiaque','Descriptif.');
  3. //le dernier produit de la dbase
  4. ?>

cela maffichera alors
  1. 23 -> 1

pi la je le rajoute encore
cela maffichera alors
  1. 23 -> 2


des lors jessaye de les supprimer
dabord une foi cela donne :
  1. 23 -> 1

pi une otre foi
  1. 0 -> 0

et c'est je ne veu pa que cela affiche sa mais que cela enleve la ligne carrémen, donc san afficher 0 -> 0 mais pluto un vide.
on dirai kil recrée le tablo et en redonnant des numero de clef ( si vou voyez ce ke je veu dire )

est ce ke qqun comprd alors mon prob pour mieu me lexpliker svp ? et maider a le resoudre merci
Kel Bouille ^^
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours