2010-09-07 13 views
1

Comment faire une liste de films et de genre - MySQL Join Many-to-Many (devrais-je?) Et le PHP? Ou faire dans l'autre sens?PHP: Comment faire une liste de films et de genre (exemple) - MySQL Rejoignez Many-to-Many (voulez?) Et le PHP?

Exemples:
MySQL:

Table 1: 
movie_id | movie_title 
1______ | title_movie_1 
2______ | title_movie_2 
3______ | title_movie_3 

Table 2: 
genre_id | genre_title 
1______ | title_genre_1 
2______ | title_genre_2 
3______ | title_genre_3 

Table 3: 
id | movie_id | genre_1 
1_ | __1____ | _1 
2_ | __1____ | _2 
3_ | __2____ | _1 
4_ | __2____ | _3 
5_ | __3____ | _1 
6_ | __3____ | _3 
7_ | __3____ | _2 

Résultats PHP:

Movie: <a href="movie/1 (id_movie)">title_movie_1 _/a> 
Genre: 
<a href="genre/1 (id_genre)">title_genre_1 _/a>, 
<a href="genre/2">title_genre_2 _/a> 

Movie: <a href="movie/2 (id_movie)">title_movie_2 _/a> 
Genre: 
<a href="genre/1">title_genre_1 _/a>, 
<a href="genre/3">title_genre_3 _/a> 

Movie: <a href="movie/3 (id_movie)">title_movie_3 _/a> 
Genre: 
<a href="genre/1">title_genre_1 _/a> 
<a href="genre/2">title_genre_2 _/a> 
<a href="genre/3">title_genre_3 _/a> 

Je ne trouve pas faire ... aide, s'il vous plaît! J'attends!

Sincèrement, Areku

Répondre

2
SELECT 
    T1.movie_id, 
    T1.movie_title, 
    T2.genre_id, 
    T2.genre_title 
FROM 
    Table3 AS T3 
    INNER JOIN Table1 AS T1 ON T3.movie_id = T1.movie_id 
    INNER JOIN Table2 AS T2 ON T3.genre_1 = T2.genre_id 
ORDER BY 
    T1.movie_id 

Ce retourne quelque chose comme ceci:

movie_id | movie_title | genre_id | genre_title 
1  | title_movie_1 | 1  | title_genre_1 
1  | title_movie_1 | 2  | title_genre_2 
2  | title_movie_2 | 1  | title_genre_1 
2  | title_movie_2 | 3  | title_genre_3 
3  | title_movie_3 | 1  | title_genre_1 
3  | title_movie_3 | 3  | title_genre_3 
3  | title_movie_3 | 2  | title_genre_2 

Ensuite, il vous suffit de boucle à travers tous les enregistrements; print movie_title si movie_id a été modifié, puis print genre_title.

$currentMovie = 0; 
while ($row = mysql_fetch_row($result)) 
{ 
    if($row['movie_id'] != $current_movie) 
    { 
     $currentMovie = $row['movie_id']; 
     echo "Movie: <a href=\"movie/" + $row['movie_id'] + "\">" + $row['movie_title'] + "</a><br />Genre:<br />" 
    } 
    echo "<a href=\"genre/" + $row['genre_id'] + "\">" + $row['genre_id'] + "</a><br />" 
} 
+0

Un très grand merci! – areku

1

Faites un grand nombre à plusieurs requêtes SQL:

SELECT m.movie_id, m.movie_title, g.genre_id, g.genre_title 
FROM movies m 
INNER JOIN movie_genres mg ON m.movie_id = mg.movie_id 
INNER JOIN genres g ON g.genre_id = mg.genre_id 

boucle ensuite par le résultat et le groupe par id film.