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

PHP & Base de données Discussion :

[Conception] Comment afficher données en hiérarchie


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2004
    Messages : 42
    Points : 20
    Points
    20
    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 : 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
    // 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

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Points : 716
    Points
    716
    Par défaut
    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"

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2004
    Messages : 42
    Points : 20
    Points
    20
    Par défaut
    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

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2004
    Messages : 42
    Points : 20
    Points
    20
    Par défaut
    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 ?

Discussions similaires

  1. Comment afficher données de requête
    Par Dr_No dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 16/08/2009, 21h32
  2. [Conception] comment réafficher donnée dans zone de texte
    Par faucon54 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 04/06/2007, 00h25
  3. Réponses: 9
    Dernier message: 04/12/2005, 18h57
  4. comment afficher des données Access sur Word ??
    Par merlubreizh dans le forum Access
    Réponses: 7
    Dernier message: 16/09/2005, 15h07
  5. comment afficher des données Access sur Excel ??
    Par merlubreizh dans le forum Access
    Réponses: 9
    Dernier message: 14/09/2005, 14h38

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