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 :

[Tableaux] Fonction pour remplir un tableau


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut [Tableaux] Fonction pour remplir un tableau
    Bonjour à tous,

    Je souhaiterais construire un tableau "fournisseur" avec une boucle while qui parcourt un résultat de requete sql.

    Si je teste avec des echo j'obtiens:

    le fournisseur toto a les produits 111
    le fournisseur toto a les produits 112
    le fournisseur dupont a les produits 222
    le fournisseur durand a les produits 333
    le fournisseur durand a les produits 334

    Comment construire un tableau "fournisseurs" qui ait la forme:

    durand => 333, 334
    dupont => 222
    toto => 111, 112

    Essayé array_merge, array_push...sans succès.
    Merci d'avance du coup de pouce.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    Je sais pas, une idée qui me vient comme celà serait de tester à chaque passage dans ta boucle si le fournisseur est différent du dernier fournisseur saisi. Si c'est le cas, alors tu crées un nouvelle ligne avec le nouveau fournisseur, sinon tu rajoutes les produits à la suite du fournisseur.

  3. #3
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Oui, merci de ta réponse...c'est bien mon idée aussi, mais comment insérer les données dans le tableau ? si ca clé est "durand" et qu'une valeur durand est lue, la précédente donnée de "durand" est effacée...du moins avec array_merge.

  4. #4
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    tu fais un tableau a 2 index dont le 2eme est un tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $fournisseur = array();
    $fournisseur['nom'] = "Durant";
    $fournisseur['valeurs'] = array('303','301');
    chaques fois que tu trouve le nom tu ajoute la valeur dans le tableau de ses valeurs !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    Il te faut un tableau à 2 dimensions.

    Soit un tableau ayant comme clé fournisseur et comme valeur un autre tableau produit.

    Soit un tableau ayant une valeur fournisseur et une autre valeur tableau de produit.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    RideKick à choisi la 2ème solution (que je préfère également) pour la 1ère tu ferais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $fournisseur = array();
    $fournisseur['Durant'] = array('303','301');

  7. #7
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Merci merci...

    Et donc, à chaque tour de boucle, je peux remplir mon tableau comme ça, par exmeple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    $fournisseur['nom'] =  $row['nom'];
    $fournisseur['references'] =  $row['reference'];
    $fournisseur['designation'] = $row['designation'];
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    $fournisseur['nom'] =  $row['nom'];
    $fournisseur['valeurs'] =  array($row['reference'],  $row['designation']);
    ???

    Mais ça ne vas pas: à chaque tour de boucle, le nom fournisseur est écrasé si un de ses produits se retrouve...et dans le tableau, ne reste que le dernier... Moi je voudrais "empiler" les valeurs PAR fournisseur...

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    Si j'ai bien compris pour un fournisseur tu as plusieurs produits composés d'une référence et d'une désignation.

    Tu devrait avoir quelque chose qui ressemble à ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $fournisseur['nom'] =  $row['nom'];
    $fournisseur['references'][] =  $row['reference'];
    $fournisseur['designation'][] = $row['designation'];
    Un tableau composé de nom et de 2 sous tableaux reference et désignation.

  9. #9
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    on touche au but.....

    En fait j'ai aussi plusieurs fournisseurs... comme dit en post 1...

    j'ai donc fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $fournisseur['raison_sociale'][] =  $row['raison_sociale'];
    $fournisseur['references'][] =  $row['reference'];
    $fournisseur['nom'][] = $row['nom'];
    Ca affiche bien les bonnes données pour le bon fournisseur, mais:
    Etant donné que la boucle récupère les produits référence par référence, puis le fournisseur de chacun, j'ai, par exemple:
    Durand => REF001 - produit1
    Durand => REF002 - produit 2
    Dupond => REF003 - produit 3

    ET le tableau php affiche 2 fois durand avec produit 1 et 2 au lieu de
    Durand a produit 1 et 2
    Dupond a produit 3

    Tu vois le truc ? Je voudrais "grouper" les produits par fournisseurs...et je peux pas mettre de clause GROUP BY dans ma sql sinon je "rate" des produits.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    Je me cite moi-même :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $fournisseur['nom'] =  $row['nom'];
    $fournisseur['references'][] =  $row['reference'];
    $fournisseur['designation'][] = $row['designation'];
    C'est pas bon désolé, en effet ya plus de lien entre les founisseurs et les produit.

    Ya plusieurs facon de faire, suivant tes données, tu peux mettre les données dans les clés ou dans les valeurs de la table.

    Si je reprend mon exemple précédent, tu peux faire

    En utilisant 2 tableau à 2 dimensions (la clé de la première dimension est le fournisseur, la clé de la 2ème est numérique) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $nom =  $row['nom'];
    $reference['$nom'][] =  $row['reference'];
    $désignation['$nom'][] = $row['designation'];
     
    ou directement
     
    $reference['$row['nom']'][] =  $row['reference'];
    $désignation['$row['nom']'][] = $row['designation'];
    Ou dans un seul tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $nom =  $row['nom'];
    $reference =  $row['reference'];
    $designation = $row['designation'];
    $fournisseur['$nom']['$reference'] = $designation;
     
    ou directement
     
    $fournisseur['$row['nom']']['$row['reference']'] = $row['designation'];

  11. #11
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Oui, je devrais pouvoir me débrouiller avec ça et quelques foreach imbriqués pour lire le tout !
    Merci beaucoup du coup de main.
    Bonne journée.

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

Discussions similaires

  1. [Tableaux] Fonction pour tassement de tableau
    Par afrodje dans le forum Langage
    Réponses: 2
    Dernier message: 27/06/2009, 14h05
  2. fonction pour remplir un tableau de char *
    Par saidus dans le forum C
    Réponses: 3
    Dernier message: 02/05/2009, 10h28
  3. Réponses: 3
    Dernier message: 08/08/2007, 09h47
  4. Réponses: 2
    Dernier message: 08/08/2007, 08h57
  5. Réponses: 9
    Dernier message: 17/02/2006, 11h04

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