Seite 1 von 1

[erledigt]smilies parsen

Verfasst: 27.08.2007 19:07
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

Verfasst: 27.08.2007 19:53
von Pyramide
Tabelle leer? SQL-Fehlermeldung? Mal [php:echo] oder [php:print_r] Aufrufe in die Funktion eingefügt?

Verfasst: 27.08.2007 20:33
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...

Verfasst: 27.08.2007 22:23
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).

Verfasst: 27.08.2007 22:33
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