Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
elite Mitglied
Angemeldet: 20.07.2004 Beiträge: 1005
Interessen: Coding, DLRG, Radsport
|
Verfasst am: 04.02.2006, 00:51 Titel:
Smiley-Funktion (PHP+mySQL) |
|
|
|
|
Weil ich grad nochmal ein wenig herumgefummelt hab an meiner Smiley-Funktion dachte ich mir, dass ich das ganze mal hier reinstelle weil alle bisherigen Smiley-Sachen auf bestimmte Smileys begrenzt waren.
Ich mach das so, dass ich die Smileys in ner mySQL Datenbank mit den Feldern smiley_id , code und picture speicher.
Die smiley_id is mit auto_increment belegt. Nun aber zum PHP-Teil.
Zuerst die ganze Funktion - danach erläuter ich ein paar Sachen dazu.
Code: |
function smiley_replace($message){
$res_arr = array();
$query = "SELECT * FROM tabelle_smileys";
$result = mysql_query($query);
$count = mysql_num_rows($result);
while ($row = mysql_fetch_array($result)) {
$res_arr[] = $row;
}
for($i=0;$i<$count;$i++){
$message = str_replace(":".$res_arr[$i]['code'].":","<img src='images/icons/smileys/icon_".$res_arr[$i]['picture'].".gif'>",$message);
}
return $message;
}
|
Zuerst wird die Funktion initialisiert und die Variable $message festgelegt.
Dann wird ein neues Arrray $res_arr erstellt. Danach kommt der mySQL-Query. In der Variable count wird die aktuelle Anzahl der Datensätze = Smilies festgelegt.
Danach wird der ganze Inhalt der Abfrage in das vorher erstellte Array $res_arr geladen.
Danach folgt eine for-Schleife, die so lange ausgeführt wird, bis alle Smileys - deren Anzahl vorher festgelegt wurde durch mysql_num_rows - abgearbeitet wurden.
In der Schleife wird dann mit str_replace() für jedes Array-Element der Code durch das entsprechende Bild in der Variable $message ( die ja bei der Deklaration der Variable festgelegt wurde ) ersetzt.
Ich gehe jetzt davon aus, dass die Smileys in der Form :smileycode: in der Datenbank ( z.B. im Gästebucheintrag ) gespeichert sind.
Der Pfad zu den Smileys ist natürlich relativ. Meine Smileys beginnen alle mit "icon_", deshalb ist das noch mit in der replace-Funktion.
Danach wird mit return die Variable $message zurückgegeben ( http://de.php.net/return ).
Ja das wars auch schon.
Am besten speichert ihr das ganze in ner php-Datei, included das in eure Seite.
Der Aufruf erfolgt dann mit Code: | smiley_replace($searchtext) | wobei searchtext den zu durchsuchenden Text meint.
Vorteil an der Sache ist halt, dass ihr die Smileys in ner Datenbank speichert und so immer wieder welche - z.B. per CMS - hinzufügen könnt, die dann auch sofort auf der Page ersetzt werden.
Nochmal zum Schluß zum Aufbau (meiner) mySQL-Smiley-Tabelle:
smiley_id - da speicher ich die id drin ( auto_increment )
code - ist der Code, der ins Textfeld eingefügt werden muss ( ohne die 2 Doppelpunkte, die den Code einrahmen - die füge ich später beim Textfeld-Input hinzu )
picture - da wird der Dateiname ohne Endung gespeichert. Z.b. einfach "lol" oder "rofl"
So das wars - ich hoffe ihr könnt es mal gebrauchen, wenn ihr es sowieso schon nicht so macht |
|
Nach oben |
|
|
Yada Mitglied
Angemeldet: 08.06.2004 Beiträge: 267
Interessen: zuviel
|
Verfasst am: 04.02.2006, 12:16 Titel:
|
|
|
|
|
So eine Variante kenn ich gar nicht xD ... Mach das immer anders - wenn ich meinen BBCode selbst schreibe (was ich eigentlich nicht so wirklich gut kann )...
regards, me |
|
Nach oben |
|
|
elite Mitglied
Angemeldet: 20.07.2004 Beiträge: 1005
Interessen: Coding, DLRG, Radsport
|
Verfasst am: 04.02.2006, 13:30 Titel:
|
|
|
|
|
Nunja ich baue für mein CMS derzeit nen Smiley-Modul, damit man Smileys hinzufügen kann die dann auch direkt in der Page bereitstehen und auch dann sofort ersetzt werden.
Ist in meinen Augen komfortabler als wenn man immer die Ausgabe-Datei der News oder so öffnen muss und nen str_replace von Hand hinzufügen muss. |
|
Nach oben |
|
|
Yada Mitglied
Angemeldet: 08.06.2004 Beiträge: 267
Interessen: zuviel
|
Verfasst am: 04.02.2006, 19:06 Titel:
|
|
|
|
|
Code: | function bbcode($value) {
// hier könnte ein bbcode sein...
// und hier ihre werbung oO
$result = $mysql->query("SELECT * FROM `smileys`");
while($row = $mysql->fetchArray($result)) {
$return = str_replace($row['code'],"images/smilies/".$row['image'],$value);
}
return $return;
} |
Ist doch viel einfacher, oder nicht? (weiß es selbst nich genau - ich hasse es jegliche Arten von BBCodes oder so zu schreiben ^^) |
|
Nach oben |
|
|
rey Mitglied
Angemeldet: 24.07.2004 Beiträge: 810 Wohnort: Bad Homburg Interessen: synth ;)
|
Verfasst am: 04.02.2006, 21:53 Titel:
|
|
|
|
|
Ich würde diese Funktion mit Sicherheit nicht bbcode nennen. |
|
Nach oben |
|
|
Alien Mitglied
Angemeldet: 07.07.2005 Beiträge: 38 Wohnort: Oyten C!tY ;) Interessen: Dies und Das
|
Verfasst am: 25.05.2006, 16:20 Titel:
|
|
|
|
|
Ich würde es noch besser finden, wenn man eine komplette klasse schreiben würde und diese dann komplet die üblichen funktionen ünterstützen würde... dabei denke ich an; Smilies, B, I, U,.... keine ahnung was noch
weil jetzt muss du ja den text
"smiley_replace(rest_replace($text);"
aufrufen oder irre ich? |
|
Nach oben |
|
|
elite Mitglied
Angemeldet: 20.07.2004 Beiträge: 1005
Interessen: Coding, DLRG, Radsport
|
Verfasst am: 26.05.2006, 10:54 Titel:
|
|
|
|
|
Mit Klassen habe ich mich zu dem damaligen Zeitpunkt noch nicht beschäftigt. Hab auch noch ne Funktion für BB-Code geschrieben, die kann ich ja bei Bedarf auch mal hier posten!
Aufrufen musst du die Funktion mit smiley_replace($textwodrinersetztwird); |
|
Nach oben |
|
|
Alien Mitglied
Angemeldet: 07.07.2005 Beiträge: 38 Wohnort: Oyten C!tY ;) Interessen: Dies und Das
|
Verfasst am: 26.05.2006, 13:29 Titel:
|
|
|
|
|
Ja das war mir klar wies aufgerufen wird dachte nur das es bissi umständlich ist alles getrennt zu machen... also smiley-kram und B U I ...
deswegen hab ich nachgefragt |
|
Nach oben |
|
|
Impi Mitglied
Angemeldet: 06.05.2006 Beiträge: 530
|
Verfasst am: 26.05.2006, 13:37 Titel:
|
|
|
|
|
elite hat folgendes geschrieben: | Nunja ich baue für mein CMS derzeit nen Smiley-Modul |
Und auch nur dafür ist diese Variante vorteilhaft bzw. das einzig Wahre .
Gut gemacht, hab nichts zu bemängeln! ( Bin aber auch nur drüber geflogen ) |
|
Nach oben |
|
|
vercci Mitglied
Angemeldet: 10.04.2019 Beiträge: 436162
|
|
Nach oben |
|
|
vercci Mitglied
Angemeldet: 10.04.2019 Beiträge: 436162
|
|
Nach oben |
|
|
vercci Mitglied
Angemeldet: 10.04.2019 Beiträge: 436162
|
|
Nach oben |
|
|
vercci Mitglied
Angemeldet: 10.04.2019 Beiträge: 436162
|
|
Nach oben |
|
|
vercci Mitglied
Angemeldet: 10.04.2019 Beiträge: 436162
|
|
Nach oben |
|
|
|