Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

Variablen in Datenbank

Hallo,

ich habe eine Funktion, in der ich aus der Datenbank ein Formular auslese:

Code:                   In Zwischenablage kopieren (nur IE)
1">

Der Inhalt desFeldes Code (Tabelle editoptions) sieht z.B. so aus:
Code:                   In Zwischenablage kopieren (nur IE)
2">

Aber die Variable wandelt sich nicht um.
Es hilft nicht "$row_editoptions["code"]" mit eval() versuchen umzuwandeln.
Ich habe auch versucht, das ganze so zu schreiben:
Code:                   In Zwischenablage kopieren (nur IE)
3">

Habe gerade eröffnet bekommen, dass die Website (inkl. komplettem CMS, das ich gerad versuche sauber auszuarbeiten) bis Ende nächster Woche fertig sein muss, oder ich kann alles vergessen. Motivierend!
Kann ich das Problem überhaupt so lösen?
Welche Alternativen gibts?
Hier gehts zum Orginal Eintrag "Variablen in Datenbank" im Forum

Antworten

Zitat:
Kann ich das Problem überhaupt so lösen?
Nein. Wenn Du mit eval() arbeiten willst, mußt Du schon vollständige PHP Syntax benutzen und nicht nur Fragmente (das $-Zeichen allein ist noch kein PHP - sieht nur so aus).

Zitat:
Welche Alternativen gibts?
Wenn es "nur" um die Ersetzung von Variablennamen geht, reicht eine preg_replace()-Routine mit entsprechenden Parametern aus. Möchtest Du komplexere PHP-Kontrukte ermöglichen, mußt Du auch PHP in die Datenbank hineinschreiben (s.o.).

Ansonsten sind die Infos viel zu schmalbrüstig, um ggf. ein besseres Konzept vorzuschlagen.


2.

hm...
Danke!

Ich wollte es mit Replace machen und zwar so:
Code:                   In Zwischenablage kopieren (nur IE)
4">

Leider tut sich da gar nix!
Wenn ich aber mit ereg abfrage, ob die "$feld_editable" existiert, bekomme ich eine positive Meldung.
Hier der Code mit dem ich das abfrage:
Code:                   In Zwischenablage kopieren (nur IE)
5">

Mit preg_replace() bekomme ich diese Fehlermeldung:
Code:                   In Zwischenablage kopieren (nur IE)
6">

Vielleicht irgendwas mit regulären Ausdrücken.

und bei ereg_replace() tut sich auch nix!

Ich hatte schon versucht <? echo $feld_editable ?> in die DB zu schreiben.
Funktioniert aber auch nicht...

Mehr Info zum Projekt:
Die Tabelle editoptions sieht so aus:
id | anzeige | code
Hier werden die Formular-Felder oder Einträe definiert.
z.B. textfeld, textarea, automatisches Datum

Diese werden durch die tabelle editable mit den Feldern aller Tabellen verknüpft
Die Tabelle editable sieht so aus:
id | tabelle | feld | art
Sinn der Tabelle:
Hier wird eingetragen welches Formular-feld für welches Datenbankfeld im Backend-Bereich ausgegeben wird bzw. welcher Wert für in diesem Feld in die Datenbank eingetragen werden soll.

Beispielinhalt der Tabellen:
editoptions
id | anzeige | code
1 | nicht zu bearbeiten | | (z.B. für primary_key)
2 | textfeld | <input type="text" name="$feld_editable" /> |

id | tabelle | feld | art |
1 | user | id | 1 |
2 | user | name | 2 |

Helfen dir diese Infos?


3.

So, ich bin zu einem Ergebnis gekommen.
Die Ersetztung funktioniert, ich z.B. folgendes in die Datenbank schreibe
Code:                   In Zwischenablage kopieren (nur IE)
7">

und das dann ersetze:
Code:                   In Zwischenablage kopieren (nur IE)
8">

Hat Mysql irgendwelche Problem mit "$"-Zeichen?

Ich glaub jetzt hab ich alles verstanden.


4.

nein, aber wenn du
Code:                   In Zwischenablage kopieren (nur IE)
9">

schreibst, dann wird nicht nach dem namen $feld_editable gesucht, sondern nach dem variableninhalt von $feld_editable.
wie wärs mit:
Code:                   In Zwischenablage kopieren (nur IE)
10">




5.

Ups, ich wusste gar nicht, dass es da einen unterschied zwischen den Anführungszeichen gibt.
Wieder was gelernt!

Okay, ich versuche gerade das zu verallgemeinern.
d.h. dass ich nicht für jede Ersetzung eine eigene Zeile brauche.

Ich habe jetzt z.B. ein hidden-field, in dem der aktuelle Timestamp stehen soll.
Code:                   In Zwischenablage kopieren (nur IE)
11">

Wenn ich "[eval]time()[/eval]" jetzt durch eval("echo time()") ersetzen will
Wie mach ich das? Würde das überhaupt was bringen?

So geht es schonmal nicht:
Code:                   In Zwischenablage kopieren (nur IE)
12">

Ich hab immer probleme mit diesen dummen regulären ausdrücken bei ereg-Funktionen.
Kann mir bitte jemand helfen?
Ich steh wirklich unter Zeitdruck!

Danke!


Hier gehts zum Orginal Eintrag "Variablen in Datenbank" im Forum
 
phpforum.de | Impressum