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 13/03/2007, 16h33   #1
Invité de passage
 
Inscription : décembre 2004
Messages : 21
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 21
Points : 4
Points : 4
Par défaut [Conception] Comment afficher données en hiérarchie

Bonjour,
Je voudrais créer une liste hiérarchique pour afficher ma collection de MP3 (collection évolutive). Le but est d'afficher d'abord au 1er niveau le genre musical (rock, pop, reggae, etc.) puis le nom des artistes de ce genre et pour chaque artiste : ses albums avec pour chaque album son titre, la date de parution, le pays d'origine, la taille des MP3, le format (MP3, MPC, WAV) et la pochette de l'album.

Voici par un schéma, le résultat à obtenir :

*Genre 1
.....oArtiste 1
...........-Album 1 : Date, pays, pochette.
...........-Album 2 : Date, pays, pochette.
.....oArtiste 2
...........-Album 1 : Date, pays, pochette.
*Genre 2
etc.

J'ai effectué plusieurs tentatives mais rien ne fonctionne. J'ai fait des recherches sur le net mais j'avoue une certaine incompétence face aux différents scripts. Etant débutant et ne connaissant rien à la programmation, la tâche est rude et je galère grâve.

Voici ma dernière tentative, le résultat n'est pas encore satisfaisant :
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
// insertion des données
	mysql_query ("INSERT INTO bdd_music VALUES('', '$nom' , '$artiste' , '$genre' , '$pays' , '$date' , '$taille' , '$format' , '$image')");
	}
//calcul du nombre de requêtes avec la fonction mysql_numrows
$result = mysql_query ("SELECT * FROM bdd_music ORDER BY genre");
echo mysql_numrows ($result);
//Affichage des résultats à partir de l'instruction mysql_result qui demande trois paramètres : (la variable de requête -$result , la ligne d'enregistrement de la requête , le champ à afficher)
$compteur=0;
while ($compteur < mysql_numrows ($result))
	{
	$nomalbum = mysql_result ($result , $compteur, "nom");
	$artiste = mysql_result ($result , $compteur, "artiste");
	$pays = mysql_result ($result , $compteur, "pays");
	$date = mysql_result ($result , $compteur, "date");
	$taille = mysql_result ($result , $compteur, "taille");
	$format = mysql_result ($result , $compteur, "format");
	$image = mysql_result ($result , $compteur, "image");
	$genre1 =  mysql_result ($result , $compteur, "genre");
	$compteur2 = $compteur++;
	$genre2 = $compteur2++;
	$genre2 =  mysql_result ($result , $compteur2, "genre");
	if ($compteur==0)
		{
		echo "<ul><li>$genre1</li></ul>";
		}
	elseif ($genre1 != $genre2)
		{
		echo "<ul><li>$genre2</li></ul>";
		}
	echo "$artiste - $nomalbum - $pays - $date - Taille ($taille Mo) - Format : $format - <img src=/images/music/$image /><br/>";
	$copmteur++;
	}
mysql_close();
?>
Alors, si vous avez des pistes pour m'éclairer ou si vous avez un code plus efficace à proposer, je suis preneur
rico the hobbit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2007, 16h39   #2
Membre chevronné
 
Inscription : juin 2005
Messages : 572
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : juin 2005
Messages : 572
Points : 690
Points : 690
Aie ca pique : une seule table pour l'artiste, le genre et l'album.

C'est un problème d'analyse que tu as la, une fois réglé le code viendra de lui meme :

Tu fait l'analyse correcte, mais tu ne la retranscris pas dans ta BDD.

On a d'abord un genre de musique.
Un genre regroupe plusieurs artistes, mais un artiste peut chanter dans plusieurs genres.
Un artiste sort des albums, et un album n'appartient qu'à un artiste.

On a donc une table genre, une table association genre_artiste, une table artiste, et une table album contenant une clé étrangère vers la table artiste.

L'analyse que je t'ai proposée est ma vision des choses, mais ce n'est pas forcément celle que tu désires. Commence par te poser ce genre de questions à mon avis
__________________
Tout pas mieux que tout le monde : évitez les questions techniques en mp sinon à quoi bon poster sur un forum ?

Petite citation : "Le sage cherche la vérité, l'imbécile l'a déjà trouvée"
ratapapa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2007, 22h48   #3
Invité de passage
 
Inscription : décembre 2004
Messages : 21
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 21
Points : 4
Points : 4
Bon en fait, il n'y a pas qu'une seule table. J'ai une table "bdd_genre", "bdd_pays", "bdd_format_audio" et "bdd_artistes".
Au départ, ne voyant pas l'intérêt d'un numéro unique (id) par table, j'ai directement mis le nom en index. Dans mon formulaire pour la table "bdd_music", je choisis par une liste déroulante le genre à partir de la table "bdd_genre", un artiste par la table "bdd_artiste", etc.

Bon évidemment, depuis, j'ai appris quelques notions là-dessus et j'ai cru comprendre que cette méthode n'était pas dans le protocole de création de bases de donnée. Mais, peut-être, voulant aller plus vite que la musique (c'est le cas de le dire...), je me suis lancé dans la phase d'affichage des données.

Par contre, en partant du principe que si je remplace dans ma base de donnée "bdd_music" les noms "genre", "artiste", etc. par des clefs étrangères, je ne vois pas l'apport que ça peut m'apporter pour résoudre l'affichage des données avec un tri mais je vais y réfléchir.

En tout cas, le petit scarabé te remercie chaudement pour tes précisions
rico the hobbit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2007, 09h42   #4
Invité de passage
 
Inscription : décembre 2004
Messages : 21
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 21
Points : 4
Points : 4
Est-ce qu'une solution serait d'envisager une requête sur la table "Genre", une autre sur "artiste" et une autre sur "album" ou faut-il concentrer les efforts sur la table principale ?
rico the hobbit est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h17.


 
 
 
 
Partenaires

Hébergement Web