Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/07/2008, 12h17   #1
Invité de passage
 
Inscription : juillet 2008
Messages : 16
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 16
Points : 3
Points : 3
Par défaut Lister catégories et leur contenu

Bonjour,
Je possède 2 tables dans ma base :
Category
- cat_id
- cat_label

Function
- fct_id
- cat_id
- fct_label

Comme vous le voyez, une fonction appartient à une catégorie et une catégorie possède plusieurs fonction.
J'aimerais afficher un listing des fonctions par catégorie de façon a obtenir un affichage comme suit :

Catégorie 1 :
* fonction 1
Catégorie 2 :
* fonction 2
* fonction 3

Sans afficher les catégories vides.
Pouvez-vous m'aider à écrire le script en php, et les requêtes SQL qui vont avec s'il vous plait. J'utilise PHP5 et MySQL5 avec des tables MyISAM.

Merci
klhoste est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2008, 12h22   #2
Membre confirmé
 
Avatar de Gaara-Manga
 
Inscription : avril 2007
Messages : 247
Détails du profil
Informations personnelles :
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : avril 2007
Messages : 247
Points : 213
Points : 213
Bon ya 50000 façon de faire en voici une :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
<?php
$result = mysql_query("SELECT cat_id, cat_label FROM Category");
while($row = mysql_fetch_array($result))
{
echo $row['cat_label'].'<br />';
 
$result2 = mysql_query("SELECT fct_label FROM Function WHERE cat_id='".$row['cat_id']."'");
while($raw = mysql_fetch_array($result2))
{
echo '* '.$raw['fct_label'].'<br />';
}
}
?>
Gaara-Manga est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2008, 12h22   #3
Membre du Club
 
Inscription : septembre 2006
Messages : 72
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 72
Points : 55
Points : 55
Le plus simple est de faire une jointure MySQL :

SELECT c.cat_id, c.cat_label, f.fct_id, f.fct_label FROM Category c LEFT JOIN Function f USING(cat_id)

Ensuite en php tu teste si le l'id_cat change et à ce moment là tu affiche le label de la catégorie.

Bien à toi
__________________
Tribal Auto Users
big_ben3333 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2008, 10h21   #4
Membre régulier
 
Avatar de ghost emperor
 
Étudiant
Inscription : septembre 2007
Messages : 167
Détails du profil
Informations personnelles :
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2007
Messages : 167
Points : 76
Points : 76
et avec un group by cat_id dans la requète ?
__________________
- "Pourquoi t'as pas de signature ?"
ghost emperor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2008, 10h27   #5
Membre du Club
 
Inscription : septembre 2006
Messages : 72
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 72
Points : 55
Points : 55
Bof, il ne disposerait plus des labels et id des fonctions.

L'avantage ici, c'est qu'on n'a qu'une seule requête.
__________________
Tribal Auto Users
big_ben3333 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2008, 11h10   #6
Membre régulier
 
Avatar de ghost emperor
 
Étudiant
Inscription : septembre 2007
Messages : 167
Détails du profil
Informations personnelles :
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2007
Messages : 167
Points : 76
Points : 76
même en gardant la jointure ?
__________________
- "Pourquoi t'as pas de signature ?"
ghost emperor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2008, 11h25   #7
Membre du Club
 
Inscription : septembre 2006
Messages : 72
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 72
Points : 55
Points : 55
Oui, oui,

Par exemple pour une table fonctions composée de la manière suivante :

Code :
1
2
3
4
5
6
7
8
9
10
11
fct_id           fct_label       cat_id
 
1                 fnc_1           1
2                 fnc_2           1
3                 fnc_3           1
4                 fnc_4           1
5                 fnc_5           2
6                 fnc_6           2
7                 fnc_7           2
8                 fnc_8           3
9                 fnc_9           3
et une table categories comme ceci :

Code :
1
2
3
4
5
cat_id           cat_label
 
1                  Catégorie_1
2                  Catégorie_2
3                  Catégorie_3
On aurait comme résultat pour ma requête :

Code :
1
2
3
4
5
6
7
8
9
10
11
c.cat_id             c.cat_label            f.fct_id               f.fct_label
 
1                      Catégorie_1           1                       fnc_1
1                      Catégorie_1           2                       fnc_2
1                      Catégorie_1           3                       fnc_3
1                      Catégorie_1           4                       fnc_4
2                      Catégorie_2           5                       fnc_5
2                      Catégorie_2           6                       fnc_6
2                      Catégorie_2           7                       fnc_7
3                      Catégorie_3           8                       fnc_8
3                      Catégorie_3           9                       fnc_9
Et si on ajoute un group by cat_id:

Code :
1
2
3
4
5
c.cat_id             c.cat_label            f.fct_id               f.fct_label
 
1                      Catégorie_1           1                       fnc_1
2                      Catégorie_2           5                       fnc_5
3                      Catégorie_3           8                       fnc_8
Ce qui nous obligerait à faire une seconde requête pour les labels des fnc...
__________________
Tribal Auto Users
big_ben3333 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2008, 13h26   #8
Membre régulier
 
Avatar de ghost emperor
 
Étudiant
Inscription : septembre 2007
Messages : 167
Détails du profil
Informations personnelles :
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2007
Messages : 167
Points : 76
Points : 76
Ah d'accord. Autant pour moi dans ce cas.
__________________
- "Pourquoi t'as pas de signature ?"
ghost emperor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2008, 18h13   #9
Invité de passage
 
Inscription : juillet 2008
Messages : 16
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 16
Points : 3
Points : 3
Merci pour toutes vos réponses, j'ai pu résoudre mon problème.

Kévin
klhoste est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h27.


 
 
 
 
Partenaires

Hébergement Web