Hi,
$select = "SELECT * FROM mp3";
$result = mysql_db_query ( $db, $select);while ( $ausgabe = mysql_fetch_object ( $result)
{
echo $ausgabe->Interpret . " <br> " .
$ausgabe->Bildpfad . " <br> " .
$ausgabe-> .................... ;}
weiss nicht ob DISTINCT ohne weitere angaben soviel hilft, und "wirkt" meines wissens nur bei einem/auf das erste Feld der Abfrage: das muss dann also interpret sein.
DISTINCT hat eine ähnliche Wirkung wie GROUP BY und entfernt dir u.U. Datensätze, die du anzeigen willst, namentlich die Titel.
Du bekommst dann also nur immer den ersten (gefunden) Titel eines Interpreten ausgegeben.
In jedem Fall wäre mal eine Gruppierung und Sortierung hilfreich, z.B.
SELECT * FROM mp3 GROUP BY interpret ORDER BY interpret, titel
Falls noch nicht getan, leg auf beide Felder (interpret, titel) auch einen index, damit es schneller geht.
Wenn du die Interpreten als 'ne Art Überschrift ausgeben willst, dann bleibt dir nix anderes übrig, als sie dir auf PHP Seite zu merken. Ist der Name gleich, wird er ncht nochmal ausgegeben, sonern nur der Titel.
$Interpret = '';
while ( $ausgabe = mysql_fetch_object ( $result)
{
if (strtolower($ausgabe->Interpret) != strtolower($Interpret) ) {
echo "<b>" . $ausgabe->Interpret . " </b> <br /> " .
}
echo $ausgabe->Bildpfad . " <br /> " .
$ausgabe-> .................... ;
// merken
$Interpret = $ausgabe->Interpret;
}
Du kannst die Namen des letzen und aktuellen Interpreten auf verschiedene Weise vergleichen, strtolower() ist die billige Version. Sinnvoll wäre natürlich eine eigene Tabelle für die Interpreten, so dass du nur die Datensatznummer vergleichen musst. Würde weniger Fehler verursachen und die Namen wäre immer konsistent.
JOINs sind aber ne andere Baustelle :-)
Viel Spaß,
CirTap