1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

PHP code in DB speichern und auslesen

  • HMS
  • 22. Mai 2008 um 18:13
  • Unerledigt
  • HMS
    5
    HMS
    Mitglied
    Reaktionen
    4
    Punkte
    194
    Beiträge
    26
    • 22. Mai 2008 um 18:13
    • #1

    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:

    PHP
    if(isset($articleID)) {
    
    
      $selectStatement = mysql_query("SELECT * from article where ID = '$articleID'");
    
    
      while($currentRow = mysql_fetch_array($selectStatement)) {
    
    
     /*Gibt das gefundene HTML Document aus*/
      echo $currentRow['CreatedDocument'];
    
    
    }
    
    
    }
    Alles anzeigen

    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)

  • spinball
    11
    spinball
    Mitglied
    Reaktionen
    67
    Punkte
    1.192
    Beiträge
    223
    • 22. Mai 2008 um 18:45
    • #2

    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!

  • Maximilian Rupp 27. Dezember 2024 um 12:04

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

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

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung