IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Bug dans un panier virtuel


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 88
    Par défaut Bug dans un panier virtuel
    Bonjour,

    J'ai crée un panier virtuel, mais j'ai quelques bugs dont je n'arrive pas à corriger.

    Si j'ajoute un produit x, puis un produit y et ensuite je remet le produit x, une troisième ligne se crée, alors que je voudrais que les quantité s'accumulent pour le même produit.

    Ci-joint le code ci-dessous

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
     
    <?php
     
    /* INIT */
    $i=0;
     
    /* Je verifie si la session panier existe deja. */
    if (!isset($_SESSION["panier"]))
    	{
    	/* La session PANIER n'existe pas */
     
    	/* Initialisation du panier */
    	$_SESSION['panier'] = array(); 
     
    	/* Subdivision du panier */
    	$_SESSION['panier']['id_article'] = array();
    	$_SESSION['panier']['qte'] = array();
    	}
    else
    	{
    	}
     
    /* Je recupere les infos de la page PRODUIT */
    $id = $_POST['produit'];
    $qte = $_POST['quantite'];
     
    /* Je commence par récupérer le sassion PANIER */
    $moncaddie=$_SESSION["panier"]['id_article'];
     
    /* je compte le nombre de ligne dans mon panier */
    $t = count($_SESSION['panier']['id_article']);
     
    /* 	Contrôle : Est ce que le nombre d'article dans mon panier n'est pas égal à 0 */
    if($t!=0)
    	{
    	while($i<$t)
    		{
    		$id_produit = $_SESSION["panier"]["id_article"][$i];
     
    		/* Je vérifie que le produit que je veux inserer n'existe pas dans le panier */
    		if ($id_produit == $id)
    			{
    			/* Le produit existe déjà, il faut que j'ajoute la nouvelle quantite à la quantité déjà rentré. */
    			$quantite = $_SESSION["panier"]["qte"][$i];
    			$new_qte = $quantite+$qte;
     
    			/* Je contrôle le minimum de commande parametre pour ce produit dans la base de donnée */
    			$minimum = extraire ("minimum_commande","produit","id",$id);
    			if ($new_qte < $minimum)
    				{
    				$new_qte = $minimum;
    				}
    			else
    				{
    				$new_qte = $new_qte;
    				}
     
    			$_SESSION["panier"]["qte"][$i] = $new_qte;
     
    			/* Aller à voir_panier */
    			header('Location:index.php?voir_panier');	
    			}
    		else
    			{
    			/* Le produit n'existe pas, je rentre simplement le produit */
     
    			/* Je contrôle le minimum de commande parametre pour ce produit dans la base de donnée */
    			$minimum = extraire ("minimum_commande","produit","id",$id);
    			if ($qte < $minimum)
    				{
    				$quantite = $minimum;
    				}
    			else
    				{
    				$quantite = $_POST["quantite"];
    				}
     
    			/* Ici, on sait que le panier existe, donc on ajoute l'article dedans. */
    			array_push($_SESSION['panier']['id_article'],$id);
    			array_push($_SESSION['panier']['qte'],$quantite);
     
    			/* Aller à voir_panier */
    			header('Location:index.php?voir_panier');			
    			}
    		$i++;
    		}	
    	}
    else
    	{
    	/* Panier vide, je rentre simplement le produit */
     
    	/* Je contrôle le minimum de commande parametre pour ce produit dans la base de donnée */
    	$minimum = extraire ("minimum_commande","produit","id",$id);
    	if ($qte < $minimum)
    		{
    		$quantite = $minimum;
    		}
    	else
    		{
    		$quantite = $_POST["quantite"];
    		}
     
    	/* Ici, on sait que le panier existe, donc on ajoute l'article dedans. */
    	array_push($_SESSION['panier']['id_article'],$id);
    	array_push($_SESSION['panier']['qte'],$quantite);
     
    	/* Aller à voir_panier */
    	header('Location:index.php?voir_panier');		
    	}
     
    /* Ref */
    $title = 'Produit ajouté au catalogue';
    $title_page = 'Produit ajouté au catalogue';
    $description = 'Produit ajouté au catalogue';
     
    ?>
    Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Abandonne ton $i et organise ton tableau avec l'id comme reference : $_SESSION["panier"]["id_article"]["quantité"].

    Au passage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $t = count($_SESSION['panier']['id_article']);
     
    /* 	Contrôle : Est ce que le nombre d'article dans mon panier n'est pas égal à 0 */
    if($t!=0)
    	{
    	while($i<$t)
    se remplace par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach ($_SESSION['panier']['id_article'] as $valeurs) {
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 88
    Par défaut
    Ok merci, je vais réorganiser tout ça.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Php panier virtuel avec stockage de la quantité dans une table temporaire
    Par otmaneha dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/08/2011, 12h06
  2. Réponses: 12
    Dernier message: 17/06/2008, 11h49
  3. Bug dans les expressions régulières ?
    Par SergioF dans le forum Linux
    Réponses: 8
    Dernier message: 12/05/2004, 16h14
  4. [PROPERTIES] Bug dans java.util.Properties ?
    Par mathieu dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 28/04/2004, 16h11
  5. bug dans une base Access
    Par bizouard dans le forum Access
    Réponses: 5
    Dernier message: 29/12/2003, 13h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo