Caddie : supprimer un objet d'une liste

cs_lig Messages postés 1 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 26 mai 2004 - 26 mai 2004 à 14:12
phpwankenobi Messages postés 152 Date d'inscription jeudi 10 avril 2003 Statut Membre Dernière intervention 18 novembre 2004 - 27 mai 2004 à 07:14
Salut!!!

Je soumet mon probléme à la communauté codes-sources...

Explication :
C'est un site de vente en ligne. le visiteur sélectionne un album sur une page catalogue. il est ajouté dans le caddie. Sur cette page caddie il peu modifier la quantité qu'il souhaite acheter et surtout supprimer un album.

Le caddie est géré par une classe :

J'ai une méthode ci dessous pour ajouter un album à ma liste : (en fait elle est + compliqué mais je garde l'essentiel :)
function addalbum()
{
$this->listealbum[] = new album(val1, val2, ...)
$this->nbtotalalbum++;
}

.. et une autre méthode pour supprimer :
function delalbum($id)
{
switch($id)
{
case(0): array_shift($this->listealbum);
break;
case($this->nbtotalalbum):array_pop($this->listealbum);
break;

//ces deux cas fonctionne!!!
Probléme : le prochain cas ne fonctionne pas.: il ne renvoie pas de message d'erreur mais c lorsque je veu réafficher ma liste aprés une suppression que ça foire ..

default:
for($i=0; $i<=$this->nbtotalalbum-1; $i++)
{
$maliste = array_slice($this->listealbum, $id+1, $this->nbtotalalbum);
array_splice($this->listealbum, $id, $id);
$this->listealbum = array_merge($this->listealbum, $maliste);
}
}
$this->nbtotalalbum--;
}

Je cherche à supprimer un album de ma liste.
Lorsque je supprime le premier album ou le dernier album du caddie ca fonctionne ..
Mais lorsque je prend par exemple l'album en 3eme position de ma liste, il ne supprime pas le bon ...

J'ai essayé de supprimer un album de ma liste avec seulement la fonction array_splice mais lorsque je veu afficher tout mes éléments de ma liste jusquà la variable nbtotalalbum, il n'affiche plus aprés l'élément précedemmant supprimé.
J'ai l'impression que cette fonction laisse un vide dans mon tableau, peut être faudrait il décaler alors tout les albums.

Si quelqu'un peut éclairer ma lanterne, je sui toute ouï ... Merci d'avance!!
A voir également:

1 réponse

phpwankenobi Messages postés 152 Date d'inscription jeudi 10 avril 2003 Statut Membre Dernière intervention 18 novembre 2004
27 mai 2004 à 07:14
Salut,

Je regarde rapidos, mais il me semble que tu compliques :
moi j'essaierai ceci :


$tbsupp = array();
(....)

default:
$tbsupp =array_splice($this->listealbum,$id,1);


Petit code de test et verif ci-dessous :

<?php
$tbsupp = array();

$input = array ("album1", "album2", "album3", "album4");
$tbsupp = array_splice ($input, 2,1);
// Suppression ("album3")

// Dump tableau d'origine
print_r($input);
// Dump tableau elements supprimés
print_r($tbsupp);

?> 


A+
0
Rejoignez-nous