PHP code in DB speichern und auslesen

  • Hallo!

    Ich speichere HTML Code in einer MYQL Datenbank, um ihn nachher in einem CMS als Seite ausführen zu können. Dieser code enthält aber auch Zeilen in Php, z.B: ein include zum einbinden einer navigationsliste und einen footer. Wenn ich dann den Datenbankeintrag, der den gewünschten HTML /PHP Code enthält, mittels echo ausgeben will um die seite anzeigen zu können, scheint der PHP Code ignoriert zu werden.

    Ich habe den Code für das einbinden der navigationsliste eingebaut, weil sich ja die navigationsleiste ändern kann. Wenn ich die navigationsleiste als fertigen html code in die DB speichern würde wird immer nur dieser ausgeführt, ohne Rücksicht auf Veränderungen.

    Also wenn der DB Eintrag so aussieht (Auszug):

    (In Spalte: CreatedDocument)

    PHP
    <body>
    <div id="wrapper">
    <div id="header"></div>
    <?php include("navigation.php");?>
    <div id="content">

    Und ich im Programm, welches auf die Datenbank zugreift, habe:

    Wird der HTML Code richtig ausgeführt, aber PHP ignoriert und ich bekomme somit keine Navigationsleiste.

    Danke im Voraus!

    2 Mal editiert, zuletzt von HMS (22. Mai 2008 um 18:17)

  • Normalerweise benutzt man dafür die Funktion eval. Es ist aber ganz schön riskant, soetwas zu machen. Du solltest dir vielleicht Alternativen dazu überlegen. Zum einen gibt es die Möglichkeit, die Pfade zu den Dateien, die inkludiert werden sollen, extra in die Datenbank zu schreiben. Du brauchst dazu neue eine Tabelle, in der die Pfade als Strings stehen.

    PHP
    $result = mysql_query("SELECT pfad FROM modules WHERE id = '$articleID'");
    while($row = mysql_fetch_assoc($result)) {
    	include($row['pfad']);
    }

    Oder du schreibst eine Funktion, die auf Schlüsselworte in den Strings reagiert. Dann kannst du die Include-Befehle in der Datenbank lassen.

    PHP
    function parse($str) {
    	preg_match_all("/{include:(.+).php}/iU",$str,$found);
    	foreach($found[1] as $path) {
    		include($path.".php");
    	}
    	return str_replace($found[0],"",$str);
    }

    Diese Funktion sucht im String nach "{include:bla.php}", inkludiert die Datei und löscht den Befehl aus dem String. Mit regulären Ausdrücken kann man viel Unsinn treiben. Beware!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!