Précisément : tu as inversé.J'ai peut-être fait une erreur au niveau des quotes...$disquesId = $database->query('SELECT id_disque FROM disques LIMIT 0, 10'); $answer = $database->query("SELECT * FROM pistes RIGHT JOIN disques ON pistes.id_disque=disques.id_disque RIGHT JOIN chansons ON pistes.id_chanson=chansons.id_chanson RIGHT JOIN artistes ON pistes.id_disque=artistes.id_artiste WHERE id_disque IN ('.implode(",", $disquesId).') ORDER BY pistes.id_artiste, pistes.id_disque, pistes.id_piste ");
Le truc : commence par écrire une requête SQL normale avec des valeurs en dur, sans PHP, sans variables;
Exemple :
SELECT *
FROM pistes
RIGHT JOIN disques ON pistes.id_disque=disques.id_disque
RIGHT JOIN chansons ON pistes.id_chanson=chansons.id_chanson
RIGHT JOIN artistes ON pistes.id_disque=artistes.id_artiste
WHERE id_disque IN (1,2,3,4)
ORDER BY pistes.id_artiste, pistes.id_disque, pistes.id_piste
Ensuite, colle le tout entre les guillemets d'une variable, ça devient alors :
$asnwer = "SELECT *
FROM pistes
RIGHT JOIN disques ON pistes.id_disque=disques.id_disque
RIGHT JOIN chansons ON pistes.id_chanson=chansons.id_chanson
RIGHT JOIN artistes ON pistes.id_disque=artistes.id_artiste
WHERE id_disque IN (1,2,3,4)
ORDER BY pistes.id_artiste, pistes.id_disque, pistes.id_piste";
Maintenant, on va remplacer les valeurs en dur par une valeur définie en PHP : comme on a utilisé des guillemets, on va utiliser encore des guillemets pour sortir de la syntaxe SQL. Mais je te suggère de créer cette valeur dans une autre variable en amont de ta requête, et ensuite seulement l'insérer dans la chaine SQL, comme ceci :
$cdIds = implode(',', $disquesId);
$asnwer = "SELECT *
FROM pistes
RIGHT JOIN disques ON pistes.id_disque=disques.id_disque
RIGHT JOIN chansons ON pistes.id_chanson=chansons.id_chanson
RIGHT JOIN artistes ON pistes.id_disque=artistes.id_artiste
WHERE id_disque IN (". $cdIds .")
ORDER BY pistes.id_artiste, pistes.id_disque, pistes.id_piste";
Refais l'essai Quant au sujet de départ, je n'ai parcouru l'ensemble que rapidement en diagonale, mais le problème de modélisation de la base de données n'est pas à prendre à la légère, c'est en général le cœur de l'application, si tu construis une base bancale, l'application sera bancale. Par ailleurs, si ton modèle de données doit être remanié,n'oublie pas que ça voudra dire qu'il faudra refaire toutes les requêtes qui passent par les tables modifiées, et le code PHP qui va avec probablement aussi. Intéresse-toi à la méthode MERISE pour la modélisation de bases de données, il y a un bon tuto sur le sujet sur developpez.com. Bon courage