Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1925 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Trier un array et catégoriser les infos (ou requêtes multiples ?)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Trier un array et catégoriser les infos (ou requêtes multiples ?)

n°2007501
vanquishV1​2
se coucher tard nuit
Posté le 06-07-2010 à 17:35:55  profilanswer
 

Bonjour,
 
Je tire des données d'une base de données, qui contient une ligne par produit : pomme, fraise, poivron, pomme de terre, chaque produit ayant ses caractéristiques.
 
Après la requête, j'ai un array $row qui contient :
1 => Pomme
2 => Rouge
3 => Sucrée
4 => Acide
5 => Fruit
 
1 => Fraise
2 => Rouge
3 => Sucrée
4 => Doux
5 => Fruit
 
1 => Poivron
2 => Rouge
3 => Neutre
4 => Doux
5 => Légume
 
1 => Pomme de terre
2 => Jaune
3 => Neutre
4 => Doux
5 => Féculent
 
Et je voudrais afficher les résultats par critère "5" donc faire :
Tous les fruits :
- Fraise
- Pomme
 
Tous les légumes :
- Poivron
 
Tous les féculents :
- Pomme de terre
 
Que vaut il mieux faire ? Multiplier les requêtes SQL ou trier le tableau PHP ?
Comment faire ?
 
Merci à vous !

mood
Publicité
Posté le 06-07-2010 à 17:35:55  profilanswer
 

n°2007512
Pascal le ​nain
Posté le 06-07-2010 à 18:00:23  profilanswer
 

Salut,
 
tout d'abord, utilise mysql_fetch_assoc plutot que mysql_fetch_rows.
Tu auras le vrai nom des colonnes plutot que des nombres.
 
Pour les tris, il suffit de modifier ta requete mysql. exemple :
 

SELECT nom,couleur,gout,type
FROM produit
WHERE type = "féculent"


 
 ;)

n°2007514
vanquishV1​2
se coucher tard nuit
Posté le 06-07-2010 à 18:03:13  profilanswer
 

Ok donc multiplier les requêtes pour ta part ?
Je voulais éviter de faire une requête par type de produit en fait, je me dit que trier un array doit être plus rapide non ?

n°2007619
Pascal le ​nain
Posté le 07-07-2010 à 00:20:04  profilanswer
 

Sinon tu fais :


SELECT nom,couleur,gout,type
FROM produit
ORDER BY type


 
Ainsi, le tableau retourné sera déjà trié par type par mysql
 
Ensuite tu te débrouilles comme tu veux avec tes données, en fonction de la mise en page que tu veux leur donner...
 
Mais moi je ferai plusieurs requêtes séparées. Ce n'est pas significativement plus lent, tu peux choisir l'ordre d'affichage des différents types, et tu gagnes énormément en clarté (surtout si le nombre de types est amené à changer)


Message édité par Pascal le nain le 07-07-2010 à 00:21:33
n°2007643
vanquishV1​2
se coucher tard nuit
Posté le 07-07-2010 à 09:01:00  profilanswer
 

Merci mais la requête comporte un DISTINCT et une triple jointure et se fait sur 2000 lignes donc c'est du genre requête "pas mal".
Faire 5 requetes de ce type sur la même page me parait chaud.
 
Personne n'a d'idée pour afficher par critère mon array ?

n°2007685
Dj YeLL
$question = $to_be || !$to_be;
Posté le 07-07-2010 à 11:21:14  profilanswer
 

Code :
  1. <?php
  2. $ingredients = array();
  3. foreach($row as $ingredient)
  4. {
  5.     $ingredients[$ingredient[5]][] = $ingredient;
  6. }
  7. ?>



Message édité par Dj YeLL le 07-07-2010 à 11:22:27

---------------
Gamertag: CoteBlack YeLL
n°2007836
vanquishV1​2
se coucher tard nuit
Posté le 07-07-2010 à 17:56:51  profilanswer
 

Merci mais je n'ai pas réussi avec cette méthode :(
Ca me fait bader de copier coller ma grosse requête 5 fois à la suite, surtout si un jour je dois la modifier, je devrais modifier les 5...

n°2007838
Dj YeLL
$question = $to_be || !$to_be;
Posté le 07-07-2010 à 17:59:12  profilanswer
 

?
 
Si tu as les datas telles que tu les présentes dans le premier post, je ne comprends pas pourquoi ça ne marcherait pas.


---------------
Gamertag: CoteBlack YeLL
n°2007844
vanquishV1​2
se coucher tard nuit
Posté le 07-07-2010 à 18:10:39  profilanswer
 

Je t'assure, ça m'affiche n'importe quoi.

 

Pour contrôler je fais un print_r($ingredients); on est bien ok ?


Message édité par vanquishV12 le 07-07-2010 à 18:10:50
n°2007847
vanquishV1​2
se coucher tard nuit
Posté le 07-07-2010 à 18:13:43  profilanswer
 

La chose la plus amusante est que si je remplace le 5 par n'importe quel autre chiffre, ça renvoie toujours la même chose o_Ö

mood
Publicité
Posté le 07-07-2010 à 18:13:43  profilanswer
 

n°2007849
stealth35
Posté le 07-07-2010 à 18:16:01  profilanswer
 

avec PDO tu peux faire un FETCH_GROUP, ca te créer ton tableau automatiquement et sans faire de traitement derrière

n°2011158
ryumikage
Posté le 22-07-2010 à 20:42:50  profilanswer
 

Tu peux faire ta requête avec un group by par type et ensuite faire un tri dans ton while quand tu affiche tes données.


Message édité par ryumikage le 22-07-2010 à 21:03:40

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Trier un array et catégoriser les infos (ou requêtes multiples ?)

 

Sujets relatifs
trier une list, comparator[OpenGl] Choisir la bonne méthode d'affichage (Vertex Array ?)
[SQL]Factorisation de sous-requêtesSite hacké : comment avoir des infos ?
comment verifier existence valeur dans array sans passer par foreach?Trier un fichier
requetesarray avec une condition
[shell] récupération infos dans .txt et écriture dans un autre fichierRécupérer des infos renvoyées par un serveur FTP
Plus de sujets relatifs à : Trier un array et catégoriser les infos (ou requêtes multiples ?)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR