Smielys im Gäastebuch

iLu_is_a_loser

Erfahrenes Mitglied
hallo alle miteinander....

hab da mal ne frage wie kann ich zb :

:D durc hein smiley ersetzen oder wenn man ein smilie neben dem eintrags feld anklickt das dannn zb: :D ensteht oder im Gästebuch durch ein smiley ersezt wird.....

ich habe ein datenbasiertes geästebuch..... und die smilies sind im smiley ordner.... bloß wie werden die ersezt

kann mir da jemand helfen...


mfg
tristan
 
Ich hab das wie folgt gelöst.
Gibt sicher noch einfachere Varianten, aber das ist nunmal mein Ansatz gewesen.
Letztendlich fügt ein Klick auf das Smilie-Bild ein Akronym in die Textarea ein, welches dann später mit str_replace() wieder in ein Bild umgewandelt wird.

HTML:
<script language="JavaScript" type="text/javascript">
<!--
function smiley(x){
         document.GB.gbtext.value += x;
         document.GB.gbtext.focus();
}
//-->
</script>
<form  name="GB">
   <table>
    <tr>
      <td valign="top" width="100" align="right"><b>Text:::</b><br>
     	<a href="javascript:smiley(':angel:');"><img src="../bilder/smilies/angel.gif" border="0"></a> //dies ist ein anklickbarer Smilie
       </td>
      <td><textarea rows="10" name="gbtext" cols="50" tabindex="5" style="background-color:#191960;color:#FFFFFF;"></textarea> //hier landet das Akronym
    </td>
    </tr>
   </table>
</form>
 
ja erstmal danke für eure hilfe... .ich werde beides mir mal anschauen und ausprobieren.......thx.....falls aber noch mehr ideen da sind...immer her damit ;)
 
ja die smilies werden dann beim anklicken durch zeichen eersezt........ jetzt weiss ich aber nicht str_replace() geht..... kann mir da jhemand tipps geben?

noch allen ein guten rutsch
 
Erstmal:

Auszug Punkt 12 der Netiquette:

...Das gleiche gilt insbesondere für Beiträge, die in Rechtschreibung, Satzbau und Verständlichkeit nicht ein vernünftiges, allgemein übliches und altersgruppen-übergreifendes Niveau erfüllen. Jugendsprache, regional verbreitete Dialekte und durchgehend kleingeschriebene Beiträge sind ebenfalls unerwünscht. Mit anderen Worten: wer erfolgreich die im Deutsch-Unterricht erlernten Kenntnisse praxisnah auf unserem Forum anwenden kann, wird nicht mit dieser Regel...

Dann zu deinem Problem.

hier findest du viele Beispiele zu str_replace
 
Du schreibst ja den Inhalt der <textarea> irgendwo rein, oder?
Wenn Du das dann wieder ausliest, ersetzt Du mit str_replace(); einfach die :smile:-Akronyme durch <img src="pfad/smile.gif" alt="Smily"/>-Bilder.

Verstanden?
Bin nun feiern :)
 
Hab hier was kleines gecodet. Man muss nur 3 Variablen in der functions.inc.php angeben.
1. Der Name des Formulars (<form>-Tag);
2. Der Name des Feldes, in die die Smilies eingefügt werden sollen
3. Das Verzeichnis zum Auslesen der Smilies

Also das Script ließt aus dem angegebenen Vezeichnis alle Smilies aus ( nur mit gif-Smilies), generiert einen BB-Code. Diese Smilies werden dann angezeigt, sodass wenn man darauf klickt (auf ein Smilie) der BB-Code davon in das Formular eingefügt wird. Beim replacen wird der BB-Code dann wieder durch die Smilies ersetzt !

Bitte postet mal eure Meinung. Danke.

So, und nun das Script:

functions.inc.php:
PHP:
 <?php
 // Keine Variable umbenennen, nur die Werte davon anpassen:
 $smiliedir = "smilies";
 $form_name = "name";
 $textarea_name = "namet";
 
 // Nix mehr ändern !
 function smilies_into_array() {
 	global $smiliedir;
 	$dir=$smiliedir;
 	$open=opendir($dir);
 	$array=array();
 	$i=1;
 	while($file=readdir($open)) {
 		if ($file != "." && $file != "..") {
 			$neu=str_replace(".gif","",$file);
 			$replacecode=":".$neu.":";
 			$array[$replacecode][$i]=$file;
 			$i+=1;
 		}	
 	}
 	return $array;
 }
 
 $smilearray=smilies_into_array();
 
 function make_javascript() {
 	global $form_name;
 	global $textarea_name;
 	global $smilearray;
 	echo "<script language=\"javascript\" type=\"text/javascript\">";
 	echo "<!--";
 	foreach ($smilearray as $smilie_bb=>$newarray) {
 		foreach ($newarray as $functionnr=>$file) {
 			echo $functionnr;
 			echo '
 			function smilie'.$functionnr.'()
 			{
 		    document.'.$form_name.'.'.$textarea_name.'.value = document.'.$form_name.'.'.$textarea_name.'.value + "'.$smilie_bb.'";
 			}';
 		}	
 	}
 	echo "//-->";
 	echo "</script>";
 }
 
 function show_smilies() {
 	global $smilearray;
 	global $smiliedir;
 	foreach ($smilearray as $smilie_bb=>$newarray) {
 		foreach ($newarray as $functionnr=>$file) {
 			echo "<img border=\"0\" src=\"".$smiliedir."/".$file."\" onClick=\"smilie".$functionnr."()\">";
 		}	
 	}
 }
 
 function replace_bbcode($textarea) {
 	global $smilearray;
 	global $smiliedir;
 	foreach ($smilearray as $smilie_bb=>$newarray) {
 		foreach ($newarray as $functionnr=>$file) {
 		    $textarea=str_replace($smilie_bb, "<img src=\"".$smiliedir."/".$file."\">", $textarea);
 		}	
 	}
 	return $textarea;
 }
 ?>

und nun so einbinden wie bei diesem Beispiel:

PHP:
 <?php
 include("functions.inc.php");
 echo "<html><head>";
 make_javascript();
 echo "</head><body>";
 
 if ($_GET["action"]=="senden") {
 	echo replace_bbcode($_POST["namet"]);
 }
 else {
 	echo "<form action=\"".(basename($PHP_SELF))."?action=senden\" name=\"name\" method=\"post\">";
 	echo "<br><br>";
 	echo "<textarea name=\"namet\" rows=\"20\" cols=\"20\"></textarea>";
 	show_smilies();
 	echo "<input name=\"senden\" type=\"submit\"></form>";
 }
 
 ?>

An der Stelle, wo die Smilies angezeigt werden sollen, bitte
show_smilies();
aufrufen, und zum Replacen des BB-Codes durch Smilies bitte
replace_bbcode($_POST["namet"]);
aufrufen, wobei $_POST["namet"] natürlich durch den Namen eures Textareafeldes zu ersetzten ist, also z.B. $_POST["deintextareaname"].

Hoffe, das hilft !
 
Zurück