Smiliefunktion mit Templates

Hallo,
Ich weiß es gibt schon genügend Themen übber die Smilie-Funktion in PHP, ich hab mir etliche angeschaut und bekomme es immer noch nicht hin.

Ich hab sogar eine extra Test Seite angelegt um zu schauen op der Code stimmt, und da hat das ersetzten von Text zu Bild geklappt, aber sobald ich es dann im GB versuch klappt es nicht. :(

LG Saskia

PHP:
<?php
include("db.php");

$book[text] = str_replace(":)", "<img src=\"Smilies/1.gif\">", $book[text]);

// Eintr&auml;ge werden geladen
$result = mysql_query("SELECT * FROM book ORDER BY id DESC");
$num_rows = mysql_num_rows($result);
// und mit einer while-schleife ausgegeben
while($book = mysql_fetch_array($result))
 {
$N .="<img src=\"Grafiken/line.jpg\">
      <p>
      <table>
      <tr>
      <td class='top'><a href=\"mailto:$book[mail]\">$book[name]</a> (<a href=\"$book[page]\" target=\"_blank\">www</a>) schrieb am $book[datum] um $book[uhr]:</td>
      </tr>
      <tr>
      <td>
      $book[text]<p>
      <i>$book[kommentar]</i>
      </td>
      </tr>
      </table>
      <p>
      \n";
      
       }
      
                  
if(isset(
$_REQUEST['action'])) $action=$_REQUEST['action'];

else $action=eintragen;

// Template laden
function gettemplate($template,$endung='htm')
{
return str_replace("\"","\\\"",implode("",file($template.".".$endung)));
}
function dooutput($template) {
echo $template;
}

if($action==eintragen)
{
eval("dooutput(\"".gettemplate("Templates/gb_eintragen")."\");");

}


if($action==submit)
   {
  
if(isset($_POST['name']))   $name = $_POST['name']; else $name = '';
if(isset($_POST['page']))   $page = $_POST['page']; else $page = '';
if(isset($_POST['mail']))   $mail = $_POST['mail']; else $mail = '';
if(isset($_POST['text']))   $text = $_POST['text']; else $text = '';

// Pr&uuml;fen ob $name, $text & $mail aufgef&uuml;llt sind
if($name==''||$text==''||$mail=='')

{
// Fehlermeldungen
echo"<center>\n";

if($name==''){ echo"<b>Dein Name fehlt!</b><br>\n"; }
if($text==''){ echo"<b>Du hast vergessen einen Eintrag zu schreiben.</b><br>\n"; }
if($mail==''){ echo"<b>Gib bitte deine eMail an.</b><br>\n"; }

  echo"<b><a href=\"javascript:history.back();\">Zur&uuml;ck</a></b>\n</center>";

}
else
{

// Datum & Uhrzeit werden ermittelt
$datum = date('d.m.Y');
$uhr   = time('H:i');

// Daten werden  ins G&auml;stebuch eingetragen
$eintrag = "INSERT INTO book (name, page, mail, text, datum, uhr)
            VALUES ('".addslashes($name)."', '".addslashes($page)."', '".addslashes($mail)."', '".addslashes($text)."', '$datum', '$uhr')";

    $eintragen = mysql_query($eintrag);
    
                  if($eintragen) {
                    echo"<center>\nDeine Nachricht wurde erfolgreich eingetragen!\n</center>";
                } else {
                    echo"<center>\nDeine Nachricht konnte leider nicht eigetragen werden, probiere es bitte erneut.\n</center>";
                }
                
            }
    }
               
?>
 
Dein strreplace wird schon ausgeführt, bevor überhaupt Text aus der DB gelesen wurde. Ich bin den Code nur kurz überflogen, und kann nicht mit Sicherheit sagen, dass das Problem behoben wird, wenn du den strreplace später ausführen lässt, sieht aber stark danach aus.
 
Dein strreplace wird schon ausgeführt, bevor überhaupt Text aus der DB gelesen wurde. Ich bin den Code nur kurz überflogen, und kann nicht mit Sicherheit sagen, dass das Problem behoben wird, wenn du den strreplace später ausführen lässt, sieht aber stark danach aus.
 
Nein, das ist leider auch nicht das Problem, hat sich nichts verändert.

PHP:
<?php
include("db.php");

// Eintr&auml;ge werden geladen
$result = mysql_query("SELECT * FROM book ORDER BY id DESC");
$num_rows = mysql_num_rows($result);
// und mit einer while-schleife ausgegeben
while($book = mysql_fetch_array($result))
 {
$N .="<img src=\"Grafiken/line.jpg\">
      <p>
      <table>
      <tr>
      <td class='top'><a href=\"mailto:$book[mail]\">$book[name]</a> (<a href=\"$book[page]\" target=\"_blank\">www</a>) schrieb am $book[datum] um $book[uhr] :</td>
      </tr>
      <tr>
      <td>
      $book[text]<p>
      <i>$book[kommentar]</i>
      </td>
      </tr>
      </table>
      <p>
      \n";
      
       }

$book[text] = str_replace(":)", "<img src=\"Smilies/1.gif\">", $book[text]);        
                  
if(isset(
$_REQUEST['action'])) $action=$_REQUEST['action'];

else $action=eintragen;

// Template laden
function gettemplate($template,$endung='htm')
{
return str_replace("\"","\\\"",implode("",file($template.".".$endung)));
}
function dooutput($template) {
echo $template;
}

if($action==eintragen)
{
eval("dooutput(\"".gettemplate("Templates/gb_eintragen")."\");");

}


if($action==submit)
   {
  
if(isset($_POST['name']))   $name = $_POST['name']; else $name = '';
if(isset($_POST['page']))   $page = $_POST['page']; else $page = '';
if(isset($_POST['mail']))   $mail = $_POST['mail']; else $mail = '';
if(isset($_POST['text']))   $text = $_POST['text']; else $text = '';

// Pr&uuml;fen ob $name, $text & $mail aufgef&uuml;llt sind
if($name==''||$text==''||$mail=='')

{
// Fehlermeldungen
echo"<center>\n";

if($name==''){ echo"<b>Dein Name fehlt!</b><br>\n"; }
if($text==''){ echo"<b>Du hast vergessen einen Eintrag zu schreiben.</b><br>\n"; }
if($mail==''){ echo"<b>Gib bitte deine eMail an.</b><br>\n"; }

  echo"<b><a href=\"javascript:history.back();\">Zur&uuml;ck</a></b>\n</center>";

}
else
{

// Datum & Uhrzeit werden ermittelt
$datum = date('d.m.Y');
$uhr   = date('H:i');

// Daten werden  ins G&auml;stebuch eingetragen
$eintrag = "INSERT INTO book (name, page, mail, text, datum, uhr)
            VALUES ('".addslashes($name)."', '".addslashes($page)."', '".addslashes($mail)."', '".addslashes($text)."', '$datum', '$uhr')";

    $eintragen = mysql_query($eintrag);
    
                  if($eintragen) {
                    echo"<center>\nDeine Nachricht wurde erfolgreich eingetragen!\n</center>";
                } else {
                    echo"<center>\nDeine Nachricht konnte leider nicht eigetragen werden, probiere es bitte erneut.\n</center>";
                }
                
            }
    }      
               
?>
 
Du müsstest den Text ersetzen, der den Kommentar enthält, richtig müsste es also lauten:

PHP:
$N = str_replace(":)", "<img src=\"Smilies/1.gif\">", $N);

By the way: wo wird dein $N eigentlich ausgegeben?
 
Zurück