Bonjour, je suis point du tout compétent en php mais il se trouve que je suis contraint de créer un site (ce qui n'est pas plus mon métier) ou j'en ai besoin.
Et en bon noob, j'utilise dreamweaver...
Bref, j'ai une question sur un problème très précis.
Je suis en train de réaliser un catalogue sous forme de liste
j'ai deux tables
une table artiste avec id et nom
une table albums avec id, nom et id_artist
J'ai un <ul> artistes (avec un <li>nom</li> inside)
puis un <ul> albums correspondant à chaque artiste (et pareil qu'au dessus pour le li, donc)
(et au final j'aurais un <ul> chansons correspondant à chaque album)
Je récupère mes données dans la base de données, et à priori, les tests de chacune des requêtes me donne exactement ce que je veux.
Quel souci alors?
L'e <li> artiste est dans une région répétée
Puis l'ul albums aussi, donc pour que chaque artiste renvoie à sa liste d'albums
le système fonctionne.
Sauf qu'il ne m'affiche que la première ligne correspondant à l'id artiste
dans mon <li>nom albums</li>
et que je ne sais pas comment lui dire de répétéer cette région jusqu'à ce qu'il n'a plus d'entrées
Dreamweaver me fait savoir gentiment que ce n'est pas possible de répétéer une région dans une autre région enfin bref....
Mon souci, c'est donc de pouvoir lui faire afficher tous les albums correspondant à un artiste...
J'ai essayé de faire assez propre pour le code, pour que les gens voient bien le système avec un exemple pas généré par la base de données mais écrit (the beatles et leur liste d'albums correspondants)
donc ça donne ça pour mon body (y a une toolbar dont on se fout au début aussi)J'ai viré tout ce qui ne correspondait pas à mon souci...
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
35
36
37
38
39
40
41
42
43
44
45
46
47 <body> <div class="toolbar"> <h1 id="pageTitle"></h1> <a id="backButton" class="button" href="#"></a> <a class="button" href="#searchForm">Search</a> </div> <ul id="artists" title="Artists" selected="true"> <li><a href="#TheBeatles">The Beatles</a></li> <?php do { ?> <li><a href="#<?php echo $row_Recordset2['id_artist']; ?>"><?php echo $row_Recordset2['artist_name']; ?></a></li> <?php } while ($row_Recordset2 = mysql_fetch_assoc($Recordset2)); ?> </ul> <ul id="TheBeatles" title="The Beatles"> <li><a href="#songs">Abbey Road</a></li> <li><a href="#songs">Help!</a></li> </ul> <?php do { ?> <ul id="<?php echo $row_Recordset3['id_artist']; ?>" title="<?php echo $row_Recordset3['artist_name']; ?>"> <li> <a href="#<?php echo $row_Recordset3['id_album']; ?>"> <?php echo $row_Recordset3['album_name']; ?></a> </li> </ul> <?php } while ($row_Recordset3 = mysql_fetch_assoc($Recordset3)); ?> </body>
Bref c'est mon
que je souhaiterais répéter.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <li> <a href="#<?php echo $row_Recordset3['id_album']; ?>"> <?php echo $row_Recordset3['album_name']; ?></a> </li>
Pour le moment j'ai fait une base de donnée de test
pour recordset2 en test, j'ai ça:
ligne 1: record=1 ; id_artist=1; artist_name=pim
ligne 2: record=2 ; id_artist=2; artist_name=boum
et en recordset3 en test, j'ai ça:
ligne 1: record=1 ; id_artist=1; artist_name=pim; album_name=albumpim id_album=1
ligne 2: record=2 ; id_artist=2; artist_name=boum; album name=albumboum1 id_album=2
ligne 2: record=3 ; id_artist=2; artist_name=boum; album name=albumboum2 id_album=3
mais donc dans mon <ul> album quand je sélectionne l'artiste boum, il ne m'affiche que la première ligne, donc l'albumboum1, mais s'arrête là...
Je pense que c'est pas un souci de bdd même si je suis probablement pas assez compétent pour le savoir mais du coup je ne sais pas quoi faire et je ne trouve rien sur ce thème nulle part (ou alors rédigé d'une telle façon que je ne suis pas capable de retrouver l'article via google- ou ya que des réponses me renvoyant à expert-exchanges donc que je peux pas consulter)
Au cas où, je poste mon code en début de page néanmoins
Si quelqu'un pourrait m'aider, ça serait super cool.
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 <?php if (!function_exists("GetSQLValueString")) { function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") { if (PHP_VERSION < 6) { $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue; } $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue); switch ($theType) { case "text": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "long": case "int": $theValue = ($theValue != "") ? intval($theValue) : "NULL"; break; case "double": $theValue = ($theValue != "") ? doubleval($theValue) : "NULL"; break; case "date": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "defined": $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue; break; } return $theValue; } } mysql_select_db($database_mysql, $mysql); $query_Recordset1 = "SELECT ch_id, ch_name FROM sons"; $Recordset1 = mysql_query($query_Recordset1, $mysql) or die(mysql_error()); $row_Recordset1 = mysql_fetch_assoc($Recordset1); $totalRows_Recordset1 = mysql_num_rows($Recordset1); mysql_select_db($database_mysql, $mysql); $query_Recordset2 = "SELECT * FROM artists"; $Recordset2 = mysql_query($query_Recordset2, $mysql) or die(mysql_error()); $row_Recordset2 = mysql_fetch_assoc($Recordset2); $totalRows_Recordset2 = mysql_num_rows($Recordset2); $maxRows_Recordset3 = 10; $pageNum_Recordset3 = 0; if (isset($_GET['pageNum_Recordset3'])) { $pageNum_Recordset3 = $_GET['pageNum_Recordset3']; } $startRow_Recordset3 = $pageNum_Recordset3 * $maxRows_Recordset3; mysql_select_db($database_mysql, $mysql); $query_Recordset3 = "SELECT artists.id_artist, artists.artist_name, albums.album_name, albums.id_album FROM albums, artists WHERE artists.id_artist = albums.id_artist ORDER BY albums.id_artist, albums.album_name "; $query_limit_Recordset3 = sprintf("%s LIMIT %d, %d", $query_Recordset3, $startRow_Recordset3, $maxRows_Recordset3); $Recordset3 = mysql_query($query_limit_Recordset3, $mysql) or die(mysql_error()); $row_Recordset3 = mysql_fetch_assoc($Recordset3); if (isset($_GET['totalRows_Recordset3'])) { $totalRows_Recordset3 = $_GET['totalRows_Recordset3']; } else { $all_Recordset3 = mysql_query($query_Recordset3); $totalRows_Recordset3 = mysql_num_rows($all_Recordset3); } $totalPages_Recordset3 = ceil($totalRows_Recordset3/$maxRows_Recordset3)-1; ?>
Merci d'avance.
edit: (le tout est géré via un js et un css pour la navigation de ul en ul avec un magnifique slider qu'il est beau mais il marche très bien donc laissons le tranquille lui)
edit2: si c'est une impasse, je suis néanmoins ouvert à tout système de navigation me permettant de faire une navigation à peu près lisible pour avoir accès au catalogue (genre pas 50 pages générées par bdd ou un tree de 5000 m), dans l'idéal via des colonnes liées ou un miller columns... Que ce soit géré en javascript ou via sql, c'est pas le souci, je veux juste un truc qui fonctionne et qui m'oblige pas à tout écrire en html... Et même chose, aucun exemple présent sur le web sinon qui me posent exactement le même souci au même endroit ou des merdouilles ou tout est écrit en html (vu que j'ai près de 4000 morceaux à uploader, j'y tiens pas trop non plus)
edit 3: et au kazoo, j'ai les droits des 4000 morceaux que j'uploade, donc pas de remarques de ce genre, merci (vu que j'ai pas posté que par ici et qu'autre part, la seule personne qui m'a répondu l'a fait sur ce thème en grand pourfendeur des droits d'auteur )
Partager