FOK!forum / Digital Corner / [MYSQL/PHP]
tankertuigzaterdag 11 november 2006 @ 15:15
Ik heb in mijn database de volgende tabellen:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
+------------------+
| dkm_disco_albums |
+----+-------------+
| id | titel       |
+----+-------------+
| 1  | Blackout    |
| 2  | Do or Die   |
+----+-------------+

+----------------------------------------------+
| dkm_disco_tracks                             |
+----+-------------------------+-------+-------+
| id | titel                   | album | track |
+----+-------------------------+-------+-------+
| 1  | Walk Away               | 1     | 1     |
| 2  | Worker's Song           | 1     | 2     |
| 3  | The Outcast             | 1     | 3     |
| 4  | Your Spirit's Alive     | 2     | 1     |
| 5  | The Warrior's Code      | 2     | 2     |
| 6  | Captain Kelly's Kitchen | 2     | 3     |
+----+-------------------------+-------+-------+


Deze gegevens wil ik zo weergeven:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<ul>
  <li><a href="#">Blackout</a>

    <ul>
      <li><a href="#">Walk Away</a></li>
      <li><a href="#">Worker's Song</a></li>
      <li><a href="#">The Outcast</a></li>
    </ul>

  </li>
  <li><a href="#">Do or Die</a>

    <ul>
      <li><a href="#">Your Spirit's Alive</a></li>
      <li><a href="#">The Warrior's Code</a></li>
      <li><a href="#">Captain Kelly's Kitchen</a></li>
    </ul>

  </li>
</ul>


Ben wat wezen kloten met left join

Ik heb nu dit:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
// Selecteer database

    
mysql_select_db($conf_db_data)
    or die(
mysql_error());  

$query =     mysql_query("
                SELECT *
                FROM dkm_disco_tracks
                LEFT JOIN dkm_disco_albums
                ON dkm_disco_tracks.album = dkm_disco_albums.id"
) or die (mysql_error());
                
while(
$row = mysql_fetch_array($query))
{
    
    echo
"$row[titel]<br>\n";
    
}
?>


Maar wat ik dan krijg als uitvoer is:

Blackout
Blackout
Blackout
Do or Die
Do or Die
Do or Die

Iemand enig idee hoe ik dat moet fixen?

[ Bericht 2% gewijzigd door tankertuig op 11-11-2006 15:35:18 ]
tankertuigzaterdag 11 november 2006 @ 15:29
oeps titel vergeten :S
Ra-zzaterdag 11 november 2006 @ 15:38
Tracks.titel echoën niet album titel en als alleen album titel nodig is doe je toch gewoon

SELECT album.titel
FROM dkm_disco_tracks
LEFT JOIN dkm_disco_albums
ON dkm_disco_tracks.album = dkm_disco_albums.id")

Als je beiden wil hebben dan kan je ook nog iets doen als

SELECT album.titel AS Albumtitel, track.titel AS TrackTitel
FROM dkm_disco_tracks
LEFT JOIN dkm_disco_albums
ON dkm_disco_tracks.album = dkm_disco_albums.id")

dan kan je TrackTitel en Albumtitel echoën in je script
SuperRembozaterdag 11 november 2006 @ 15:41
Wel even de goede tabel alias gebruiken dan, die hier boven werkt niet.

1
2
3
4
SELECT a.id AS album_id, a.titel AS album_titel,
   t.id AS track_id, t.titel AS track_titel, t.track
FROM dkm_disco_albums a
LEFT JOIN dkm_disco_tracks t ON t.album = a.id


Je bent toch niet van plan om voor elk genre aparte tabellen te maken he? dkm_rock_albums, dkm_dance_albums :D
tankertuigzaterdag 11 november 2006 @ 16:25
nope.

Het is allemaal van 1 band. In de ene tabbel staat info over de albums, in de andere over alle tracks.

Maar heb het al gefixt.
fokME2zaterdag 11 november 2006 @ 18:43
Ik wil niet vervelend zijn ofzo, maar de volgende keer [PHP/(My)SQL] voor dummies - Deel 34