BBCode - Smilie dynamisch aus Datenbank
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aktiviert url
attribut
aufruf
ausgabe
besten realisieren
bild
code
fehler
fehlermeldung
folgende funktion
funktion
geschweiften klammern
glaskugel
message
re
tag
text
tun
url
variable code
-
Hey Leute,
tag/re">ref="/tag/folgende funktion">folgende Funktion filtert den ausgelesen Text und ersetzt die "Wörter" mit den Smilies.
function getBBCode($entry) { $entry = str_replace(':D', '<img src="img/smilies/laugh.gif" alt=":D" />', $entry); $entry = str_replace(';)', '<img src="img/smilies/zwinker.gif" alt=":)" />', $entry); return $entry; }
Allerdings würde ich dies gerne dynamisch machen, sprich:
Später im Adminpanel kann man die Smileys verwalten (Hinzufügen, editieren und löschen). Wie kann ich dies am besten realisieren ? Hab es schon folgender masen versucht, allerdings ohne Erfolg:
function getSmilieToHTML($text) { global $dbpraefix; global $connection; echo $text; $res = mysqli_query($connection, "SELECT * FROM `".$dbpraefix."smilies`"); while($obj = mysqli_fetch_object($res)) { $text = str_replace("".$obj->value."", "".$obj->path."", $text); } return $text; }
Allerdings funktioniert diese Variante auch nicht. (Die obere ebenso nicht, komischerweise.)
echo '<p class="gb_eintrag">'.$this->getBBCode($obj->message).'</p>';
Ich hoffe jemand von euch könnte mir weiterhelfen. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Was bedeutet denn »funktioniert nicht«? Man müsste zumindest wissen, wie deine Tabelle mit Daten befüllt wurde und was die Funktion für Ergebnis produziert …
Die Glaskugel sagt derzeit: »Der Spaltenname »path« lässt vermuten, dass du vergisst ein
-Tag aus der Pfadangabe zu bauen …«<img>
-
Hey,
value = den Smiley"code" bsp: ";)"
path = der relative Pfad zum Smiley
Wenn ich nun
echo '<p class="gb_eintrag">'.$this->getSmilieToHTML($obj->message).'</p>';
Aufrufe, bricht die Seite einfach ab mit laden.
Die Funktion dafür sieht nun so aus:
function getSmilieToHTML($text) { global $dbpraefix; global $connection; var_dump($text); $res = mysqli_query($connection, "SELECT * FROM `".$dbpraefix."smilies`"); while($obj = mysqli_fetch_object($res)) { $text = str_replace("".$obj->value."", "<img src=".$obj->path." alt=\":D\" />", $text); } return $text; }
-
Hast du die Ausgabe von Fehlermeldungen aktiviert? (siehe hier)
Aber auch sonst hast du noch Fehler in deinem Script … außerdem: warum machst du
statt einfach nur"".$variable.""
?$variable
Also sollte es wohl so aussehen:function getSmilieToHTML($text) { global $dbpraefix; global $connection; $result = mysqli_query($connection, "SELECT value, path FROM `{$dbpraefix}smilies`"); while($row = mysqli_fetch_object($result)) { $text = str_replace($row->value, "<img src=\"{$row->path}\" alt=\"{$row->value}\" />", $text); } return $text; }
Was ich ausgebessert habe:
-Zeug um das lesbar zu machen und beim"".$variable.""
-Attribut des Bildes die fehlenden Anführungszeichen.src
Wenn du die Ausgabe von Fehlermeldungen aktivierst findest du eventuell noch weitere Fehler, die zum Abbruch der Scriptausführung führen … -
Also das Problem hat sich erledigt, es funktioniert jetzt alles wie es soll -> klick
Was ich ausgebessert habe: "".$variable.""-Zeug um das lesbar zu machen und beim src-Attribut des Bildes die fehlenden Anführungszeichen.
Fast überall wird dies doch so umgesetzt? Wenn ich nur $variable reinschreibe, schreibt er ja auch nur $variable. Mit den geschweiften Klammern wusste ich nicht, dass sowas geht. Danke dafür.
Beitrag zuletzt geändert: 16.9.2014 12:27:32 von cannadesign -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage