salut tout le monde,

je programme un panier en php et je bloque sur la fonction de suppression d'un article.

j'ajoute un produit a mon panier, il s'affiche grace a une boucle for dans une <table>,
mais quand je veux supprimer un des articles, il s'efface bien (nom et prix) mais la ligne
dans laquelle etait inscrit l'article reste (vide) alors qu'elle devrait disparaitre.

mon compteur d'articles continue de garder le nombre d'articles meme si ils sont effacés ...

exemple: si j'ajoute 2 articles dans mon panier et que j'efface le premier,
le deuxieme prend la place du premier (dans la <table> ) et laisse son ancienne ligne (la deuxieme
donc) vide, mais elle n'est pas totalement supprimée et la ligne ou je compte les articles reste sur 2.

en bref je n'arrive pas a manier les tableaux du type :

$_SESSION['panier'][$n]=array ($codeprod,$nomprod,$prixprod)

ce que je voudrais donc, ce serait de pouvoir supprimer l'index $n correspondant a l'article supprimé puis
de remonter les autres index pour combler le vide

la fonction unset() marche nickel pour vider le panier completement,
mais je n'arrive pas a l'utiliser pour les index.

j'ai essayé la fonction array_splice() mais elle fonctionne comme decrit plus haut.

je met mon code a la suite au cas où (ce code fonctionne a moitié donc il y a surement des erreurs) :

ajout-panier.php (qui cree un panier si ce n'est pas deja fait, puis ajoute l'article)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$codeprod = $_POST['codeprod']; 
$nomprod = $_POST['nomprod']; 
$prixprod = $_POST['prixprod']; 
 
if(isset($_SESSION['n']))  
 $_SESSION['n']++; 
else  
{ 
  $_SESSION['n']=0; 
  $_SESSION['panier'][]=array(); 
} 
 
$n=$_SESSION['n'];// n sera l'indice du produit dans le tableau 
$_SESSION['panier'][$n]=array ($codeprod,$nomprod,$prixprod);
// pour l'instant pas de probleme

---------------------------------------------------------

panier.php

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
if ($_GET['retirer'] == "RETIRER" ) // le probleme est ici 
{     
 
 array_splice($_SESSION['panier'], $_SESSION['n']); 
 
 unset($_GET['index']); 
 
} 
 
if ($_GET['vider'] == "VIDER" ) // ici ca marche nickel 
{ 
 unset($_SESSION['panier']); 
 $_SESSION['n']=0; 
} 
 
if(isset($_SESSION['n'])) 
{ 
$n=$_SESSION['n']; 
 
// sur cette ligne, le $n n'est pas actualisé, donc le nombres d'articles n'est pas mis a jour lors d'une suppression ... 
echo '<td align=center><font size="5"><b>Articles dans le panier : '.$n.'</b></font></td></b>  <td><a href="panier.php?vider=VIDER">vider</a></td></tr>'; 
 
for ($i=0; $i<$n; $i++) 
{ 
$i=$i+1; 
echo ' <tr> 
<td align=center><font size="5">'.$_SESSION['panier'][$i][1].'</font></td>  
<td align=right><font size="5">'.$_SESSION['panier'][$i][2].' &euro;</font></td> 
<td align=center><font size="5">'.$_SESSION['panier'][$i][0].'</font></td>  
<td><a href="panier.php?retirer=RETIRER&id_prod='.$_SESSION['panier'][$i][0].'&index='.$n.'">supprimer</a></td></tr>';  
$i=$i-1; 
} 
}
voila merci de m'avoir lu et merci d'avance pour votre aide