[erledigt]smilies parsen

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
Ambience
Mitglied
Beiträge: 628
Registriert: 02.09.2006 11:28
Wohnort: daheim
Kontaktdaten:

[erledigt]smilies parsen

Beitrag von Ambience »

Hallo,

ich hoffe jemand von euch kann mir helfen..

folgende funktion wird zwar ausgeführt, aber ersetzt mir meine smilies nicht...

Code: Alles auswählen

public function replaceSmilies($message)
  {
    global $db;
    
    $sql = 'SELECT `code`, `emoticon`, `url`, `width`, `height`
      FROM ' . SMILIES_TABLE;
    
    $result = $db->query($sql);
    while ($row = $db->fetch_assoc($result))
    {
      $message = str_replace($row['code'], 'SMILIE', $message);
    }  
    
    return $message;
  }  
aufruf:

Code: Alles auswählen

$xml .= '<text>' . htmlspecialchars($this->replaceSmilies($message_array['message'])) . '</text>';  
also aufgerufen wird die funktion, sie ersetzt aber keinen smilie...

Ambience
Zuletzt geändert von Ambience am 27.08.2007 22:47, insgesamt 1-mal geändert.
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Tabelle leer? SQL-Fehlermeldung? Mal [php:echo] oder [php:print_r] Aufrufe in die Funktion eingefügt?
KB:knigge
Benutzeravatar
Ambience
Mitglied
Beiträge: 628
Registriert: 02.09.2006 11:28
Wohnort: daheim
Kontaktdaten:

Beitrag von Ambience »

fehlermeldung gibt es nicht, echo gibt garnix aus... datenbank ist auch korrekt gefüllt, da ich smilies vorher ja schoneinmal auslese... wenn ich direkt:

Code: Alles auswählen

str_replace(':cry:', 'SMILIE', $text)
funktioniert es auch nicht.. das heißt, irgendwie erkennt diese funktion das :cry: bzw. die smilies überhauptnicht...

:-( ganzen tag komm ich schon nicht auf den fehler...

so hab nun rausbekommen, das die abfrage keine ergebnisse liefert.. warum auch immer:

Code: Alles auswählen

 public function getSmilies()
  {
    global $db;
    
    $sql = 'SELECT `code`, `emoticon`, `url`, `width`, `height`
      FROM ' . SMILIES_TABLE;
    
    $result = $db->query($sql);
    
    $smilie = '';
    while ($row = $db->fetch_assoc($result))
    {
      $smilie .= '<img src="smilies/' . $row['url'] . '" width="' . $row['width'] . '" height="' . $row['height'] . '" alt="' . $row['emoticon'] . '" onClick="document.getElementById(\'txt_message\').value += \' ' . $row['code'] . ' \';document.getElementById(\'txt_message\').focus();" /> ';
    }
    
    return $smilie;
  }
  
  public function replaceSmilies($message)
  {
    global $db;
    
    $sql = 'SELECT `code`, `emoticon`, `url`, `width`, `height`
      FROM ' . SMILIES_TABLE;
      
    $result = $db->query($sql);
    
    while ($row2 = $db->fetch_assoc($result))
    {
      $message = str_replace($row2['code'], 'SMILIE', $message);
    }
    return $message . ' .' . $row2['code'];
  }
erste funktion liest smilies aus, funktioniert auch.. die 2te, welche die codes dann wieder in bilder ersetzen soll funktioniert einfach nicht.. warum auch immer...
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Im Prinzip hast du immer noch nicht genau beschrieben was passiert und was stattdessen passieren sollte. Du hast die beiden Funktionen z.b. nicht miteinander verknüpft, d.h. die erste Funktion wird in der zweiten gar nicht genutzt, außerdem verkettest du in der ersten Funktion alle Smilies in einem String was ich nicht unbedingt für förderlich halte. Hat es einen besonderen Sinn, dass du ganz am Ende an $message noch mal $row['code'] anhängst? Da wird nicht viel zu finden sein, schließlich läuft die Schleife vorher so lange immer weiter bis da nichts mehr drin steht (->array wird false).
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
Ambience
Mitglied
Beiträge: 628
Registriert: 02.09.2006 11:28
Wohnort: daheim
Kontaktdaten:

Beitrag von Ambience »

es hatte einen sinn, weil ich versucht habe zu debuggen..

Ehm.. ja nur tatsache war, das erste funktion funktioniert hat und 2te nicht..und nur ein str_replace drinne stand... nunja, ich hau mir nun selbst die hände über den kopf zusammen.. Man sollte halt die constants.php einbinden.. xD

also: erledigt...


Ambience
Antworten

Zurück zu „Coding & Technik“