chrigu: strings verknüpfen

hallo zusammen,
ich habe im sinn, strings (interpret und titel) zu verknüpfen und so dynamisch einen download-link zu generieren.

for ($i = 0; $i < $zeilen; $i++) {
        $row = mysql_fetch_array($result);
 $link = "$row[interpret] - $row[titel].mp3";

echo "<b>Interpret:</b> $row[interpret] <b>Titel:</b> $row[titel] <a href=$link>downloaden</a> <br>";
 }

leider zeigt es mir z.b. beim lied otherside von den red hot chili peppers nur "Red" an. korrekt wäre: "Red Hot Chili Peppers - Otherside.mp3". irgendwie ein problem mit den leerzeichen. in der mysql-db sind die interpreten und lieder mit leerzeichen gespeichert.

gruss chrigu

  1. echo "<b>Interpret:</b> $row[interpret] <b>Titel:</b> $row[titel] <a href='$link'>downloaden</a> <br>";

    oder

    echo "<b>Interpret:</b> $row[interpret] <b>Titel:</b> $row[titel] <a href="$link">downloaden</a> <br>";

    gruss
    horst

  2. Hi,

    echo "<b>Interpret:</b> $row[interpret] <b>Titel:</b> $row[titel] <a href=$link>downloaden</a> <br>";

    zwei grundlegende Fehler:

    Erstens müssen(!) fast alle Attributwerte in Quotes stehen - bei diesem href-Attribut kannst Du da den Bart Deiner Großmutter drauf verwetten.

    Und zweitens muss(!) eine URL korrekt URL-kodiert sein - ohne "fast". Die einzigen Ausnahmen wären die Fälle, in denen eine Kodierung identisch mit dem Ursprungswert ist. Insbesondere haben Leerzeichen nicht das geringste in einer URL verloren.

    leider zeigt es mir z.b. beim lied otherside von den red hot chili peppers nur "Red" an. korrekt wäre: "Red Hot Chili Peppers - Otherside.mp3".

    Wenn auch nur ein einziger Browser dies bei obigem Code anzeigt, gehört der Hersteller verklagt. Nicht mal der IE verhält sich dermaßen falsch.

    in der mysql-db sind die interpreten und lieder mit leerzeichen gespeichert.

    Das ist auch in Ordnung so. Ausnahmslos jedes Zeichen lässt sich URL-kodieren.

    Cheatah

  3. Hallo chrigu.

    Ich würde die folgende Zeile so schreiben:

    $link = $row['interpret'] ." - ". $row['titel'] .".mp3";

    1. Habe ich es gelernt, die Keys von assioziativen Arrays mit einfachen Anführungszeichen zu schreiben. Weiss nicht, ob es was ausmacht.
    2. Die Variable $link wird aus Strings und anderen Variablen zusammengesetzt. Es ist besser wenn man solche Zusammensetzungen sog. konkatiniert. d.h. Variablen mit Punkten und Anführungszeichen von den Stringteilen zu trennen. Es hat den Vorteil, dass der Parser schneller erkenn, was Variable ist und was nicht.

    Vielleicht bringt es die Lösung. Ansonsten glaub ich, dass es an den Anführungszeichen in den Namen liegt.

    mfg und gs