Précédent   Forum du club des développeurs et IT Pro > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 23/11/2012, 05h13   #1
thomix68
Invité régulier
 
gdgfs thomas
Inscription : juillet 2010
Messages : 34
Détails du profil
Informations personnelles :
Nom : gdgfs thomas

Informations forums :
Inscription : juillet 2010
Messages : 34
Points : 7
Points : 7
Par défaut calcul boucle foreach

Voila je cree un panier dont voici le code

Code :
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
<?php
// Création du panier si n'existe pas dans la session de l'utilisateur
session_start();
include 'Connexionbd.php';
$vendeurpan=$_GET['vend'];
 
if (! isset($_SESSION['panier']))  $_SESSION['panier'] = array();
 
// Voici les données externes utilisées par le panier
$id_article   = isset($_GET['id_article'])   ? $_GET['id_article']   : null;
$nom_article  = isset($_GET['nom_article'])  ? $_GET['nom_article']  : null;
$prix_article = isset($_GET['prix_article']) ? $_GET['prix_article'] : '?';
$qte_article  = isset($_GET['qte_article'])  ? $_GET['qte_article']  : 1;
 
//fonction pour vider
if ($_GET['action'] == "vider") { 
 
$_SESSION['panier'] = array();
}
 
//fonction pour ajouter 1 a la quantite d'un article deja cree
 
 
if ($_GET['action'] == "ajouterqplus") { 
$ttc=$_SESSION['panier'][$id_article];
if($ttc != ""){$_SESSION['panier'][$id_article]['qte'] = $_SESSION['panier'][$id_article]['qte']+1;}
if($ttc == ""){
	        $_SESSION['panier'][$id_article]['vendeur']  = $vendeurpan;
	        $_SESSION['panier'][$id_article]['nom']  = $nom_article;
        $_SESSION['panier'][$id_article]['prix'] = $prix_article;
        $_SESSION['panier'][$id_article]['qte']  = 1;
 
	}}
 
 
 
// Voici les traitements du panier
if ($id_article == null) {
//echo 'Veuillez sélectionner un article pour le mettre dans le panier!'; // Message si pas d'acticle sélectionné
}
else
if (isset($_GET['ajouter'])){ // Ajouter un nouvel article
	        $_SESSION['panier'][$id_article]['vendeur']  = $vendeurpan;
        $_SESSION['panier'][$id_article]['nom']  = $nom_article;
        $_SESSION['panier'][$id_article]['prix'] = $prix_article;
        $_SESSION['panier'][$id_article]['qte']  = $qte_article;
}
else if ($_GET['action']=="modifier") { 
 
$_SESSION['panier'][$id_article]['qte'] = $qte_article;}
else if ($_GET['action']=="supprimer"){  unset($_SESSION['panier'][$id_article]); }// Supprimer un article du panier 
 
 
 
// Voici l'affichage du panier
echo '<h2>Contenu de votre panier</h2><ul>';
asort($_SESSION['panier']); 
if (isset($_SESSION['panier']) && count($_SESSION['panier'])>0){
        $total_panier = 0;
 
        foreach($_SESSION['panier'] as $id_article=>$article_acheté){
               echo"$article_acheté[nom] vendu par $article_acheté[vendeur]";
                if (isset($article_acheté['nom']) && isset($article_acheté['prix']) && isset($article_acheté['qte'])){ 
 
                        // Calcule le prix total du panier
                        $total_panier += $article_acheté['prix'] * $article_acheté['qte'];
                }
        }
        echo '<hr><h3>Total: ', number_format($total_panier, 2, ',', ' '), ' € '; 
		echo"+ Frais de port $totalport €";
		// Affiche le total du panier
}
else { echo 'Votre panier est vide'; } // Message si le panier est vide
echo "</ul>";
 
?>
ce code m'affiche les donnes de la façon suivante :

produit prix vendeur

nomproduit2 prix thomix
nomproduit3 prix thomix
nomproduit5 prix isidor
nomproduit1 prix xavier

je voulais savoir comment faire pour que dans la boucle foreach a la fin d'avoir lister chaque vendeur calculer les prix de tout les article de chaque vendeur

exemple :

produit prix vendeur

nomproduit2 3 thomix
nomproduit3 5 thomix

on calcule combien thomix vend dans ce panier et on l'affiche

nomproduit5 1 isidor

on calcule combien isidor vend dans ce panier et on l'affiche

nomproduit1 9 xavier

on calcule combien xavier vend dans ce panier et on l'affiche

c'est pas faute d'avoir essayer croyez moi vous avez une petite piste ?
thomix68 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2012, 10h41   #2
Théocrite
Membre confirmé
 
Homme Thomas Dutrion
Développeur Web
Inscription : février 2009
Messages : 158
Détails du profil
Informations personnelles :
Nom : Homme Thomas Dutrion
Âge : 24
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2009
Messages : 158
Points : 286
Points : 286
Sans revoir tout ton code, mais c'est pas forcément la solution la plus propre...:

