Smilies in GB´s

humsdigga

Mitglied
Hallo.
Habe eine kleine kurze Frage und zwar will ich Smilies im GB anzeigen lassen können. Habe da auch schon so ein code.
PHP:
<?php
function set_smilies($text) {
  $text = str_replace(":)","<img src='./smilies/smile.gif' alt=':)' />",$text);
  # Und für alle anderen Smilies das gleiche...
  return $text;
}
?>

Muss ich diesen code im gbshow.php (wo die EInträge auch angezeiogt werden) einfügen
 
Hi,

ja, das wäre wohl am sinnvollsten. ;)
Kleiner Tipp noch: $search und $replace können bei str_replace auch Arrays sein. D.h., Du kannst alle Smilies mit einer Anweisung ersetzen.

LG
 
bekomme nun folgenen fehler...

Fatal error: Cannot redeclare set_smilies() (previously declared in /usr/export/www/vhosts/funnetwork/hosting/humsdigga/php/homepage/gbnew/gbnew.php:56) in /usr/export/www/vhosts/funnetwork/hosting/humsdigga/php/homepage/gbnew/gbnew.php on line 56
 
Hi,

tja, dazu müsste man jetzt allerdings wissen, wie Deine Struktur so aussieht (wo wird was eingebunden). Du bindest das doch per include ein, oder? Versuch's mal mit include_once.
Was macht denn set_smilies in gbnew.php?

LG
 
ich hab keine ahnung woür das steht, ich habs übernommen,...ich poste ma eben den groß teil der datei, ne include verwende ich nich.

PHP:
//Einträge pro Seite: Hier 15 pro Seite
$eintraege_pro_seite = 15;

//Ausrechen welche Spalte man zuerst ausgeben muss:

$start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;

echo "<br> <a href=\"gbneweintrag.php\"><font color=white>Einen Eintrag ins Rosa Buch verfassen</font></a>";

//Tabelle Abfragen
//Tabelle heißt hier einfach: Tabelle
$abfrage = "SELECT * FROM gbnew WHERE aktiv = '1' ORDER BY id DESC LIMIT $start, $eintraege_pro_seite";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
    {
    $inhalt = $row->inhalt;
	$email = $row->email;
	$betreff = $row->betreff;
    $inhalt = htmlentities($inhalt);
    $inhalt = nl2br($inhalt);
    $datum = date("d.m.Y H:i", $row->datum);

    //Der Besucher hat keine E-Mail Adresse angegeben:
    if($row->email == "")
       {
       $name = "<b>$row->name</b>";
       }
    else
       {
       //Der User hat eine Email Adresse angegeben:
       $name = "<a href=\"mailto:$row->email\">$row->name</a>";
       }

function set_smilies($text) {
  $text = str_replace(":)","<img src='./smilies/smile.gif' alt=':)' />",$text);
  # Und für alle anderen Smilies das gleiche...
  return $text;
}

    echo "
   




<table align=\"center\" border=\"1\" border-style= \"ridge\" cellspacing=\"0\" cellpadding=\"5\" bgcolor=\"#000000\" width=\"60%\">
   <tr bgcolor=\"#ffffff\">
   <td>
   <b>Datum:</b> $datum <br>
   <b>Name:</b><font color=magenta>$row->name</font><br>
   <b>Betreff:</b><font color=magenta> $betreff</font>
   <br><b>E-Mail:</b> $email
   
  
   <br>
   <br>
   $inhalt
   </td>
   </tr>
   </table><br>  ";
    
   }
 
Das ist jetz mein ganzes GB,...
PHP:
<html>
<head>
<body bgcolor="#FFB9D4">
<div align=center ><font size="4" color="white" ><u> Rosa Buch</u></font></div><br>
<?php
setcookie("name","valentin",0);
?>
<?php
$seite = $_GET["seite"];  //Abfrage auf welcher Seite man ist

//Wenn man keine Seite angegeben hat, ist man automatisch auf Seite 1
if(!isset($seite))
   {
   $seite = 1;
   }

//Verbindung zu Datenbank aufbauen

$link = mysql_connect("localhost","+++","++++") or die ("Keine Verbindung moeglich");
mysql_select_db("+++++") or die ("Die Datenbank existiert nicht");


//Einträge pro Seite: Hier 15 pro Seite
$eintraege_pro_seite = 15;

//Ausrechen welche Spalte man zuerst ausgeben muss:

$start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;

echo "<br> <a href=\"gbneweintrag.php\"><font color=white>Einen Eintrag ins Rosa Buch verfassen</font></a>";

//Tabelle Abfragen
//Tabelle heißt hier einfach: Tabelle
$abfrage = "SELECT * FROM gbnew WHERE aktiv = '1' ORDER BY id DESC LIMIT $start, $eintraege_pro_seite";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
    {
    $inhalt = $row->inhalt;
	$email = $row->email;
	$betreff = $row->betreff;
    $inhalt = htmlentities($inhalt);
    $inhalt = nl2br($inhalt);
    $datum = date("d.m.Y H:i", $row->datum);

    //Der Besucher hat keine E-Mail Adresse angegeben:
    if($row->email == "")
       {
       $name = "<b>$row->name</b>";
       }
    else
       {
       //Der User hat eine Email Adresse angegeben:
       $name = "<a href=\"mailto:$row->email\">$row->name</a>";
       }

	   

    echo "
   <table align=\"center\" border=\"1\" border-style= \"ridge\" cellspacing=\"0\" cellpadding=\"5\" bgcolor=\"#000000\" width=\"60%\">
   <tr bgcolor=\"#ffffff\">
   <td>
   <b>Datum:</b> $datum <br>
   <b>Name:</b><font color=magenta>$row->name</font><br>
   <b>Betreff:</b><font color=magenta> $betreff</font>
   <br><b>E-Mail:</b> $email
   
  
   <br>
   <br>
   $inhalt
   </td>
   </tr>
   </table><br>  ";
    
   }


//Jetzt kommt das "Inhaltsverzeichnis",
//sprich dort steht jetzt: Seite: 1 2 3 4 5


//Wieviele Einträge gibt es überhaupt

//Wichtig! Hier muss die gleiche Abfrage sein, wie bei der Ausgabe der Daten
//also der gleiche Text wie in der Variable $abfrage, blo&szlig; das hier das LIMIT fehlt
//Sonst funktioniert die Blätterfunktion nicht richtig,
//und hier kann nur 1 Feld abgefragt werden, also id

$result = mysql_query("SELECT id FROM gbnew WHERE aktiv = '1'");
$menge = mysql_num_rows($result);

//Errechnen wieviele Seiten es geben wird
$wieviel_seiten = $menge / $eintraege_pro_seite;

//Ausgabe der Seitenlinks:
echo "<div align=\"center\">";
echo "<b>Seite:</b> ";


//Ausgabe der Links zu den Seiten
for($a=0; $a < $wieviel_seiten; $a++)
   {
   $b = $a + 1;

   //Wenn der User sich auf dieser Seite befindet, keinen Link ausgeben
   if($seite == $b)
      {
      echo "  <b>$b</b> ";
      }

   //Aus dieser Seite ist der User nicht, also einen Link ausgeben
   else
      {
      echo "  <a href=\"?seite=$b\">$b</a> ";
      }


   }
echo "</div>";
?> <br> <br>
<table align=center border=1 border-style=ridge cellspacing=0 cellpadding=5 bgcolor=#000000 width=80%>
   <tr bgcolor=#FFB9D4>
   <td align=center>
 

<div align=center><font color="white" size="3">Gästebucheintrag</font></div><br>
<form action="gbnewspeicher.php" Method="post">
Ihr Name:<br>
<input name="name" size="40"><br>
Betreff:<br>
<input name="betreff" size="40"><br>

E-Mail:<br>
<input name="email" size="40"><br>


Inhalt:<br>
<textarea name="inhalt" cols="40"
 rows="12" wrap="physical"></textarea><br>
<input type="submit" value="Absenden">
</form>

   </td>
   </tr>
 
In deiner ersten Version steht die Funktion in einer while()-Schleife. Das heißt du versuchst mehrfach die Funktion zu erstellen. Setz den function set_smilies Teil an den Anfang des PHP-Abschnitts und füg einfach an die Stelle set_smilies(); ein.

mfg shadow

PS: Mir fällt gerade auf, dass du die Variable $text überhaupt nicht benutzt. Du solltest das durch $inhalt ersetzen oder umgekehrt.
 
Hey, gut gesehen :)

@humsdigga: wäre schön, wenn Du das nächste Mal Deinen Code vernünftig einrückst, dann hättest Du's vielleicht auch selbst gesehen.

LG
 
Zurück