PHP-Variable in Tabellenzelle

So sollte es doch funktionieren:
PHP:
//Dies holst du aus der Datenbank
$link = "<a href='{self}?id=5'>Linktext</a>";

//Hier wird der Platzhalter ersetzt
$link=str_replace("{self}",basename($_SERVER['PHP_SELF']),$link);

//Hier kannstes denn anzeigen...
echo $link;
 
Da bin ich wieder. KoMtuR hat versucht, mir die ganze Sache zu erklären - vielen Dank erstmal dafür! :) Nur geholfen hat's leider nichts, ich verstehe immer noch Bahnhof... :(

Es ist eben so, dass neben dem Dateinamen noch etliche weitere Variablen hinzukommen und ich diese eigentlich lieber direkt im jeweiligen Feld in der DB definieren würde als unzählige str_replace's zu verwenden.

Folgenden Code hab ich in der Datenbank drin:
PHP:
<a href='" . $_SERVER['PHP_SELF'] . "?id=5'>Linktext</a>
Im Quelltext steht folgendes:
PHP:
eval("\$value = \"\$value\";");
echo $value;
Nur steht nachher im Quelltext der Seite immer noch folgendes:
PHP:
<a href='" . $_SERVER['PHP_SELF'] . ?id=5'>Linktext</a>
Langsam komme ich mir vor wie der grösste Depp. Kann mir mal jemand ein funktionierendes Beispiel geben? Also Text in der DB und entsprechende Stelle im Code? Wäre echt super. Auch für eine Erklärung, wie das blöde [phpf]eval[/phpf] überhaupt funktioniert, wäre ich sehr dankbar.

MfG

SilentWarrior (verzweifelt langsam)
 
Oh! Äh... danke! :)

(Verdammt, ist das peinlich... :()

/edit: So, gleich die nächste Frage. Es funktioniert jetzt, danke _voodoo! (Manchmal sieht man den Baum vor lauter Wäldern nicht. :)) Aber: In der DB steht jetzt folgender Code (der Backslash vor dem ersten Anführungszeichen wurde vom Forum entfernt):
PHP:
<a href=\"" . $_SERVER['PHP_SELF'] . "?id=1\">News</a><br />
<a href=\"" . $_SERVER['PHP_SELF'] . "?id=2\">Newsarchiv</a>
Und meine [phpf]eval[/phpf]-Zeile sieht folgendermassen aus:
PHP:
eval ("\$value = \"$value\";");
Das klappt wie gesagt auch wunderbar. Mir gefallen aber diese ganzen \" nicht - lieber wäre es mir, wenn ich mit Apostrophen (') arbeiten könnte. So habe ich es probiert:
PHP:
<a href="' . basename($_SERVER['PHP_SELF']) . '?id=1">News</a><br />
<a href="' . basename($_SERVER['PHP_SELF']) . '?id=2">Newsarchiv</a>
Das funktioniert aber nicht, auch nicht, wenn ich die [phpf]eval[/phpf]-Zeile wie folgt ändere:
PHP:
eval ('$value = "' . $value . '";');
Kann mir jemand helfen? Vermutlich brauche ich wieder nur so einen kleinen Hinweis wie den von _voodoo, aber ich komme irgendwie nicht drauf. Diese Fehlermeldung erscheint:
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in /usr/export/www/vhosts/funnetwork/hosting/silentwarrior/index.php(39) : eval()'d code on line 1
Viel anfangen kann ich damit leider nicht, ich habe nämlich keine Ahnung, was ein "encapsed string" sein soll.
 
Zuletzt bearbeitet:
Hi!

Die Fehlermeldung ist jetzt verschwunden - das ist auf jeden Fall schonmal ein gutes Zeichen. :) Allerdings werden die Links immer noch so angezeigt:
PHP:
'%20.%20basename($_SERVER%5B'PHP_SELF'%5D)%20.%20'?id=1
Eigentlich sollte es ja so sein:
PHP:
index.php?id=1
Irgendwie scheint MySQL Probleme mit den einfachen Anführunsgzeichen zu haben... :( Vielleicht noch irgendwelche weiteren Vorschläge?

Danke, KoMtuR! :)
 
versuch das mal
PHP:
$FILE_SELF = basename($_SERVER['PHP_SELF']); 

//Sachen aus der DB ausgelesen und in $ausgabe speicerhn
//werd den code mal nicht aufführen

eval ('$value = "$value";');

In der Tabelle musst du es so speichern:
PHP:
"<a href='$FILE_SELF?id=5'>Linktext</a>"

also :)
PHP:
<a href="$FILE_SELF?id=1">News</a><br /> 
<a href="$FILE_SELF?id=2">Newsarchiv</a>
 
Zuletzt bearbeitet:
Hm das kann schon sein, dass das so funktioniert (ich hab's nicht mal ausprobiert - *schäm* :-(), aber die Sache hat einen Haken: Ich werde mit der Zeit noch viel mehr PHP-Code in der Datenbank haben, den kann ich dann nicht immer einfach in Variablen speichern wie in diesem Fall. Daher müsste es eine Lösung sein, die auch ohne Umwege den richtigen Link anzeigt. Aber trotzdem danke! :)
 
Zurück