Smilie Formular Filter Script - denkfehler ?

than

Mitglied
Guten Mittag.

Ich habe ein simples Formular gebastelt wo man Smilies in eine Textarea schreiben kann. Die Smilies werden aus ner mysql DB gelesen.
Wenn man auf VORSCHAU klickt wird der Smilie Code (z.b. :-)) ind <img src="..." border='0'> umgewandelt.
Klickt man nun auf KORRIGIEREN so kommt das Formular wieder und <img src="..." border='0'> soll nun wieder in :-) umgewandelt werden, was es aber nicht macht sondern den <img...> Code ausgiebt.
Ein bisschen Code ist nie schlecht.

Vorschau Code:
PHP:
$ssql = mysql_query("SELECT * FROM ".$prefix."smilies ORDER BY id DESC");
while($smiliewert2 = mysql_fetch_assoc($ssql))
{
if(strstr($_POST['eintrag'], $smiliewert2['code']))
{
$_POST['eintrag'] = ereg_replace("(".$smiliewert2['code'].")", "<img src='../smilies/".$smiliewert2['bild']."' border='0'>", $_POST['eintrag']);
}
}

Korrigieren Code:
PHP:
$ssql = mysql_query("SELECT * FROM ".$prefix."smilies ORDER BY id DESC");
while($smiliewert2 = mysql_fetch_assoc($ssql))
{
if(strstr($_POST['eintrag'], "<img src='../smilies/".$smiliewert2['bild']."' border='0'>"))
{
$_POST['eintrag'] = ereg_replace("(<img src='../smilies/".$smiliewert2['bild']."' border='0'>)", $smiliewert2['code'], $_POST['eintrag']);
}
}

Habe ich einen Denkfehler?
 
Probiers mal mit str_replace anstatt ereg_replace. Denn es könnte sein, dass du Sonderzeichen in den Smileys hast, die escaped werden müssen.

Mit freundlichem Gruß
der_maiki
 
Ich habe etwas weiter geforscht. Das ereg_replace habe ich zwar mit str_replace ausgetauscht, aber daran liegt der Fehler nicht.
Das Problem liegt an der (korrigier) while Schleife. Wenn ich
Code:
//while($smiliewert2=mysql_fetch_assoc($ssql))
//{
if(strstr($_POST'eintrag'],"<img src='../smilies/".$smiliewert2'bild']."' border='0'>"))
{
$_POST'eintrag']=str_replace("<img src='../smilies/".$smiliewert2'bild']."' border='0'>",$smiliewert2'code'],$_POST'eintrag']);
}
//}
austausche gegen

Code:
//while($smiliewert2=mysql_fetch_assoc($ssql))
//{ 
if(strstr($_POST'eintrag'],"<img src='../smilies/dead.gif."' border='0'>"))
{
$_POST'eintrag']=str_replace("<img src='../smilies/dead.gif' border='0'>","x(",$_POST'eintrag']);
}
//}
dann wird der <img...> Tag in x( umgewandelt (wie es auch soll).
mysql_fetch_assoc() ist womöglich nicht der richtige Wert.
 
Also mysql_fetch_assoc ist schon korrekt
http://ch2.php.net/mysql_fetch_assoc

PHP:
while($smiliewert2=mysql_fetch_assoc($ssql))
{
echo "=> " . $smiliewert2['bild'] . "<br>";
if(strstr($_POST['eintrag'],"<img src='../smilies/".$smiliewert2['bild']."' border='0'>"))
{
$_POST['eintrag']=str_replace("<img src='../smilies/".$smiliewert2['bild']."' border='0'>",$smiliewert2['code'],$_POST['eintrag']);
}
}

Gib mal das $smiliewert2['bild'] aus. Dann siehst du ob dort das richtige drinsteht oder nicht

MFG
redX
 
Von wegen Denkfehler: Ja, ich hab das Gefühl, du machst da was grundsätzlich falsch. Du solltest den Text erst, wenn er angezeigt wird, mit Smileys füllen. Dann treten auch keine Probleme von wegen Rückumwandlung auf.
 
Zurück