comment supprimer un rang d'un tableau a 3 dimentions ???

comment supprimer un rang d'un tableau a 3 dimentions ??? - PHP - Programmation

Marsh Posté le 30-07-2002 à 22:56:04    

bonjour,
 
j'ai cree une variable de session $panier qui est un tableau dont chaque rang contient 3 valeurs ($reference, $taille et $quantite).  
 
Je la remplis, à chaque commande nouvelle sur le site, avec la fonction:
$panier[]= array("$reference", $taille, $quantite);
 
Mais j'ai un probleme pour SUPPRIMER un rang si l'utilisateur souhaite effacer sa commande du panier, pour un article donné (correspondant à $reference)... Je savais faire quand il y avait 2 valeurs ds le panier, avec un unset($panier[$reference] par exemple, pour supprimer la rangée correspondant. Ca ne marche pas avec 3 variables  :cry:  ...
 
Quel code utiliser pour supprimer cette rangée?
 
Merci de votre aide  :love:  

Reply

Marsh Posté le 30-07-2002 à 22:56:04   

Reply

Marsh Posté le 31-07-2002 à 00:06:22    

Est se que avec la reference d'un produit tu peut retrouver la taille est la quantité lui correspondant dans un tableau ?

Reply

Marsh Posté le 31-07-2002 à 00:10:58    

oui, bien sur ... mais pour supprimer ma rangee je fais quoi? :bounce: ???  :D

Reply

Marsh Posté le 31-07-2002 à 00:13:37    

Fais voir le code qui permet de récupérer la taille et la quantité selon une reference

Reply

Marsh Posté le 31-07-2002 à 00:34:03    

je te resume, j'espere que ca t'aidera  :jap:  
 
Sur une page.php j'affiche en boucle ds un tableau HTML les variables du tableau $panier:
  $c = count($panier);
  for ($i=0; $i<$c; $i++)
  {
 list($reference, $taille, $quantite) = $panier[$i];
echo td $reference
echo td $taille
echo td $quantite...
 
au milieu  il y a une cellule avec un lien qui pointe vers la page supprimer.php:
 
<td ><a href=\"supprimer.php?\">Supprimer ce produit</a></font>
</td>
 
 
la page supprimer.php contient ca (en resumé) :  
<?
session_start();
$panier[]= array("$ref", $taille, $quantite);
session_register("panier" );
Header("location: page.php" );
?>
 

Reply

Marsh Posté le 31-07-2002 à 00:45:18    

<a href=\"supprimer.php?[g]refs=$referece&tais=$taille&quas=$quantie[/g]\">Supprimer ce produit</a>


 
 

<?  
session_start();  
$panier[]= array("$ref", $taille, $quantite);  
unset($panier[$_GET['refs']] ,$panier[$_GET['tais']],$panier[$_GET['quas']]);
session_register("panier" );  
Header("location: page.php" );  
?>

Reply

Marsh Posté le 31-07-2002 à 11:54:35    

:cry:  :cry:  :cry:  :cry:  
 
ca efface toujours TOUT le panier...
 
je te copie le code en supprimant les a cotes, ca ne marche pas, il doit y avoir un truc evident mais je bloque...
 
1er FICHIER, "panier.php" (qui insere dans le panier de session une reference unique de produit="$ref" + la taille="$taille" + la quantité associée="$quantite",  pour chaque article commandé par le client sur le "catalogue.php", depuis un formulaire):
<?
session_start();
$panier[]= array("$ref", $taille, $quantite);
session_register("panier" );
Header("location: catalogue.php" );
?>
 
 
2eme FICHIER, "commande.php" , qui affiche le panier en boucle :
<?
Header ("expires: 01/01/70" );
session_start();
?>
<html>
<body>
<table>
<?
$c = count($panier);
for ($i=0; $i<$c; $i++)
  {
 list($ref, $taille, $quantite) = $panier[$i];
        echo ("
        <tr>
        <td>$ref</td>
        <td>$quantite</td>
        <td>$taille</td>
        <td><a href=\"supprimer.php?refs=$reference&tais=$taille&quas=$quantite\">Supprimer ce produit</a></td>
        </tr>
         " );
  }
?>
</table>
</body>
</html>  
 
3eme FICHIER (celui qui bloque  :kaola: ), "supprimer.php", qui est cense supprimer du tableau en boucle UNIQUEMENT la valeur correspondant a la reference du produit de la rangée:
<?  
session_start();  
Header ("Expires:01/01/1970" );
unset($panier[$_GET['refs']] ,$panier[$_GET['tais']],$panier[$_GET['quas']]);  
Header("location: commande.php" );  
?>  
 
Boilou... si tu peux m'aider, ce serait top, je ne sais vraiment plus quoi faire...
 
MERCI   :)  

Reply

Marsh Posté le 31-07-2002 à 19:52:46    

Essai sa
 
supprimer.php
 

<?
session_start();  
Header ("Expires:01/01/1970" );  
$c = count($panier);  
for ($i=0; $i<$c; $i++){  
list($ref, $taille, $quantite) = $panier[$i];  
if($ref==$sup){
 unset($panier[$i]);  
}
}  
?>


 

Reply

Marsh Posté le 31-07-2002 à 20:19:46    

WOUAAAAAAAAAAAAAAAKKKKKKKKKKKKKHHHHHHHHHH !!!! :eek2:  
 
 
ca marche!
 
Il faut juste rajouter à ton code l'affectation du $sup=$ref de depart, et voila le code final:
 

Citation :


<?
session_start();  
Header ("Expires:01/01/1970" );  
$c = count($panier);
$sup=$ref;  
for ($i=0; $i<$c; $i++)
{  
list($ref, $taille, $quantite) = $panier[$i];  
if($ref==$sup)
{
unset($panier[$i]);  
}
}  
Header("location: commande.php?cible=$cible" );  
?>
 


 
je t'adore, un jour je serai aussi bon que toi, c'est promis (c'st fou ce que j'apprend avec ce forum) , mais en attendant tu me tires une sale epine du pied  :bounce: et merci encore et encore et encore  :hap:

Reply

Marsh Posté le 31-07-2002 à 23:00:32    

Tu est vraiment sur que sa marche parfaitement ??
 
Car la j'ai un gros doute
 

<?  
session_start();    
Header ("Expires:01/01/1970" );    
$c = count($panier);  
[g]$sup=$ref;[/g]
for ($i=0; $i<$c; $i++)  
{    
list([g]$ref[/g], $taille, $quantite) = $panier[$i];    
if([g]$ref==$sup[/g])  
{  
unset($panier[$i]);    
}  
}    
Header("location: commande.php?cible=$cible" );    
?>


 
 :heink:

Reply

Marsh Posté le 31-07-2002 à 23:00:32   

Reply

Marsh Posté le 01-08-2002 à 00:06:04    

comment affectes tu cette variable $sup? Ca marche effectivement 1 coup sur 2...mais ca ne marche pas du tout sans ca...
 
Sinon j'ai trouve une autre solution:
 

Citation :


<?  
session_start();  
Header ("Expires:01/01/1970" );
$panier2=array();  
reset ($panier);
while (list ($key, $val) = each ($panier))
 {  
 if ($val[0]!= $ref)    
  {  
    $panier2[]=$val;  
    }  
 }  
$panier=$panier2;  
Header("location: commande.php" );  
?>


 
Mais qu'est ce qui ne va pas ds le code precedent? Juste pour apprendre et comprendre...

Reply

Marsh Posté le 01-08-2002 à 00:30:48    

Ok, je vien de comprendre pkoi il te faut la ligne $sup=$ref :
 
commande.php
 

<html>  
<body>  
<table>  
<?  
Header ("expires: 01/01/70" );  
session_start();  
$c = count($panier);  
for ($i=0; $i<$c; $i++)  
 {  
list($ref, $taille, $quantite) = $panier[$i];  
       echo ("  
       <tr>  
       <td>$ref</td>  
       <td>$quantite</td>  
       <td>$taille</td>  
       <td><a href=\"supprimer.php?[g]sup=$reference[/g]\">Supprimer ce produit</a></td>  
       </tr>  
        " );  
 }  
?>  
</table>  
</body>  
</html>


 
supprimer.php
 

<?  
session_start();    
Header ("Expires:01/01/1970" );    
$c = count($panier);  
for ($i=0; $i<$c; $i++){    
  list($ref, $taille, $quantite) = $panier[$i];    
  if($ref==[g]$_GET['sup'][/g]){  
   unset($panier[$i]);    
   }  
  }    
Header("location: commande.php?cible=$cible" );    
?>


 

Reply

Marsh Posté le 01-08-2002 à 10:19:56    


 :sol:  
alors la,ok ok ok, je comprends enfin (chi va piano va sano  :lol: )
Tu es vraiment sympa de consacrer du temps a aider les neophytes, c'est un des fleuron du net, ces zones de gratuite et d'entraide.

Reply

Marsh Posté le 01-08-2002 à 20:00:02    

Si tu fais un unset() sur le milieu du tableau ça va faire un trou alors j'ai fait cette fonction qui recréé le tableau sans trou :

Code :
  1. function array_clean($array) {
  2. $indiceTab = 0;
  3. $newArray = array();
  4. foreach ($array as $value) {
  5. $newArray[$indiceTab] = $value;
  6. $indiceTab += 1;
  7. }
  8. return $newArray;
  9. }

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed