Hallo Poison,
Du hast die nächste Runde in der Kontextproblematik eingeläutet :-)
Mit folgendem Codeschnipsel habe ich es geschafft, ein Zufallsbild aus einem Ordner zu generieren:
Einrücken macht Deinen Code lesbarer.
while (false != ($file = readdir ($handleordner)))
{
if ($file != "." && $file != "..")
{
array_push($foto,"<img src = '../schokofroesche/$file' border = '0'>");
Einfacher mit gleicher Wirkung:
# foto[] = "<img src = '../schokofroesche/$file' border = '0'>";
Warum willst Du statt des Pfades zur Datei gleich das ganze
img-Element abspeichern. Speichertest Du nur den Pfad, würde
Dir das Kontextproblem gar nicht auffallen.
Beachte: Jeder Eintrag in Deinem Array enthält eine Zeichenkette,
# die einfache Anführungszeichen enthält.
# Bei der Syntax des img-Elementes hast Du übrigens auch
# noch einen Fehler drin: zuviele Leerzeichen.
}
}
[...]
Nur will PHP mir das ausgewählte Bild nicht in die Datenbank schreiben.
Ich habe folgendes eingegeben:
[code lang=php]
$aendern = "UPDATE rustleoaks Set
schokofrosch1='$foto[0]' WHERE benutzername='" . mysql_real_escape_string($_SESSION["username"]) . "'";
hier an dieser Stelle könntest Du Dir Dein SQL-Statement, das heißt den
Inhalt der Variablen $aendern anzeigen lassen. Du solltest Dein Problem
sofort erkennen, denn die Zeichenkette sieht wie folgt aus:
~~~sql
UPDATE rustleoaks Set schokofrosch1='<img src = '../schokofroesche/dateiname.des.bildes' border = '0'>' WHERE benutzername = ...
Damit in Deinem Statement das einfache Anführungszeichen richtig maskiert wird, musst Du - wie Du schon gelernt haben solltest - den Inhalt von $foto[0] ebenfalls mit mysql_real_escape_string() behandeln.
Du bringst den Inhalt dieser Variablen in einen SQL-Kontext. Diesen Wechsel hast Du nicht beachtet.
Freundliche Grüße
Vinzenz