Ligne 61 dans ton code ci-dessus, tu as un foreach. Juste avant ce foreach, tu peux déclarer une string et un int :
Code :
1
2
$nomDernierVendeur = null; 
$nbVenteDernierVendeur = 0;
Avant l'affichage, tu dois faire un test pour savoir si c'est le même vendeur qu'avant, afficher si différent et que nbVente est différent de 0....

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
$nomDernierVendeur = null;
$nbVenteDernierVendeur = 0;
foreach($_SESSION['panier'] as $id_article=>$article_acheté){
    if($nomDernierVendeur !== $article_acheté[vendeur]) {
        if($nbVenteDernierVendeur !== 0) {
            echo "$nomDernierVendeur a vendu $nbVenteDernierVendeur produits".
        }
        $nomDernierVendeur $article_acheté[vendeur];
        $nbVenteDernierVendeur = 0;
    } else {
        $nbVenteDernierVendeur++;
    }
    echo"$article_acheté[nom] vendu par $article_acheté[vendeur]";
    if (isset($article_acheté['nom']) && isset($article_acheté['prix']) && isset($article_acheté['qte'])){ 
                        // Calcule le prix total du panier
                        $total_panier += $article_acheté['prix'] * $article_acheté['qte'];
    }
}
echo '<hr><h3>Total: ', number_format($total_panier, 2, ',', ' '), ' € '; 
		echo"+ Frais de port $totalport €";
		// Affiche le total du panier
Théocrite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2012, 14h16   #3
thomix68
Invité régulier
 
gdgfs thomas
Inscription : juillet 2010
Messages : 34
Détails du profil
Informations personnelles :
Nom : gdgfs thomas

Informations forums :
Inscription : juillet 2010
Messages : 34
Points : 7
Points : 7
bonjour,

j'ai essayer la technique donne ci-dessus mais rien ne s'affiche il ne m'indique jamais le echo dans le if

j'ai ajouter un echo $nomDernierVendeur a vendu $nbVenteDernierVendeur produits apres
Code :
1
2
3
4
5
6
7
8
9
			    if($nomDernierVendeur !== $article_acheté[vendeur]) {
        if($nbVenteDernierVendeur !== 0) {
            echo "$nomDernierVendeur a vendu $nbVenteDernierVendeur produits";
        }
        $nomDernierVendeur=$article_acheté[vendeur];
        $nbVenteDernierVendeur = 0;
    } else {
        $nbVenteDernierVendeur++;
    }
pour voir les variable si elle si vide ou pas

et il m'affiche

a vendu 0 produits

nomproduit1 prix1 tom

tom a vendu 0 produits

nomproduit2 prix2 albert

albert a vendu 0 produits

nomproduit3 prix3 reno

sur le dernier il n'y a carrement rien je ne comprend pas mais vraiment pas d'ou vien le probleme
thomix68 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2012, 16h38   #4
Théocrite
Membre confirmé
 
Homme Thomas Dutrion
Développeur Web
Inscription : février 2009
Messages : 158
Détails du profil
Informations personnelles :
Nom : Homme Thomas Dutrion
Âge : 24
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2009
Messages : 158
Points : 286
Points : 286
Déjà, on dirait que l'incrémentation ne se fait pas, ce qui du coup ne permet pas de rentrer dans les conditions d'affichage.

En fait je t'ai répondu assez à l'arrache, donc il faut que tu vérifies les conditions et en gros l'algo du truc quoi, mais conceptuellement ça s'approche de ça !
Théocrite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2012, 23h39   #5
shell13010
Membre confirmé
 
Avatar de shell13010
 
Homme kyle debasa
Étudiant
Inscription : mars 2008
Messages : 266
Détails du profil
Informations personnelles :
Nom : Homme kyle debasa
Âge : 28
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant
Secteur : Distribution

Informations forums :
Inscription : mars 2008
Messages : 266
Points : 247
Points : 247
Je suis pas sure d'avoir saisie ta question, en faite tu voudrais juste afficher le total c'est bien sa?

Les quelque erreur que j'ai aperçu :

Code :
Ligne 9: Un petit oubli?


Code :
Ligne 10: tu remets $nbVenteDernierVendeur à 0.
sur se code
__________________
"Quelle prétention de prétendre que l'informatique est récente: Adam et Eve avaient déjà un Apple!"
shell13010 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2012, 02h36   #6
Théocrite
Membre confirmé
 
Homme Thomas Dutrion
Développeur Web
Inscription : février 2009
Messages : 158
Détails du profil
Informations personnelles :
Nom : Homme Thomas Dutrion
Âge : 24
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2009
Messages : 158
Points : 286
Points : 286
Surtout dans le cas d'un $nbVenteDernierVendeur++; il faut quand même assigner le nom du vendeur courant au dernier vendeur...

Et bien entendu la première remarque de shell13010 (pour la seconde, c'est normal, on va changer de vendeur, donc on lui mets son compteur à zéro !).
Théocrite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2012, 11h39   #7
shell13010
Membre confirmé
 
Avatar de shell13010
 
Homme kyle debasa
Étudiant
Inscription : mars 2008
Messages : 266
Détails du profil
Informations personnelles :
Nom : Homme kyle debasa
Âge : 28
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant
Secteur : Distribution

Informations forums :
Inscription : mars 2008
Messages : 266
Points : 247
Points : 247
@Théocrite: Exact,au tant pour moi. petite maladresse
__________________
"Quelle prétention de prétendre que l'informatique est récente: Adam et Eve avaient déjà un Apple!"
shell13010 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 23h13.


 
 
 
 
Partenaires

Hébergement Web