eval + mysql

Thanatos

Mitglied
Hallo,

ich habe ein Template gemacht. Wenn ich dort in der Navigationsleiste z.B. auf "Home" klicke, wird der Link "...index.php?seite=home" aufgerufen. Über das Wort "home" wird der entsprechende Eintrag in der Datenbank ausgelesen und ausgegeben. Funzt auch alles ganz prächtig. Jetzt möchte ich ein Newsscript von mir einbauen (php + mysql). Wenn ich dieses Script einfach als Text in das entsprechende Datenbankenfeld schreibe, wird dieser nur ausgegeben, nicht aber ausgeführt. Deshalb habe ich mich hier im Forum erkundigt und herrausgefunden, dass die Funktion "eval" die richtige ist :) . Aber wie baue ich um alles in der Welt diese "eval-Funktion" ein ? Was muss in meiner index.php stehten (Code) und was muss ich in die Datenbank schreiben, damit nachher alles als normaler php-Code ausgegeben wird ? Müssen in der Datenbank weiterhin die <? ?> sein, oder müssen die raus, da sie schon im Code aufgerufen werden ? Ich habe absolut keine Ahnung und probiere schon seit einiger Zeit verzweifelt daran herum.
Ich hoffe ihr könnt mir helfen. :)
 
ganz einfach :-)

du liest ganz normal aus deiner db aus

$erg = mysql_query("select feld from tabelle",$link);
$row = mysql_fetch_row($erg);

dann eval

eval($row[0]);

wie echo einsetzen :-)
 
Danke für die schnelle Antwort. Leider bekomme ich einen Fehler:

Parse error: parse error in [...]/index.php(111) : eval()'d code on line 1

ich kann aber keinen Fehler finden.
 
Hat denn keiner soetwas schon mal gemacht ? Ist das eine so exotische Frage, dass es nur eine Antwort darauf gibt ? Helft mir doch bitte. Dann könnte ich an der Seite weitermachen und muss nicht mehr Rätsel raten... :)
 
hmm zeig mal die zeile wo der fehler auftritt, vielleicht hast du nur anführungsstriche vergessen oder so
 
Ich habe das so gemacht:

$abfrage = "SELECT [...] FROM [...] WHERE [...]";
$ergebnis = mysql_query($abfrage);

$row = mysql_fetch_row($ergebnis);

eval($row[0]);

also genau so wie es mir von "melmager" beschrieben wurde.
 
wenn du $row[0] schreibst, gehe ich jetzt davon aus, dass in ersten tabellenspalte auch der code steht?

sonst nimm

PHP:
$row = mysql_fetch_object($ergebnis);
eval($row->spaltenname);
 
Hi,

danke für deinen Tipp. Ich habe in der Zwischenzeit etwas rumgebastelt und bekomme jetzt keine Fehlermeldung mehr. Allerdings wird der Code (der in der Datenbank) immer noch nicht ausgegeben. Ich habe zum Testen

<? echo "test"; ?>

genommen (steht in der Datenbank). Das wird aber nicht ausgegeben. Ich habe auch deine Variante probiert. Da passiert auch nichts.
An was kann das also jetzt schon wieder liegen ? Interpretiert wird der Code anscheinend richtig, sonst würde bei eval eine Fehlermeldung kommen. Ich hab keine Ahnung, an was das liegen könnte. Vielleicht hat ja noch einmal jemand einen Tipp. Ich bin für alles dankbar :)
 
in deinem feld sollen nicht
<? und ?> stehen

PHP:
$bla = "echo \"bla inhalt\";";
echo $bla;
eval ($bla);

als kleine hilfe smile
 
hi,

ich habe jetzt die <? ?> gelöscht. Es funktioniert trotzdem nicht. Der Code selbst wird aber als Text richtig ausgegeben. Die Verbindung zu dem Datenfeld ist also in Ordnung. Aber warum wird das nicht interpretiert ? Ich verzweifel noch :( . Hat jemand so etwas schon mal gemacht ? Wenn ja, wäre ich ihm dankbar, wenn er es hier an Hand eines Beipiels posten könnte. :)
 
Zurück