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 :

trie d'un tableau dans un foreach


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 62
    Points : 42
    Points
    42
    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 : 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
    <?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 ....

  2. #2
    Membre averti Avatar de shell13010
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2008
    Messages : 281
    Points : 314
    Points
    314
    Par défaut
    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..

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 62
    Points : 42
    Points
    42
    Par défaut
    j'ai essayer de cette façon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    asort($_SESSION['panier'][$id_article]['vendeur']);
    Mais sa ne fonctionne pas malheureusement

  4. #4
    Membre averti Avatar de shell13010
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2008
    Messages : 281
    Points : 314
    Points
    314
    Par défaut
    J'ai pas parcouru tout ton code mais je pense qu'un simple devrait marcher...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    asort($_SESSION['panier']);

  5. #5
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 903
    Points : 6 685
    Points
    6 685
    Par défaut
    Bonjour,
    tu as un tag <?php à la ligne 62 de ton code.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 62
    Points : 42
    Points
    42
    Par défaut
    merci a vous 2 c'etait bien cela la solution voici le code modifier pour ceux qui sa pourrait aider

    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
    <?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

  7. #7
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 903
    Points : 6 685
    Points
    6 685
    Par défaut
    À 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.

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    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é...

  9. #9
    Membre averti Avatar de shell13010
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2008
    Messages : 281
    Points : 314
    Points
    314
    Par défaut
    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...

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

Discussions similaires

  1. Modifications dans tableau avec 2 foreach sans effet
    Par EIN-LESER dans le forum Langage
    Réponses: 3
    Dernier message: 23/10/2013, 15h12
  2. Comment créer un tableau dans une boucle foreach ?
    Par razily dans le forum Langage
    Réponses: 4
    Dernier message: 30/04/2012, 11h25
  3. [MySQL] Foreach et tableau dans tableau
    Par Invité(e) dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 21/03/2011, 12h59
  4. trie d'un tableau bidimentionnel d'entier dans java
    Par la_reine dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 09/05/2008, 19h29
  5. Réponses: 2
    Dernier message: 27/05/2002, 19h46

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