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 22/11/2012, 22h32   #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 trie d'un tableau dans un foreach

Bonsoir a tous

J'ai un petit panier en php ou il se trouve plusieur informations qui sont stocker dans un tableau de session , je fais afficher les informations dans une boucle foreach mais il sont trie par l'id de l'enregistrement du tableaux or je voudrais que le trie ce fasse par vendeur 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
<?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>';
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'])){  <?php
 
                        // 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>";
 
?>
Imaginons qu'il y est des articles dans la session cela sortirais de cette fason

idarticle=1 article vendu par tom
idarticle=2 article vendu par albert
idarticle=3 article vendu par tom
idarticle=4 article vendu par tom

Mais je voudrais que cela sorte comme sa trier par ordre alphabetique et type de pseudo de vendeur

idarticle=2 article vendu par albert
idarticle=1 article vendu par tom
idarticle=3 article vendu par tom
idarticle=4 article vendu par tom

J'ai chercher longtemps et je n'est jamais trouve quelque chose de correct ....
thomix68 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2012, 00h59   #2
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
C'est la première fois que je vois des accents dans des variables

Sinon tu peux utiliser asort() sur ta variable correspondante pour afficher dans l'ordre croissant..
__________________
"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 23/11/2012, 01h44   #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
j'ai essayer de cette façon

Code :
asort($_SESSION['panier'][$id_article]['vendeur']);
Mais sa ne fonctionne pas malheureusement
thomix68 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2012, 02h18   #4
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
J'ai pas parcouru tout ton code mais je pense qu'un simple devrait marcher...

Code :
asort($_SESSION['panier']);
__________________
"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 23/11/2012, 03h42   #5
CosmoKnacki
Membre habitué
 
Avatar de CosmoKnacki
 
Homme
Inscription : mars 2009
Messages : 106
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2009
Messages : 106
Points : 130
Points : 130
Bonjour,
tu as un tag <?php à la ligne 62 de ton code.
CosmoKnacki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2012, 04h59   #6
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
merci a vous 2 c'etait bien cela la solution voici le code modifier pour ceux qui sa pourrait aider

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'])){  <?php
 
                        // 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>";
 
?>
Merci a vous
thomix68 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2012, 05h55   #7
CosmoKnacki
Membre habitué
 
Avatar de CosmoKnacki
 
Homme
Inscription : mars 2009
Messages : 106
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2009
Messages : 106
Points : 130
Points : 130
À la bonne heure!

Mais attention, on peut utiliser asort dans ce cas que dans la mesure où 'vendeur' se trouve être la clef du premier item des tableaux $_SESSION['panier'][$id_article] (celui par lequel la comparaison commence).
Dans le cas contraire (ou pour faire un tri sur l'ordre alphabétique des noms d'articles) tu devras utiliser uasort qui te permet de personnaliser le critère de comparaison.
CosmoKnacki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2012, 07h55   #8
Bovino
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 18 555
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 42
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 18 555
Points : 66 527
Points : 66 527
Citation:
Envoyé par shell13010
C'est la première fois que je vois des accents dans des variables
C'est assez maladroit mais néanmoins autorisé...
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2012, 12h55   #9
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
Merci pour cette précision, j'avais lu qu'il étais interdit et après relecture il savère que c'est juste déconseiller...
__________________
"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 Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 10h26.


 
 
 
 
Partenaires

Hébergement Web