le 23/04/2005 à 12:25
Touille
Il etait un panier...
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.
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
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 ?
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 ?
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 !
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 !
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.
Je les fai afficher dans un tableau et avec les liens ajouter et supprimer
Le code des liens ajouter et supprimer
Pour afficher la clef du produit de dbase et la qtite ajouter ds le panier
Mon problème :
si jajoute d produit genre jajoute 2 foi celui la :
cela maffichera alors
pi la je le rajoute encore
cela maffichera alors
des lors jessaye de les supprimer
dabord une foi cela donne :
pi une otre foi
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
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
le 24/04/2005 à 11:29
LA GLOBULE
Illisible...
le 24/04/2005 à 11:57
Touille
:(
Ecrire un message
Votre message vient d'être créé avec succès.