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

PHP & Base de données Discussion :

panier produits php et mysql [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2012
    Messages : 42
    Par défaut panier produits php et mysql
    code version 1

    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
     
     
    <?php
    if(isset($_POST['ajouter']) && !empty($_POST['id']) && !empty($_POST['qte']) && $_POST['qte']!=0)
    {
     
    	$id = $_POST['id'];
    	$qte = $_POST['qte'];
     
    	$connexion=ConnectBD();
     
    	//si le panier est vide====================================>
    	if (empty($_SESSION['panier']))
    	{
     
    		  $_SESSION['panier']=array(); 
    		  $_SESSION['panier'][$id]=$qte;
     
    	}
    	//si panier déjà rempli===================================>
    	else
    	{
    		echo "panier : ";
    		var_dump($_SESSION['panier']);
    		//suppression d'un article (on a cliqué sur un bouton supprimer) 
    		if(isset($_POST['supprimer']))
    		{ 
    		unset($_SESSION['panier'][$id]);
    		echo $qte.' produits supprimé du panier!!';
    		}
    		else
    		{
    			//Ajout d'un nouvel id et une nouvelle quantité ou modification de la quantité d'un article 
    			if(isset($_SESSION['panier'][$id])) 
    			{
    				$_SESSION['panier'][$id] += $qte;
    			} else 
    			{
    				$_SESSION['panier'][$id] = $qte;
    			}
     
    			$panier=$_SESSION['panier'];
     
    			foreach($panier as $key=>$value)
    			{
    				echo '<br />produit: '.$key.' - quantite: '.$value.'<br />';
    				$quantite=intval($value);
    			}
     
    			// on "extrait" les id du panier 
    			$id_liste=implode('","',array_keys($_SESSION['panier']));
    			$id_liste='"'.$id_liste.'"';
    			//requete sur la table avec tous les id présents dans $id_liste 
    			$sql="SELECT * FROM produits WHERE code_produit IN ($id_liste)";
    			$requete=TraiterRequete($sql);
    			while($data=mysql_fetch_assoc($requete))
    			{	
    				$prix=floatval($data['prix_produit_htva']);
    				echo'Produit: '.$data['nom_produit'].' - Quantité: '.$quantite.' - Prix à l\'unité: '.$prix.' - Prix de toutes les pièces: '.($data['prix_produit_htva']*$quantite).'<br />';
    			}
     
    		}
    	}
     
    } 
    else  
    {
    	echo "rien";
    }
    ?>
    Bonjour
    j'en suis tjrs à l'ébauche d'un panier produit

    Pour l'instant ce code (version 1) m'affiche ceci:

    produit: cia_tos - quantite: 1
    produit: san_cam - quantite: 2
    Produit: Ciabatta Toscane - Quantité: 2 - Prix à l'unité: 4.4 - Prix de toutes les pièces: 8.8
    Produit: sandwich Campagnard - Quantité: 2 - Prix à l'unité: 3.9 - Prix de toutes les pièces: 7.8

    Le problème est le suivant(entre le foreach et la fin du code) :
    1.La quantité est juste dans les 2 premières lignes mais pas dans les 2 dernières lignes
    2.je voudrais afficher la ligne 1 avec la ligne 3 et la ligne 2 avec la ligne 4 pour cela
    j'ai comme option de mettre un if à la place du while et de mettre ce if dans la boucle for each,
    mais en le faisant je crée une différence entre produits et code_produit (et non plus entre quantités).

    Je suis une x de plus calé à ce stade.

    J'aurais besoin de guides.

    Je poste les 2 versions du code...

    Merci.


    code version2:

    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
     
    <?php
     
    if(isset($_POST['ajouter']) && !empty($_POST['id']) && !empty($_POST['qte']) && $_POST['qte']!=0)
    {
     
    	//recupération des données
    	$id = $_POST['id'];
    	$qte = $_POST['qte'];
     
    	$connexion=ConnectBD();
     
    	//si le panier est vide====================================>
    	if (empty($_SESSION['panier']))
    	{ 
    		  $_SESSION['panier']=array();
    		  $_SESSION['panier'][$id]=$qte;
    	}   
     
    	//si panier déjà rempli===================================>
    	else
    	{
    		echo "panier";
    		var_dump($_SESSION['panier']);
    		//suppression d'un article (on a cliqué sur un bouton supprimer) 
    		if(isset($_POST['supprimer']))
    		{ 
    			unset($_SESSION['panier'][$id]);
    		}
    		else
    		{
    			//Ajout d'un nouvel id et une nouvelle quantité ou modification de la quantité d'un article 
    			if(isset($_SESSION['panier'][$id])) 
    			{
    				$_SESSION['panier'][$id] += $qte;
    			} else 
    			{
    				$_SESSION['panier'][$id] = $qte;
    			}
     
    			$panier=$_SESSION['panier'];
     
    			foreach($panier as $key=>$value)
    			{
    				echo '<br />produit: '.$key.' - quantite: '.$value.'<br />';
    				// on "extrait" les id du panier 
    				$id_liste=implode('","',array_keys($_SESSION['panier']));
    				$id_liste='"'.$id_liste.'"';
    				//requete sur la table avec tous les id présents dans $id_liste 
    				$sql="SELECT * FROM produits WHERE code_produit IN ($id_liste)";
    				$requete=TraiterRequete($sql);
    				if($data=mysql_fetch_array($requete))
    				{	
    					$prix=floatval($data['prix_produit_htva']);
    					$quantite=intval($value);
    					echo'Produit: '.$data['nom_produit'].' - Quantité: '.$quantite.' - Prix à l\'unité: '.$prix.' - Prix de toutes les pièces: '.($quantite*$prix).'<br />';
    				}
     
    			}
     
    		}
    	}
    } 
    else  
    {
    	echo "rien";
    }
    ?>
    affiche ceci:

    produit: cia_tos - quantite: 1
    Produit: Ciabatta Toscane - Quantité: 1 - Prix à l'unité: 4.4 - Prix de toutes les pièces: 4.4

    produit: san_cam - quantite: 2
    Produit: Ciabatta Toscane - Quantité: 2 - Prix à l'unité: 4.4 - Prix de toutes les pièces: 8.8

    nom_produit et code_produit ne correspondent pas.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2012
    Messages : 42
    Par défaut
    Bon, ben j'ai résolu le problème très simplement en modifiant la requête dans la version2, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql="SELECT * FROM produits WHERE code_produit IN ($id_liste) AND code_produit='".$key."'";
    j'ai juste ra jouté ceci : code_produit='".$key."'";

  3. #3
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Il y a quelque chose de pas logique dans ton programme (algo) à mon sens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if (isset($_POST['ajouter']) && !empty($_POST['id']) && !empty($_POST['qte']) && $_POST['qte']!=0)
    {
        ... etc ...
     
        if (isset($_POST['supprimer']))
        { 
            unset($_SESSION['panier'][$id]);
            echo $qte.' produits supprimé du panier!!';
        }
     
        ... etc ...
    }
    La toute 1ère alternative vérifie SI en POST on a comme action (ou élément) ajouter.
    Lorsqu'on entre dans cette condition (donc on ajoute) on vérifie cette fois si l'action est : supprimer ???

    Faudrait savoir, car la logique voudrait que :
    - Soit on ajoute
    - Soit on supprime
    - Soit on modifie

    Si on commence par ajouter un élément puis juste après on le supprime, ça n'a aucun sens.
    Sauf erreur.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2012
    Messages : 42
    Par défaut
    Bien vu RunCodePhp, toi t'as l'oeil...
    Effectivement la partie supprimer n'a rien à faire là et n'a aucun sens.
    À ce stade je n'ai en fait pas encore programmé la suppression et je n'ai même pas de bouton supprimer.
    Cette partie est un 'reste' de la version 0 de mon code que j'ai oublié d'éliminer avant de poster.
    Jusqu'ici ma seule logique a été d'ajouter...
    Je n'en suis malheureusement pas encore au stade modifier et supprimer.

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

Discussions similaires

  1. [SGBD] requête sql en php pour mysql
    Par Thierry8 dans le forum Requêtes
    Réponses: 1
    Dernier message: 20/09/2005, 22h31
  2. [SGBD] Probleme Avec Php et Mysql
    Par junior258 dans le forum Installation
    Réponses: 2
    Dernier message: 20/09/2005, 10h39
  3. Serv apach 2, php 5, mysql 4
    Par Bouki dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 24/06/2005, 15h32
  4. Travailler avec PHP / Apache / MySQL
    Par R3iTt0R dans le forum Linux
    Réponses: 22
    Dernier message: 24/06/2004, 11h03

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