MySQL Liedverzeichniss

Moin :wink:

Habe ein kleines Liedverzeichniss, momentan noch mit purem HTML,
wollte es aber nun auf MySQL umbauen.
Hab also nun eine MySQL Tabelle “musik” mit den Spalten id, band, song, songtext, youtube.

Inhalt des Liedverzeichnisses:

[code]<?
$musikabfrage = “SELECT * FROM musik ORDER BY band”;
$musikeintrag = mysql_query("$musikabfrage");

while($row = mysql_fetch_object($musikeintrag))
{
echo “<a id=“link_music” href=“http://www.hashworks.de/test.html?open=”;
echo $row->band;
echo “”>”;
echo $row->band;
echo “”;
If ($_GET[“open”] == $row->band) {
echo “<a style=“margin-left: 20px;” href=“http://www.hashworks.de/song.html?titel=”;
echo $row->song;
echo “” id=“link_music”>”;
echo $row->song;
echo “
”; }
}?>[/code]

Im Liedverzeichniss soll die Tabelle dann also nach “band” geordnet werden und dann sollen die Bands mit nem Link zu “test.html?open=Jeweiliger Bandname” ausgegeben werden.
Ist aber z.B. ?open = Blur dann sollen unter “Blur” noch die Lieder von Blur mit jeweiligem Link (song.html?titel=SongName) ausgegeben werden.
Das funktioniert auch soweit,
doch habe ich hier 2 Fehler:

  1. Bei Bandname “Böse Onkelz” werden keine Lieder angezeigt, keine Ahnung warum.

  2. Wenn ich mehrere Spalten mit gleichem Bandname verwende, passiert folgendes:

[quote](URL = test.html?open=Metallica)

Blur
Metallica
- Enter Sandman
Metallica
- Nothing else Matters[/quote]
So soll es aussehen:

[quote](URL = test.html?open=Metallica)

Blur
Metallica
- Enter Sandman
- Nothing else Matters[/quote]

Bin am Verzweifeln,
jemand ne Idee wie ich die Probleme Löse?

Hoffe ihr versteht mein Code-kauderwelsch^^

Weil die sich a) mit h schreiben, und b) weil dein Script vielleicht meine Meinung über sie teilt … :slight_smile:

Das machst du mit einem einfachen Gruppenwechsel (Stichwort!) - absolute Standardaufgabe in der Programmierung von Ausgabelisten.

[quote]Bin am Verzweifeln,
jemand ne Idee wie ich die Probleme Löse?[/quote]
Nur ein bisschen logisch nachdenken.

Überlege dir auf dem Papier, wie du vorgehst, wenn du die Daten in der gegebenen Form bekommst, und daraus die gewünschte Liste erzeugen willst.
Anschliessend nur noch dem Computer sagen, dass er es genauso machen soll.

[quote=“chrisb”]
Weil die sich a) mit h schreiben, und b) weil dein Script vielleicht meine Meinung über sie teilt … :-)[/quote]
a) Oh, Danke :smiley:
b) Ich mag nur vereinzelte Lieder xD
c) Das erklärt trotzdem nicht warum grade die eine Spalte nicht erkannt wird…es ist ja nur die Spalte “song” die nicht erkannt wird^^

[quote]
Das machst du mit einem einfachen Gruppenwechsel (Stichwort!) - absolute Standardaufgabe in der Programmierung von Ausgabelisten.[/quote]
Mhm, keine Ahnung was ein Gruppelwechsel ist. Beispiel?
Habs jetzt aber auch anders hinbekommen - Warum ich vorhin nicht drauf gekommen bin? Keine Ahnung.

while($row = mysql_fetch_object($musikeintrag)) { $newband = $row->band; If ($newband != $oldband) { echo "<a id=\"link_music\" href=\"http://www.hashworks.de/test.html?open="; echo $row->band; echo "\">"; echo $row->band; echo "</a>"; }; If ($_GET["open"] == $row->band) { echo "<a style=\"margin-left: 20px;\" href=\"http://www.hashworks.de/song.html?titel="; echo $row->song; echo "\" id=\"link_music\">"; echo $row->song; echo "</a>"; } $oldband = $newband; }?>

Was soll „die Spalte wird nicht erkannt” bedeuten?
Drück’ dich bitte mal verständlicher aus.

Genau das, was du jetzt mit

auch implementiert hast, nennt man einen (einstufigen) Gruppenwechsel :slight_smile:

[quote=„chrisb“]
Was soll „die Spalte wird nicht erkannt” bedeuten?
Drück’ dich bitte mal verständlicher aus.[/quote]

Also, in Tabelle Musik ist eine Spalte:

[quote]id:
band: Böhse Onkelz
song: Wir ham noch lange nicht genug
songtext: (langer songtext.)
youtube: 94RlPpufrQI[/quote]

Jetzt wird obiger Code ausgegeben.
der Bandname steht ja da. Jedoch sieht man den Titel nicht,
wie bei den anderen:
hashworks.de/test.html

Da habsch ja genau richtig geraten :smiley:

[quote=“HashWorks”]der Bandname steht ja da. Jedoch sieht man den Titel nicht,
wie bei den anderen[/quote]
Da du diesen Sonderzeichen enthaltenden Begriff nicht URL-gerecht kodiert hast, überlässt du dies dem Browser. Und der geht dabei ggf. von einer anderen Zeichenkodierung aus, als du beabsichtigt hast.
Und damit kommt dann als Parameter bei deinem Script u.U. etwas an, was sich so nicht in der Datenbank wiederfindet, weil dort die Sonderzeichen in einer anderen Zeichenkodierung vorliegen.

Ausserdem solltest du mal checken, ob da wirklich zwei Leerzeichen zwischen den Wörtern sein sollen, oder nicht.

[quote=“chrisb”][quote=“HashWorks”]der Bandname steht ja da. Jedoch sieht man den Titel nicht,
wie bei den anderen[/quote]
Da du diesen Sonderzeichen enthaltenden Begriff nicht URL-gerecht kodiert hast, überlässt du dies dem Browser. Und der geht dabei ggf. von einer anderen Zeichenkodierung aus, als du beabsichtigt hast.
Und damit kommt dann als Parameter bei deinem Script u.U. etwas an, was sich so nicht in der Datenbank wiederfindet, weil dort die Sonderzeichen in einer anderen Zeichenkodierung vorliegen.

Ausserdem solltest du mal checken, ob da wirklich zwei Leerzeichen zwischen den Wörtern sein sollen, oder nicht.[/quote]

Ja, die zwei Leerzeichen waren der Grund,
hatte ich garnicht gemerkt, danke!
HTML interpretiert die zwei logischerweise als 1, die Datenbank jedoch als 2.