suppression dans un array (tableau) [modifié] - PHP - Programmation
MarshPosté le 26-04-2009 à 21:28:26
salut tout le monde,
apparement ce probleme ne vous dis rien ... donc j'édite.
je me suis rapproché de la solution, j'arrive a peu pres a faire ce que je veux mais j'ai un probleme en ce qui concerne les index dans mon tableau.
exemple : j'ai 5 articles dans mon panier, numérotés de 0 à 4 car c'est un tableau ... je supprime le dernier de la liste (le 5eme donc d'indice 4), le deuxieme article (d'indice 1) est supprimé ensuite je supprime le troisieme (indice 2), c'est encore le deuxieme article (d'indice 1) qui est supprimé si vous avez suivi, il doit me rester 3 articles ... je supprime donc le premier (indice 0), là c'est bien le premier qui est supprimé maintenant je supprime le deuxieme (indice 1, le dernier de la liste), mais là c'est le premier article (d'indice 0) qui est supprimé enfin, le seul restant se supprime normalement
je vous met le code pour voir quel est le defaut :
// ------- EFFACER UN ARTICLE DU PANIER -------- \\
// si le lien "supprimer" est cliqué if ($_GET['retirer'] == "RETIRER" ) {
// si le panier existe et qu'il contient un nombre de produits superieur ou egal à 1 if(isset($_SESSION['panier']) && count($_SESSION['panier']) >= 1) {
// pour $i de 0 à inferieur ou egal au nombre total de produits dans le panier, // on ajoute 1 a $i apres chaque ligne for ($i=0; $i <= count($_SESSION['panier']); $i++) {
// si la clé contenue dans $i existe dans le tableau panier if(array_key_exists($i, $_SESSION['panier'])) {
// si la variable index est egale au code produit d'indice $i if($_GET['index'] == $_SESSION['panier'][$i][0]) { $tab = array_splice($_SESSION['panier'], $_SESSION['panier'][$_GET['index']], 1); array_merge_recursive($tab,$_SESSION['panier']); //$_SESSION['n']=0; array_values($_SESSION['panier']); } } } } } // si le panier existe et qu'il est vide if(isset($_SESSION['panier']) && empty($_SESSION['panier'])) { unset($_SESSION['panier']); unset($_SESSION['n']); }
voila merci de m'avoir lu et merci d'avance pour votre aide
Message édité par maxlandx le 28-04-2009 à 13:40:28
Marsh Posté le 26-04-2009 à 21:28:26
salut tout le monde,
apparement ce probleme ne vous dis rien ... donc j'édite.
je me suis rapproché de la solution, j'arrive a peu pres a faire ce que je veux
mais j'ai un probleme en ce qui concerne les index dans mon tableau.
exemple :
j'ai 5 articles dans mon panier, numérotés de 0 à 4 car c'est un tableau ...
je supprime le dernier de la liste (le 5eme donc d'indice 4), le deuxieme article (d'indice 1) est supprimé
ensuite je supprime le troisieme (indice 2), c'est encore le deuxieme article (d'indice 1) qui est supprimé
si vous avez suivi, il doit me rester 3 articles ...
je supprime donc le premier (indice 0), là c'est bien le premier qui est supprimé
maintenant je supprime le deuxieme (indice 1, le dernier de la liste), mais là c'est le premier article (d'indice 0) qui est supprimé
enfin, le seul restant se supprime normalement
je vous met le code pour voir quel est le defaut :
// ------- EFFACER UN ARTICLE DU PANIER -------- \\
// si le lien "supprimer" est cliqué
if ($_GET['retirer'] == "RETIRER" )
{
// si le panier existe et qu'il contient un nombre de produits superieur ou egal à 1
if(isset($_SESSION['panier']) && count($_SESSION['panier']) >= 1)
{
// pour $i de 0 à inferieur ou egal au nombre total de produits dans le panier,
// on ajoute 1 a $i apres chaque ligne
for ($i=0; $i <= count($_SESSION['panier']); $i++)
{
// si la clé contenue dans $i existe dans le tableau panier
if(array_key_exists($i, $_SESSION['panier']))
{
// si la variable index est egale au code produit d'indice $i
if($_GET['index'] == $_SESSION['panier'][$i][0])
{
$tab = array_splice($_SESSION['panier'], $_SESSION['panier'][$_GET['index']], 1);
array_merge_recursive($tab,$_SESSION['panier']);
//$_SESSION['n']=0;
array_values($_SESSION['panier']);
}
}
}
}
}
// si le panier existe et qu'il est vide
if(isset($_SESSION['panier']) && empty($_SESSION['panier']))
{
unset($_SESSION['panier']);
unset($_SESSION['n']);
}
voila merci de m'avoir lu et merci d'avance pour votre aide
Message édité par maxlandx le 28-04-2009 à 13:40:28