PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Konstante wird nicht korrekt aus der DB gefischt


Odi
20.03.2003, 22:26:50
Nachdem ich mich nun eine ganze Zeit im MySQL und PHP Handbuch rumgetrieben habe, aber immernoch keine Lösung habe, wende ich mich (mal wieder ;) ) hilfesuchend an euch.

Mein Problem:
Ich habe via define eine Konstante definiert ( define("_ADMINSYSTEM", "Systenadministration"); ). Soweit kein Problem, wenn ich innerhalb der Funktion echo "_ADMINSYSTEM = "._ADMINSYSTEM.""; nutze kommt auch das raus was ich erwarte und erwünsche, wenn ich aber via db-klasse-fetch_row den string aus der Datenbank hole und ausgebe erhalte ich nur _ADMINSYSTEM - egal was ich tue *seufz*

|Coding
21.03.2003, 07:01:15
hast du die ausgabe vielleicht in einfache hochkommas geschrieben? ( ' ) dann gehts nicht. muss schon " oder ganz ohne.

Odi
21.03.2003, 12:41:36
$result=$db->query("SELECT name, custom_name FROM ".$prefix."_modules WHERE mid_sub=2 ORDER BY name");
while(list($name, $custom_name)=$db->frow($result)) {
echo $custom_name; // ist nur eine Testausgabe umzusehen ob die Konstante richtig umgewandelt wird.
if($current_module==$name)
$smarty->assign('img', "arrow_sel");
else
$smarty->assign('img', "arrow");
$smarty->assign('link', "modules.php?name=$name");
$smarty->assign('name', "".$custom_name."");
$smarty->display('admin_nav.tpl');
if($current_module==$name)
admin_nav_links($name, $smarty);
}


Hier ist der entsprechende code :-)

Odi
22.03.2003, 22:49:14
hmm, bisher keine Lösung gefunden - sowas demotiviert ungemein *seufz* Ich glaube ich werde mich morgen mal dazu überwinden die halbfertige Version auf den Server zu packen und mal auf einem LAMP zu testen... mal schaun, liegt villeicht nur an mir *hoff*

|Coding
22.03.2003, 23:55:19
hmm, ich kann mir da auch keinen drauf reihmen. morgen ist ein neuer tag ;-)

Odi
23.03.2003, 13:39:43
Jetzt bring ich hier schon 2 Sachen durcheinander x_X Also, constant gibt nicht true/false zurück sondern den Wert der Konstante - *seufz* hätte nicht die ganze Nacht daran sitzen sollen.

das LAMP-System hat die gleiche "Macke", bzw tut nicht das was ich will ;-) Ich denke dass mysql_fetch_row oder list mir meinen Variableninhalt von $costum_name irgendwie umwandelt, da

constant('_ADMINSYSTEM');


das zurück gibt was ich erwarte, aber wenn ich $custom_name aus der Datenbank einsetze (natürlich in " ") gibt er mir _ADMINSYSTEM zurück....

Speichert MySQL den Sting _ADMINSYSTEM in einem anderen Format in einer varchar-spalte oder gibt mysql_fetch_row den String verändert wieder?

|Coding
23.03.2003, 13:56:30
hmm, vielleicht suchen wir am falschen ende, kann ja sein, das die klasse nicht korrekt arbeitet...

Odi
24.03.2003, 00:53:02
OMG! ICH HABS ICH HABS!! *spring* Nach 3 Tagen grübeln... *fre freu freu* (ich freu mich jetzt wie ein kleines Kind ;-) Hach, ist das ein herliches Gefühl wenn man ein Problem gelöst hat *g*)

Ich habs jetzt folgendermaßen gelöst:
Statt _ADMINSYSTEM wird return ""._ADMINSYSTEM.""; in der DB aufbewahrt und ein eval ausgeführt um den lokalisierten String auszugeben. Ja, damit lässt sich sicherlich Unfug betreiben, aber a) ist das Feld auf 40 Zeichen begrenzt und b) sollte sowieso niemand darauf Zugriff bekommen, und wer seine Module die er später einmal installiert nicht kurz kontrolliert bzw. Module aus zwielichten Stellen saugt und installiert ist selber Schuld ;-)