kostenloser Webspace werbefrei: lima-city


BBCode - Smilie dynamisch aus Datenbank

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    c*********n

    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.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    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
    <img>
    -Tag aus der Pfadangabe zu bauen …«
  4. Autor dieses Themas

    c*********n

    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;
    				
    		}
  5. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Hast du die Ausgabe von Fehlermeldungen aktiviert? (siehe hier)

    Aber auch sonst hast du noch Fehler in deinem Script … außerdem: warum machst du
    "".$variable.""
    statt einfach nur
    $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:
    "".$variable.""
    -Zeug um das lesbar zu machen und beim
    src
    -Attribut des Bildes die fehlenden Anführungszeichen.

    Wenn du die Ausgabe von Fehlermeldungen aktivierst findest du eventuell noch weitere Fehler, die zum Abbruch der Scriptausführung führen …
  6. Autor dieses Themas

    c*********n

    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
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!