8792 sujets

Développement web côté serveur, CMS

bonjour à tous
voilà , je rencontre un problème au niveau de la suppression d'article dans un panier que j'ai creé et qui marche très bien
voici le code :

if(!session_id())
session_start();

$quantite = $_GET['quantite'];
$article = $_GET['article'];

if(isset($_GET['ref_produit']))
{
// si un produit ets spécifié.;;
$quantite = count($panier);
for($i=0;$i<$quantite;$i++)
{
// on fait une boucle qui parcours le panier...
if($_SESSION['panier'][$i]['ref_produit'] == $_GET['ref_produit'])
{
// une fois arrivé au produit voulu, on le supprime...
array_splice($panier,$i,-1);
}
}
header("Location: http://127.0.0.1/XXX/article_supprime.php");

?>
Modifié par oceane751 (18 May 2005 - 23:38)
Bonjour oceane751 et bienvenue sur Alsacréations,

Merci de relire Aide/Règles pour afficher ton code de manière approprié. Tu disposes d'un bouton "éditer" sur ton post. Smiley cligne
Tu donne -1 comme argument de longueur à la commande array_splice alors que tu devrais donner le nombre d'entrées à effacer dans le tableau, donc 1.

Plutôt que de compter le nombre d'entrées du tableau puis de boucler dessus tu pourrais plus simplement utiliser foreach.

Parfois tu appelle ton tableau par $panier, parfois par $_SESSION['panier']... c'est pas logique.

Enfin ta boucle n'est pas optimisée, si tu trouve le bon article tu n'en sort pas (break), donc si l'article se trouvait en debut ou miliueu du tableau tu continue à parcourir la suite du tableau pour rien.

Ta boucle de supression d'article pourrait plus ressembler à ça :


$ref_produit = isset($_GET['ref_produit']) ? $_GET['ref_produit'] : null;

if($ref_produit)
{

 foreach( $_SESSION['panier'] as $i => $val )
 {
  if ($_SESSION['panier'][$i]['ref_produit']  == $ref_produit) {
   array_splice ($_SESSION['panier'], $i, 1); 
   break;
  }
 }

}

Modifié par jb_gfx (19 May 2005 - 00:23)
j'ai changé ce que tu m'as dit de changer
voilà les erreurs qui s'affichent :

Notice: Undefined index: quantite in c:\program files\easyphp1-7\www\oceanecoin\supprime.php on line 11

Notice: Undefined index: article in c:\program files\easyphp1-7\www\oceanecoin\supprime.php on line 12
// on fait une boucle qui parcours le panier... //if($data['ref_produit'] == $_GET['ref_produit']) //if($_SESSION['panier'][$i]['ref_produit'] == $_GET['ref_produit']) { //$clef = array_search($_GET['ref_produit'],$_SESSION['panier']); // une fois arrivé au produit voulu, on le supprime... //unset($_SESSION['panier'][$i]); //unset($_SESSION['panier']['$i']); //$panier = array_splice($_SESSION['panier'],$i,1); //} //} //header("Location: http://yyyy/XXXXX/article_supprime.php"); // on redirige le client vers une page qui liste les produits & les quantités... //} //$req = "DELETE FROM passer //(num_cli, num_com) // WHERE $num_cli = num_cli AND $num_com = num_com" //mysql_query($req); //$commande_id = mysql_insert_id(); //

en faite il me ressort tout mon code, avec les lignes mises en commentaires Smiley decu
Modifié par oceane751 (19 May 2005 - 16:26)
C'est la 2eme fois qu'on te demande de modifier tes posts pour afficherton code avec les balises [ code] [ /code]... Smiley ohwell

Ton message d'erreur ne correspond pas du tout au code que je t'ai donné (et qui fonctionne bien, même si il pourrait être encore plus optimisé, par exemple en utilisé array_search à la place d'une boucle), à aucun moment je n'ai utilisé les variables "quantite" et "article".
Modifié par jb_gfx (20 May 2005 - 18:45)