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
<?php 
elseif ($_GET['action']=='del')
{
// suppression de l'article
if (array_key_exists($_GET['produit'],$_SESSION['panier']))
{
//deux solution on supprime tous ou on en enlève 1 :)
// tous supprimer
//array_splice ($_SESSION['panier'], $_GET['produit'],1);
// enlever un a la quantité
$_SESSION['panier'][$_GET['produit']]--;
if ($_SESSION['panier'][$_GET['produit']]==0)
{
array_splice ($_SESSION['panier'], $_GET['produit'],1);
}
}
}
?>


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.
<?php
$dbase = array();
$dbase[] = array ('ArtBook','CowBoy Bebop','Titre : Knockin on heavens door.');
$dbase[] = array ('ArtBook','Evangelion','Titre : Die Sterne.');
$dbase[] = array ('ArtBook','Naruto','Titre : Uzumaki Illustrations.');
$dbase[] = array ('ArtBook','Ah! My Goddes','Titre : The Field of Goddess (Screenplay Version).');
$dbase[] = array ('Figurine','Street Fighter 2 !','Figurine M. Bison articulé.');
$dbase[] = array ('Figurine','Chevalier du Cancer','Figurine Saint Seiya Myth Cloth Cancer.');
$dbase[] = array ('Figurine','Goldorak Go!','Figurine Goldorak en plastique, 40 cm de marque MARMIT .');
$dbase[] = array ('Figurine','Evangelion','Figurine Yuna.','produits/figurine/yuna.jpg');
$dbase[] = array ('Figurine','Le joker de Batman','Figurine Joker de marque YAMATO.');
$dbase[] = array ('Figurine','Street Fighter 2 !','Figurine Ryu articulé.');
$dbase[] = array ('Poster','DragonBall Z','Fusion Songoten + Trunks.');
$dbase[] = array ('Poster','DragonBall Z','Super guerrier à l\'attaque');
$dbase[] = array ('Poster','DragonBall Z','Songoku de profil');
$dbase[] = array ('Poster','DragonBall Z','Songoku et son fils (+ d\'autres perso)');
$dbase[] = array ('Poster','DragonBall Z','Songoku Super Guerrier Niv 4');
$dbase[] = array ('Poster','DragonBall Z','Songoku et la troupe');
$dbase[] = array ('Poster','SAINT SEIYA Les chevaliers du zodiaque','dkjlsfdofghdlfjhsdfl.');
$dbase[] = array ('Poster','SAINT SEIYA Les chevaliers du zodiaque','Descriptif.');
$dbase[] = array ('Poster','SAINT SEIYA Les chevaliers du zodiaque','Descriptif.');
$dbase[] = array ('Poster','SAINT SEIYA Les chevaliers du zodiaque','Descriptif.');
$dbase[] = array ('Poster','SAINT SEIYA Les chevaliers du zodiaque','Descriptif.');
$dbase[] = array ('Poster','SAINT SEIYA Les chevaliers du zodiaque','Descriptif.');
$dbase[] = array ('Poster','SAINT SEIYA Les chevaliers du zodiaque','Descriptif.');
$dbase[] = array ('Poster','SAINT SEIYA Les chevaliers du zodiaque','Descriptif.');
?>


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

<?php
echo "<table border='0'>";
foreach ($dbase as $clef => $val)
{
echo "<tr>";
echo " <td width='150px'>$val[0]</td>
<td width='150px'>$val[1]</td>
<td width='150px'>$val[2]</td>
<td with='150px'>
[ [ <a href='?produit=$clef&&action=ajout'>ajouter</a> ] ] - [ [ <a href='?produit=$clef&&action=del'>supprimer</a> ] ]
</td>
";
echo "</tr>";
echo "<tr><td colspan='4'></td></tr>";

}
echo "</table>";
?>


Le code des liens ajouter et supprimer

<?php
if (isset ($_GET['action']) && isset ($_GET['produit']) )
{
if ($_GET['action']=='ajout') {
//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)
if (array_key_exists($_GET['produit'],$_SESSION['panier']))
{
//on a déja le produit dans le tableau, on ajoute 1
$_SESSION['panier'][$_GET['produit']]++;
}
else
{
//le produit n'existe pas dans le tableau on l'ajout
$_SESSION['panier'][$_GET['produit']]=1;
}
}
elseif ($_GET['action']=='del')
{
// suppression de l'article
if (array_key_exists($_GET['produit'],$_SESSION['panier']))
{
//deux solution on supprime tous ou on en enlève 1 :)
// tous supprimer
//array_splice ($_SESSION['panier'], $_GET['produit'],1);
// enlever un a la quantité
$_SESSION['panier'][$_GET['produit']]--;
if ($_SESSION['panier'][$_GET['produit']]<=0)
{
array_splice ($_SESSION['panier'], $_GET['produit'],1);
}
}
}
}
?>


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

<?php
foreach ($_SESSION['panier'] as $cle => $valeur)
{
echo "$cle -> $valeur ";
}
?>


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

cela maffichera alors
23 -> 1

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


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

pi une otre foi
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