phpbar.de logo

Mailinglisten-Archive

[php] Eval oder andere Lösung?

[php] Eval oder andere Lösung?

Burkes burkes at gmx.de
Fre Aug 13 12:30:30 CEST 2004


Ich habe mir mit meinen bescheidenen Kenntnissen  ein einfaches
Mysql-PHP-Content-Management-System geschrieben, das auch wunderbar
läuft. In einer Tabelle sind die Seiteninhalte (pro Seite ein
Datensatz) in einer zweiten Tabelle die gemeinsamen Elemente (Menü,
Kopf, Fuß, CSS). Ich könnte das CMS nun noch viel schlagkräftiger
machen und mir viele Wünsche erfüllen, wenn ich php-Code in die
einzelnen Content-Felder einfließen lassen könnte, z.B. eine kleine
Schleife für ein Selekt-Menü, ein Include-Befehl, das Datum oder
sonstwas. Beispiel für die selbst definierte Funktion select_menue(): 

Datensatz 2, Name="Menue", Content= "blubber blah fasel <?
select_menue(); ?>  blah blah blah "
oder: Content="blubber blah fasel <? if(isset($wasweissich))
include("hinweis.txt"); ?> blah blah blah"

So wie hier geschrieben, geht das natürlich nicht, denn wenn das Feld
"Content" eingelesen wird, bin ich ja schon mitten im php-Code.
Natürlich funktioniert es auch ohne <? ?>-Tags nicht, wenn php-Code
innerhalb einer Variablen auftauchen, wird dies als Text
interpretiert, das ist mir mittleriweile auch klar.

Kann mir jemand einen Tipp geben, wie man das am einfachsten löst?
Muss ich mich in eval() einarbeiten (wobei die Datenbankinhalte
ausschließlich von mir selbst stammen)? Muss eval innerhalb des
Textes oder außerhalb verwendet werden? Gibt es einfachere Lösungen?
Oder muss ich mit ersetzen-Befehl arbeiten? Und was ist mit den <?
und ?> - Tags, müssen die verwendet werden werden?

Das Beispiel oben ist  natürlich ein blödes Beispiel, schon klar,
aber es geht ja nur um's Demonstrieren. Das Ganze ist nur  für
kleinere, eigene Projekte gedacht, die ich bequem pflegen möchte. Es
ist kein Template-System, sondern die einzelnen Datensatz-Felder
werden in Variable verwandelt, evtl. aufbereitet und dann kommt die
ganze Seite mit einem print-Befehl.

(Vereinfacht: echo " <html><body><table><tr><td> $menue
</td><td>$content</td></table> $fuss </body></html>";)

In ein Templatesystem wollte ich mich bewusst nicht einarbeiten (ich
tu's nur wenn's nicht anders geht). Und zu meinem Kenntnisstand: Ich
mache php  seit drei Jahren und kann sonst überhaupt nicht
programmieren.

Grüße
Peter

--
Peter Burkes
www.burkes.de
www.user-archiv.de


php::bar PHP Wiki   -   Listenarchive