Ich speichere Smileys mit Id, Code durch den er erstetz werden soll und dem pfad zum smiley in einer datenbank. was muss ich im quelltext schreiben um das wie mit javascript über "setsmiley blablabla" in der textarea mit der id "text" einfügen zu lassen? also das soll die aus der datenbank auswerten... könnt ihr mir weiterhelfen? also alles mit replace etc...
Ankündigung
Einklappen
Keine Ankündigung bisher.
Smiley aus Datenbank
Einklappen
Neue Werbung 2019
Einklappen
X
-
Stichworte: -
-
Also nochmal?
Du hast:- - ID
- Pfad
- "Replace String"
... in der DB.
Jetzt hast du eine TEXTAREA (id="text"), in welcher du die Smilis per Klick einfügen willst.
Soll das einfügen funktionieren mit oder ohne Seite neu laden funktionieren?
Mit wäre möglich mit PHP, aber je nachdem aufwendig.
Ohne wäre mit einem JavaScript o. ä. möglich.
Und zusätzlich willst du noch den replace-Code der den "Replace String" in HTML (mit entsprechenden Smilis) umwandelt?
Soll das bei jedem anzeigen neu umgewandelt werden?
oder nur 1x nach der Eingabe?
Verstehe ich das so in etwa richtig?
-
JO. Also ob neu laden oder nicht ist egal. ich kenne das mit javascript und nicht anders. ist aber auch egal wenns rein mit php geht. es sollte dann auch immer umgewandelt werden.
Kommentar
-
Der Beitrag wurde verschoben, wegen...
... unverständlicher Rechtschreibung/Grammatik.
... Postings im falschen Forum. Bitte beim nächsten Mal darauf achten..
Bemerkung:
Die gestellte Frage entspricht nicht dem Wissensstand eines/einer Fortgeschrittenen. Dazu: http://www.phpfriend.de/forum/viewtopic.php?t=21515
moved to PHP - Anfänger
mod = master of disaster
Kommentar
-
Hier Zeile im HTML um das Smili einzufügen:
Im gleichen File (Header):
Code:<script language="JavaScript"> function setSmile(symbol) { document.formName.text.value = document.formName.text.value + symbol; document.formName.text.focus(); } </script>
Code:<form action="save.php" method="post" name="formName"> ... <textarea name="text"></textarea> ... </form>
Code:... function returnImgTag($path, $smiliName) { return "<img src=\"".$path.$smiliName."\" border=\"0\">"; } ... $outputContent = str_replace(":)", returnImgTag($path, "smile.gif"), $outputContent ); ...
PS: Ist nicht gerade eine Delux Version aber sollte funktionieren...
Kommentar
-
das weiss ich auch. aber wie kann ich das machen ohne jetzt 20 mal [img]smilis/smile.gif[/img]
[img]smilis/smile2.gif[/img]
im text einzugeben? ich mache mir grade ein cms und da möchte ich die smileys in einer datenbank speichern. wenn sie darin gespeichert sind, sollten sie da eingefügt werden. dass ich halt nicht immer im quellcode rummachen muss...
Kommentar
-
Aus der Datenbank auslesen und z.B in eine Array speichern und dann mit einer Schlaufe mögliche Smilies ersetzen:
Code:foreach($allSmilies as $thisSmilie) { $outputContent = str_replace($thisSmilie["replaceString"], returnImgTag($thisSmilie["path"], $thisSmilie["fileName"]), $outputContent); }
Code:$allSmilies = array(1 => array("replaceString" => ":)", "path" => "smilies/", "fileName" => "smilie.gif"), 2 => array("replaceString" => ";)", "path" => "smilies/", "fileName" => "smilie2.gif"));
Kommentar
-
irgendwie kapier ich grade garnüschts mehr. ich poste einfach ma den code, dann kann das ja jemand ma einsetzen =)
Code:<form action="<?echo $url?>do=add&action=save" method="post"> <table width="95%" align="center"> <tr> <td>Autor:</td> <td><?echo $usr;?></td> </tr> <tr> <td>Kategorie:</td> <td> <select name="f_cat"> <? $q_cat = mysql_query("SELECT catid,catname FROM ".$n."news_cat"); while($cat = mysql_fetch_array($q_cat)) { echo '<option value="'.$cat['catid'].'">'.$cat['catname']; } ?> </select> </td> </tr> <tr> <td>Betreff:</td> <td><input type="text" name="f_subject" size="36"></td> </tr> <tr> <td></td> <td> <input type="button" onClick="setBold()" value="Fett"> <script language="JavaScript"> function setBold() { var a; a = window.prompt('Bitte den Text, der fett dargestellt werden soll unten hinschreiben',''); document.getElementById("utext").value = document.getElementById("utext").value + "" + a + ""; } </script> <input type="button" onClick="setItalic()" value="Kursiv"> <script language="JavaScript"> function setItalic() { var a; a = window.prompt('Bitte den Text, der Kursiv dargestellt werden soll unten hinschreiben',''); document.getElementById("utext").value = document.getElementById("utext").value + "" + a + ""; } </script> <input type="button" onClick="setUnderlined()" value="Unterstrichen"> <script language="JavaScript"> function setUnderlined() { var a; a = window.prompt('Bitte den Text, der unterstrichen werden soll unten hinschreiben',''); document.getElementById("utext").value = document.getElementById("utext").value + "<u>" + a + "</u>"; } </script> </td> </tr> <tr> <td>Inhalt:</td> <td><textarea name="f_text" cols="35" rows="5" id="utext"></textarea></td> </tr> <tr> <td></td> <td><input type="submit" value="News eintragen >>" accesskey="s"></td> </tr> </table> </form>
da wirds eingetragen und da wirds ausgegeben:
Code:<? include 'config.php'; mysql_connect($sqlhostname,$sqlusername,$sqlpassword); mysql_select_db($sqldatabase); // Settings einlesen $settings = mysql_query("SELECT * FROM ".$n."news_settings"); while($zeile = mysql_fetch_array($settings)) { $config[$zeile[0]] = $zeile[1]; } ereg('\?',$news) ? $url = $news.'&' : $url = $news.'?'; // Settings einlesen Ende // Datums-Funktion function makedate( $datum ) { global $config; return date($config[date],$datum); } // Replace-Funktion function replace( $text ) { global $config; $text = preg_replace('#\[quote\](.*)\[\/quote\]#','<font color="' . $config[replacecolor] . '">\\1</font>',$text); return $text; } // Template-Funktion function gettemplate( $template, $nobr = 0) { $template = str_replace('"','\"',implode('',file($template))); return $template; } // Newsschreib-Funktion function writenews( $news ) { global $config,$n,$url,$imgpath,$do; $zeit = makedate($news[newstime]); $text = nl2br(stripslashes($news[newstext])); $betreff = stripslashes($news[newssubject]); $kategoriename = stripslashes($news[catname]); $kategoriebild = '[img]'.$imgpath.'/'.$news[catimage].'[/img]'; // show more if( $config[more_funktion] == 1 && $do != 'view') { $newtext = substr($text,0,$config[more_letter]); $more = str_replace('{link}',str_replace('{more}',$config[more_word],'{more}'),$config[more_construx]); if(strlen($text) > $config[more_letter]){$text = $newtext.$more;} } // comments if( $config[comment_funktion] == 1 ) { $replies = mysql_fetch_array(mysql_query("SELECT count(commentid) FROM ".$n."news_comment WHERE newsid = '$news[newsid]'")); $replies = $replies[0]; $comment_temp = $config[comment_construx]; $comment_temp = str_replace("{num}",$replies,$comment_temp); $kommentar = '' . $comment_temp . ''; } // related links if( $news[newsurl] && substr_count($news[newsurl],'|~|') < 1 ) { $links = ' •' . $news[newslink] . ''; } else { $a_link = explode("|~|",$news[newslink]); $a_url = explode("|~|",$news[newsurl]); if( count($a_url) > 1 ) { for( $i = 0 ; $i < count($a_url) ; $i++ ) { empty($a_link[$i]) ? $link = $a_url[$i] : $link = $a_link[$i]; $links .= ' •' . $link . ''; } } } $a_user = mysql_fetch_array(mysql_query("SELECT useremail,username FROM ".$n."member WHERE userid = '$news[userid]'")); $autor = '' . $a_user[username] . ''; $text = makesmilies($text); $text = replace($text); eval("\$newsmain=\"".gettemplate("templates/news.html")."\";"); return $newsmain; } // - - Funktionen, die keine Header brauchen - - // if( $do == "lastnews" ) { $news = mysql_fetch_array(mysql_query("SELECT newsid,newssubject FROM ".$n."news ORDER BY newsid DESC LIMIT 1")); $subject = $news[newssubject]; $link = '[mehr]'; eval("\$construx=\"".gettemplate("templates/lastnews.html")."\";"); echo 'document.write(\'' . $construx . '\');'; exit; } @eval("?>".$config[header]."<?"); switch( $do ) { case 'view': // show original news $news = mysql_fetch_array(mysql_query("SELECT news.newsid,news.newstext,news.newssubject,news.userid,news.newstime,news.newsurl,news.newslink,cat.catname,cat.catimage FROM ".$n."news news INNER JOIN ".$n."news_cat cat ON news.catid = cat.catid WHERE news.newsid = '$newsid'")); echo writenews($news); // show comment if( $config[comment_funktion] == 1 ) { $q_comment = mysql_query("SELECT commentuser,commentemail,commenttext,commenttime FROM ".$n."news_comment WHERE newsid='$newsid'"); while($comment = mysql_fetch_array($q_comment)) { empty($comment['commentemail']) ? $autor = stripslashes($comment['commentuser']) : $autor = ''.stripslashes($comment['commentuser']).''; $text = nl2br(htmlspecialchars(stripslashes($comment['commenttext']))); $zeit = makedate($comment['commenttime']); $a_text = explode(" ", $text); unset($text); for($i = 0 ; $i < count($a_text) ; $i++) { if(strlen($a_text[$i]) >= $config['umbruch']){$a_text[$i] = wordwrap($a_text[$i], $config['umbruch'],'<i style="font-size: 0.1px;"> [/i]',1);} $text .= $a_text[$i]." "; } unset($a_text); $text = makesmilies($text); eval("\$comment=\"".gettemplate("templates/comment.html",1)."\";"); echo $comment; } } echo ' <center>[ Zurück zu den News ]</center>'; if( $config[comment_funktion] == 1 ) { ?> <form action="<?echo $url?>do=comment" method="post" name="comment"> <input type="hidden" name="f_newsid" value="<?echo $newsid?>"> <table align="center"> <tr> <td>Name:</td> <td><input type="text" name="f_user" size="36" maxlength="30"></td> </tr> <tr> <td>Mail:</td> <td><input type="text" name="f_email" size="36" maxlength="50"></td> </tr> <tr> <td>Kommentar:</td> <td><textarea name="f_text" cols="30" rows="5"></textarea></td></td> </tr> <tr> <td></td> <td><input type="submit" value="Posten" accesskey="s"></td> </tr> </table> </form> <? } break; case 'comment': // - - Comment insert beginn - - // if( $config[comment_funktion] == 1 ) { $fehler = array(); if( empty($f_user) ) { $fehler[] = 'Du hasst vergessen deinen Namen einzugeben!'; } if( empty($f_text) ) { $fehler[] = 'Du hasst vergessen einen Text einzugeben!'; } if( count($fehler) > 0 ) { echo 'Folgende Fehler sind aufgetreten: '; for( $i = 0 ; $i < count($fehler) ; $i++ ) { echo '- '.$fehler[$i].' '; } echo ' » zurück'; } else { mysql_query("INSERT INTO ".$n."news_comment(newsid,commentuser,commentemail,commenttext,commenttime,commentip,commentbrowser) VALUES('$f_newsid','" . addslashes($f_user) . "','$f_email','" . addslashes($f_text) . "','" . time() ."','$REMOTE_ADDR','$HTTP_USER_AGENT')"); echo '<center>Kommentar hinzugefügt Zum Kommentar Zu den News</center>'; } } else { echo '<center>Kommentare sind deaktiviert!</center>'; } break; case 'archiv': // - - Archiv beginn - - // if( empty($s) ) { $s = 0; } $q_news = mysql_query("SELECT newsid,newssubject,newstime FROM ".$n."news ORDER BY newsid DESC LIMIT $s, 40"); echo '<table cellspacing="0" cellpadding="2" width="95%" align="center"><tr><td><u>Newsarchiv</u></td></tr>'; while( $news = mysql_fetch_array($q_news) ) { strlen($news['newssubject']) > 30 ? $subject = substr($news['newssubject'],0,30).'...' : $subject = $news['newssubject']; echo '<tr><td>'.$subject.'</td><td align="right">'.makedate($news['newstime']).'</td></tr>'; } echo '</table>'; $forward = $s - 40; $back = $s + 40; $s > 0 ? $s_back = '< Vorherige Seite' : $s_back = ''; $num > ($config[nps] + $s) ? $s_forward ='Nächste Seite >' : $s_forward = ''; echo '<center>'.$s_back.' | News | '.$s_forward.'</center>'; break; default: // - - News beginn - - // if( empty($s) ) { $s = 0; } isset($cat) ? $query = "SELECT news.newsid,news.newstext,news.newssubject,news.userid,news.newstime,news.newsurl,news.newslink,cat.catname,cat.catimage FROM ".$n."news news INNER JOIN ".$n."news_cat cat ON news.catid = cat.catid WHERE news.catid = '$cat' ORDER BY news.newsid DESC LIMIT $s,$config[nps]" : $query = "SELECT news.newsid,news.newstext,news.newssubject,news.userid,news.newstime,news.newsurl,news.newslink,cat.catname,cat.catimage FROM ".$n."news news INNER JOIN ".$n."news_cat cat ON news.catid = cat.catid ORDER BY news.newsid DESC LIMIT $s,$config[nps]"; $q_news = mysql_query($query); $num = mysql_fetch_array(mysql_query("SELECT count(newsid) FROM ".$n."news")); $num = $num[0]; if($num > 0) { echo '<table width="100%" cellpadding="0" cellpspacing="0"><tr><td>Insgesamt gepostete News: '.$num.'</td><td>Kategorien: <select onChange="location.href=this.value"><option>Wähle Kategorie:'; $q_cat = mysql_query("SELECT catid,catname FROM ".$n."news_cat"); while( $category = mysql_fetch_array($q_cat) ) { echo '<option value="'.$url.'cat='.$category['catid'].'">'.$category['catname']; } echo '</select></td></tr></table> '; // News schreiben while( $news = mysql_fetch_array($q_news) ) { echo writenews($news); } // Footer isset($cat) ? $catstring = 'cat='.$cat.'&' : $catstring = ''; $forward = $s - $config[nps]; $back = $s + $config[nps]; $s > 0 ? $s_back = '< Vorherige Seite' : $s_back = ''; $num > ($config[nps] + $s) ? $s_forward ='Nächste Seite >' : $s_forward = ''; echo '<center>'.$s_back.' | '.$s_forward.'</center>'; } else { echo 'Keine News gepostet!'; } } @eval("?>".$config['footer']."<?"); ?>
die smiley sind mit smilieid, smiliecode und smiliescr gespeichert. dann schon mal danke im vorraus
Kommentar
-
Kommentar
-
-
Wenn du schon so clever warst eine MySQL Tabelle mit sinnvollen Spalten zu erstellen, sollte doch der Rest kein Problem sein. Dein Quelltext ist mir ehrlich gesagt zu lang zum durchforsten.
Hol dir doch aus der DB den Inhalt als 2 Arrays (in einem die Codes, im anderen den Pfad)
Z.B.
PHP-Code:$sel = "SELECT CONCAT('<img src=\"', imgSrc, '\">') AS imgTag, replaceCode FROM codeTable";
$res = mysql_query($sel);
$imgTags = array();
$codes = array();
while ($current = mysql_fetch_assoc($res)) {
$codes[] = $current['replaceCode'];
$imgTags[] = $current['imgTag'];
}
$text2 = str_replace($codes, $imgTags, $text1);
Getestet ist das ganze nicht.
Kommentar
-
-
JanM
Kommentar