PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Text & Variable aus Datenbank auslesen und ausgeben


Don Stefano
28.09.2005, 19:41:55
Hallo zusammen,

ich habe ein Problem, von dem ich nicht mal weiß, ob es zu lösen ist:

Ich habe in einer MySQL Datenbank eine Tabelle mit verschiedenen Texten, die unter bestimmten Bedingungen ausgelesen und am Bildschirm angezeigt werden.

Nun soll dieser Text mittendrin auch den Wert einer Variable ausgeben:

Bsp: Der Text könnte lauten:

"Herzlichen Glückwunsch. Sie haben 8 Aufgaben richtig gelöst."

Nur kennt der Datenbanktext den Wert "8" nicht, da dieser erst in einem Skript berechnet wird. Mal angenommen die Variable, die diesen Wert enthält lautet $wert.

Nun hätte ich gerne den Text in der Datenbank etwa wie folgt:

""Herzlichen Glückwunsch. Sie haben $wert Aufgaben richtig gelöst."

so dass dann beim auslesen und anzeigen auf dem Bildschirm

"Herzlichen Glückwunsch. Sie haben 8 Aufgaben richtig gelöst."

erscheint.

Das Feld in der Datenbank ist als "text" definiert. Ausgelesen und ausgegeben wird der Text mit :

...
$row = mysql_fetch_object($result);
$text = $row->$text;

echo '
<div class="box3"> //CSS
<p>'.$text.'</p>
</div>';

Alle erdenklichen Arten die Variable $wert dabei zu berücksichtigen scheitern leider. Egal ob ich "Sie haben $wert Aufgaben", "Sie haben .$wert. Aufgaben" oder "Sie haben ':$wert.' Aufgaben" in die Tabelle schreibe, die Ausgabe lautet dann entsprechend:

"Herzlichen Glückwunsch. Sie haben .$wert. Aufgaben richtig gelöst."

Was mache ich falsch? Wie muss die Variable in der Datenbank stehen? Oder ist das Ganze etwa gar nicht möglich?

Vielen Dank für jede Hilfe

Valentin
28.09.2005, 19:47:02
Hallo,
du must die PHP befehle ausführen in dem Text http://de2.php.net/manual/en/function.eval.php .... was allerdings schlecht ist, da man dann alle möglichen PHP befehle ausführen kann .... du kannst auch es mit print ausgeben und es so machen
print($text,$wert);

Wobei der Text nicht "Herzlichen Glückwunsch. Sie haben .$wert. Aufgaben richtig gelöst." heißen sollte, sondern "Herzlichen Glückwunsch. Sie haben %d Aufgaben richtig gelöst."

MfG
Valentin

Serp
28.09.2005, 20:18:59
Mit print kommst du da aber nicht sonderlich weit, was du meinst ist denk ich eher printf().

Valentin
28.09.2005, 20:41:34
Ich war mir nicht mehr ganz sicher ob es print() oder printf() war, da ich es selten benutze, danke für die Korrektur ;)

MfG
Valentin

xabbuh
28.09.2005, 21:09:44
Der andere Weg wäre mit str_replace() (http://www.php.net/str_replace) oder regulären Ausdrücken (http://www.php.net/pcre) bestimmte Teile aus dem Text durch andere Werte zu ersetzen.

Don Stefano
29.09.2005, 00:13:58
Danke, jetzt weiß ich schon mal wonach ich gucken muss und kann etwas herumprobieren.

Melde mich später wieder, wenn ich es hinbekommen habe.

Don Stefano
29.09.2005, 00:47:18
Folgendermaßen funktioniert es mit strg_replace:

$wert = 8; // Anzahl der richten Antworten (kann z.B. errechnet werden)

$loesung = "Sie haben %Platzhalter% Aufgaben richtig gelöst"; (der ausgelesene Text aus der Datenbank)

$loesung = str_replace("%Platzhalter%", $wert, $loesung);

echo $loesung; // gibt "Sie haben 8 Aufgaben richtig gelöst" aus

Ich muss allerdings dazu sagen, dass mir dabei jemand in einem anderen Forum noch geholfen hat. Die Ausführungen dazu unter strg_replace (http://de3.php.net/str_replace) hätte ich wohl alleine (als Autodidakt) nicht so leicht nachvollzogen.