Smileys in je gastenboek

Door Lissy Pixel, 21 jaar geleden, 10.066x bekeken

Dit is een opzetje om een smileys in je gastenboek te kunnen plaatsen.
Er zijn natuurlijk heel veel manieren om dit te doen en ik vind deze erg handig vandaar dat ik hem met je deel.

De smileys kan je van het gastenboek dat ik als voorbeeld erbij heb gedaan weghalen.

Gesponsorde koppelingen

PHP script bestanden

  1. smileys-in-je-gastenboek

 

Er zijn 37 reacties op 'Smileys in je gastenboek'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Ponzi
Ponzi
21 jaar geleden
 
0 +1 -0 -1
Mooi werk Lissy ;) . Je had het misschien nog met een database kunnen doen ofzoiets, voor het gemakkelijker te maken om smilies toe te voegen ofzo :) Maar alleszins puik werk ;D !
Niek s
niek s
21 jaar geleden
 
0 +1 -0 -1
er is iets fout aan het script, ik zie zo snel niet wat, maar je ziet aan de highlighting dat het niet klopt. Voor de rest: mooi script :-)
Pieter Boussaer
Pieter Boussaer
21 jaar geleden
 
0 +1 -0 -1
Hoi lissy,
leuk gedaan, maar je hebt 1 foutje

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
verander dit
<?php
        $Row
['boodschap']      = eregi_replace("\n", "<br>", $Row['boodschap]);
?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
in dit
<?php        
$Row
['boodschap']      = eregi_replace("\n", "<br>", $Row['boodschap']);
?>


Je bent een ' vergeten

Grtzz Pieter

@ niek, we waren gelijk
Niek s
niek s
21 jaar geleden
 
0 +1 -0 -1
edit: Er was me weer iemand voor hoor :p

gefixt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
for($a=0; $a < mysql_num_rows($Result);$a++)
    {

        $Row                 = mysql_fetch_array($Result);
        $Row['boodschap']      = eregi_replace("\n", "<br>", $Row['boodschap']);
        
        $smiles = array( ':)'=>'smile',
                        ':-)'=>'smile',
                        ':d'=>'biggrin',
                        ':-d'=>'biggrin',
                        ':D'=>'biggrin',
                        ':-D'=>'biggrin',
                        ':o'=>'redface',
                        ':-o'=>'redface',
                        ':O'=>'redface',
                        ':-O'=>'redface',
                        ':-0'=>'redface',
                        ':0'=>'redface',
                        ':+'=>'clown',
                        ':-+'=>'clown',
                        ':('=>'frown',
                        ':-('=>'frown',
                        ';)'=>'wink',
                        ';-)'=>'wink',
                        ':e'=>'eyes',
                        ':s'=>'thx',
                        ':li'=>'liefde',
                        ':g'=>'glass',
                        ':w'=>'wings',
                        ':h'=>'love');
        foreach($smiles as $smile=>$image)
        {

            $Row['Bericht'] = str_replace($smile,"<img src=../paginas/gastenboek/smilies/".$image.".gif>", $Row['Bericht']);
?>
}
Jelle Posthuma
Jelle Posthuma
21 jaar geleden
 
0 +1 -0 -1
Is het mogelijk om dit script zo te gebruiken dat de smileys op de plek komen waar de cursor staat in de tekst?
Lissy Pixel
Lissy Pixel
21 jaar geleden
 
0 +1 -0 -1
@ Ponzi + niek + Pieter : Bedankt voor de feedback allemaal :)

@ Jelle : bij mijn weten kan dit en hiervoor is ook een oplossing voor dit was van een tijdje geleden bij textboxen en met een beetje fantasie bouw je hem om:

Hoe kan ik bij het openen van de pagina de cursor al in een tekstbox plaatsen?
In de head sectie:
window.onload = init;

function init () {
var tekstbox = document.getElementById ('box1');
tekstbox.focus ();
tekstbox.blur ();
tekstbox.select ();
}

in je HTML
<input id="box1" name="box1" type="text">
Ponzi
Ponzi
21 jaar geleden
 
0 +1 -0 -1
Ik denk dat hij bedoelt dat de smiley moet komen op de plaats waar de cursor in de tekst staat ;) .

Dit is mogelijk via onmogelijk veel workarounds voor crossbrowser. Volgende code werkt echter alleen in IE ;) . Het is veel te moeilijk/ingewikkeld/nutteloos veel werk om het te implemteren :)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function InserttArea(text)
{ var target = document.TextA.tArea;
if ( target )
{
if ( document.all && target.cursorPos)
{ var cursorPos = target.cursorPos;
cursorPos.text = cursorPos.text.charAt(cursorPos.text.length - 1) == ' ' ? text + ' ' : text;
}
else
{ target.value += text;
target.focus();
}
}
}
function storeCursor(element)
{
if ( document.all && element.createTextRange ) element.cursorPos = document.selection.createRange().duplicate();
}


Edit:
Typo
Lissy Pixel
Lissy Pixel
21 jaar geleden
 
0 +1 -0 -1
@ Ponzi : mijn idee en wie weet heeft iemand nog iets liggen wat van pas kan komen... dat vind ik altijd zo leuk aan een community het samen denken en samen delen van de kennis en ervaring die beschikbaar is :)
Arwin  vdv
Arwin vdv
21 jaar geleden
 
0 +1 -0 -1
Mooi script. Ga hem meteen gebruiken in mijn gastenboek en forum.
The Beeding Clown
The Beeding Clown
21 jaar geleden
 
0 +1 -0 -1
Leuk script (Y), heb wel wat opbouwende kritiek :blush:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
/*
De smilies array hoeft niet in de loop te staan.
hierdoor word ie elke keer opnieuw aangemaakt
wat niet nodig is.

De str_replace kan array's aan, zeker omdat je
een assoc array gebruikt kan je makkelijk het
volgende doen als je de smilies array iets veranderd:
*/


$Row['Bericht'] = str_replace(array_keys($smiles), $smiles, $Row['Bericht']);

?>



Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php

/* Helemaal geen eregi_replace nodig joh :usnure: */
$Row['boodschap'] = eregi_replace("\n", "<br>", $Row['boodschap']);

/* Ingebouwde PHP Funtie */
$Row['boodschap'] = nl2br($Row['boodschap']);

?>



Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php

/* Dit : */
for($a=0; $a < mysql_num_rows($Result);$a++)
{

    $Row = mysql_fetch_array($Result);

    //doe je PHP ding hier
}

/* Kan ook met: */
while($Row = mysql_fetch_assoc($res))
{

   // doe je PHP ding hier
}

/* is sneller op die manier ;) */

?>


Verder leuk gescript, bedankt voor het delen :)
Erik Rijk
Erik Rijk
21 jaar geleden
 
0 +1 -0 -1
ik zou de <br> tag ook vervangen met de <br /> tag :)
Lissy Pixel
Lissy Pixel
21 jaar geleden
 
0 +1 -0 -1
@ nano : leuk dit opbouwende kritiek en ik heb er zeker wat mee gedaan :) alleen kom ik hier niet uit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
/*
De smilies array hoeft niet in de loop te staan.
hierdoor word ie elke keer opnieuw aangemaakt
wat niet nodig is.

De str_replace kan array's aan, zeker omdat je
een assoc array gebruikt kan je makkelijk het
volgende doen als je de smilies array iets veranderd:
*/


$Row['Bericht'] = str_replace(array_keys($smiles), $smiles, $Row['Bericht']);

?>
Hipska BE
Hipska BE
21 jaar geleden
 
0 +1 -0 -1
ik zou ook het begin (waar de beschikbare emoticons komen om erop te klikken) automatisch vanuit het array laten halen.

dit is veel handiger als je er een niewe toevoegd/verwijderd/aanpast en ik vind het beter + je code word kleiner
The Beeding Clown
The Beeding Clown
21 jaar geleden
 
0 +1 -0 -1
@lissy
Wat ik bedoelde was het volgende.

BV het volgende stukje voorbeeld code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php

// smily dir
$smilydir = "../paginas/gastenboek/smilies/";

// alle smilies
$smiles = array
(
    ':)'  => '<img src="'.$smilydir.'smile.gif" alt="" />',
    ':-)' => '<img src="'.$smilydir.'smile.gif" alt="" />',
    ':d'  => '<img src="'.$smilydir.'biggrin.gif" alt="" />',
    ':-d' => '<img src="'.$smilydir.'biggrin.gif" alt="" />',
    ':D'  => '<img src="'.$smilydir.'biggrin.gif" alt="" />',
    ':-D' => '<img src="'.$smilydir.'biggrin.gif" alt="" />',
    ':o'  => '<img src="'.$smilydir.'redface.gif" alt="" />',
    ':-o' => '<img src="'.$smilydir.'redface.gif" alt="" />',
    ':O'  => '<img src="'.$smilydir.'redface.gif" alt="" />',
    ':-O' => '<img src="'.$smilydir.'redface.gif" alt="" />',
    ':-0' => '<img src="'.$smilydir.'redface.gif" alt="" />',
    ':0'  => '<img src="'.$smilydir.'redface.gif" alt="" />',
    ':+'  => '<img src="'.$smilydir.'clown.gif" alt="" />',
    ':-+' => '<img src="'.$smilydir.'clown.gif" alt="" />',
    ':('  => '<img src="'.$smilydir.'frown.gif" alt="" />',
    ':-(' => '<img src="'.$smilydir.'frown.gif" alt="" />',
    ';)'  => '<img src="'.$smilydir.'wink.gif" alt="" />',
    ';-)' => '<img src="'.$smilydir.'wink.gif" alt="" />',
    ':e'  => '<img src="'.$smilydir.'eyes.gif" alt="" />',
    ':s'  => '<img src="'.$smilydir.'thx.gif" alt="" />',
    ':li' => '<img src="'.$smilydir.'liefde.gif" alt="" />',
    ':g'  => '<img src="'.$smilydir.'glass.gif" alt="" />',
    ':w'  => '<img src="'.$smilydir.'wings.gif" alt="" />',
    ':h'  => '<img src="'.$smilydir.'love.gif" alt="" />'
);






// voorbeeld texten met wat smilies
$Row[0] = "Hallo :) even wat smilies testen :D :+ :( :e :s :w :h Als het goed is moet het allemaal werken :D";
$Row[1] = "Jaja, 2e berichtje :) Lijkt erop dat alles goed werkt :w Tis allemaal ook niet zo heel lastig :0";
$Row[2] = "Vooruit ;) het laatste berichtje.. dit moet toch wel goed aangeven hoe makkelijk het allemaal werkt :P";


// door de records loopen
for($i=0; $i<count($Row); $i++)
{

    // de smilies in de text zetten
    $str = str_replace(array_keys($smiles), $smiles, $Row[$i]);
    
    // het bericht naar de brouwser uitspugen
    echo $str;
    echo '<hr style="margin:12px; />';

}


?>


Op deze manier is het heel makkelijk om array's te parsen met een str_replace/preg_replace/ereg_replace

Succes :)
Kalle P
Kalle P
21 jaar geleden
 
0 +1 -0 -1
@lissy
Je vergeet een haakje sluiten bij de forloop.
Hipska BE
Hipska BE
21 jaar geleden
 
0 +1 -0 -1
aanvulling op mijn vorige post;
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?
echo 'deze kan je gebruiken:<br>';
foreach($smileys as $key){
  echo '<img src="'.$smiley[$key].'" alt="'.$key.'" title="'.$key.'"> ';
}

?>


zo ongeveer
Lissy Pixel
Lissy Pixel
21 jaar geleden
 
0 +1 -0 -1
@ Hipska : dat gaat niet helemaal goed met de aanvulling. Ik krijg dan dit te zien:
Warning: Invalid argument supplied for foreach() in /vhosts/www/www.bearded-collies.net/paginas/gastenboek/gastenboek.php on line 239

dit is line 239:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
echo 'deze kan je gebruiken:<br>';
foreach($smileys as $key){
  echo '<img src="'.$smiley[$key].'" alt="'.$key.'" title="'.$key.'"> ';
}

?>
Arwin  vdv
Arwin vdv
21 jaar geleden
 
0 +1 -0 -1
ik krijg de heletijd deze foutmelding:

Warning: mysql_num_rows(): 5 is not a valid MySQL result resource in /home/arwebnl/public_html/8c/forum/forumbericht.php on line 140

maar op die regel staat gewoon dit: for($a=0; $a < mysql_num_rows($res);$a++)
Lissy Pixel
Lissy Pixel
21 jaar geleden
 
0 +1 -0 -1
Wellicht erboven iets niet OK?
PHP Newbie
PHP Newbie
21 jaar geleden
 
0 +1 -0 -1
Jammer dat de smileys niet worden toegevoegd op de plek van de cursor.

Kijk is naar het systeem wat Arjan heeft gebruikt in zijn nieuwssysteem, en datzelfde systeem heb ik in mijn mailinglist zitten,

misschien kun je er iets mee ;-)
Lissy Pixel
Lissy Pixel
21 jaar geleden
 
0 +1 -0 -1
@ PHP Newbie : ik ga er naar kijken en dank je wel voor het meedenken ervan :)
Arwin  vdv
Arwin vdv
21 jaar geleden
 
0 +1 -0 -1
@lissy

Daarboven heb ik alleen dit staan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$query
= mysql_query("SELECT naam FROM categories WHERE id=$cat") or die(mysql_error());
if(!mysql_num_rows($query)) {
  echo "<CENTER>De geselecteerde categorie bestaat niet (meer).<BR>\n";
  echo "<A HREF=\"categorieen.php\">Terug naar Categorieën</A><BR></CENTER>\n";
}
else {
$naam = mysql_result($query, 0, "naam");
mysql_free_result($query);
echo "<A HREF=\"categorieen.php\">".$forumname."</A> &gt; ";
echo "<A HREF=\"forum.php?cat=".$cat."\">".$naam."</A>";

$res = mysql_query("SELECT * FROM forum where id=$forumid") or die(mysql_error());
if(!mysql_num_rows($res)) {
  echo "<CENTER>Het geselecteerde forumid bestaat niet (meer).<BR>\n";
  echo "<A HREF=\"forum.php?cat=".$cat."\">Terug naar '".$naam."'</A><BR></CENTER>\n";
}
else {
mysql_query("UPDATE forum SET hits=hits+1 where id=$forumid") or die(mysql_error());
if(mysql_num_rows($res)) {
  $row = mysql_fetch_row($res);
  echo " &gt; <B>".$row[1]."</B><BR>\n";
?>

en daarboven alleen wat css files.
Weet iemand wat ik zou moeten doen??
Hipska BE
Hipska BE
21 jaar geleden
 
0 +1 -0 -1
@arwin: LEES DE ERROR! er staat in dat er iets mis is met het result van je query.
dus is er hier iets mis mee ook!
$res = mysql_query("SELECT * FROM forum where id=$forumid");
wat zegt men altijd over variablen binnen quotes? ...

@lissy: ik zei ook ongeveer he.
http://php.net/foreach leert ons al wat meer ;-)
Lissy Pixel
Lissy Pixel
21 jaar geleden
 
0 +1 -0 -1
@ Hipska : Idd en aldoende leer je weer wat :) Bedankt voor het meedenken en aanvullende leerinformatie ^_-
Alfred -
Alfred -
21 jaar geleden
 
0 +1 -0 -1
Quote:
$res = mysql_query("SELECT * FROM forum where id=$forumid");
wat zegt men altijd over variablen binnen quotes? ...


In dit geval maken de quotes niets uit, en zal de query ook zo werken...
PHP Newbie
PHP Newbie
21 jaar geleden
 
0 +1 -0 -1
Werkt wel, maar toch kun je ze er beter buiten halen ;-)
Hipska BE
Hipska BE
21 jaar geleden
 
0 +1 -0 -1
Maar toch heeft arwin in deze query een fout zitten.
Is $forumid wel een cijfer? bestaat het id in de DB?
Arwin  vdv
Arwin vdv
21 jaar geleden
 
0 +1 -0 -1
Ja, die bestaad en het is ook een cijfer. Als je ik het smiley script weg haal dan geeft hij de foutmelding ook niet.
Maar wat moet ik nou eigelijk doen??
Hipska BE
Hipska BE
21 jaar geleden
 
0 +1 -0 -1
plaats in het forum eens een stuk relevante code + de volledige error;
daarvoor dient het
Arwin  vdv
Arwin vdv
21 jaar geleden
 
0 +1 -0 -1
Zal ik doen
Niek Kasius
Niek Kasius
21 jaar geleden
 
0 +1 -0 -1
Allemaal leuk en aardig die smilies.
Maar wat als de een of andere idioot je gastenboek vol plakt met smilies. Misschien dat je er nog een blokkade kunt inbouwen die bijvoorbeeld maar een of 2 smilies per bericht toelaat, of zit dat er al in?
Er bestaat al ongeveer zoiets dat je maar een bericht per bepaalde tijd kunt plaatsen maar dat houd geen afbeeldingen tegen.
Op jou Mooie site kon ik die smilies ook een tig aantal keren aanklikken en in een bericht versturen als ik dat gewildt had.
Het is maar een idee! want zoveel verstand het ik niet van php
Mooie site
Lissy Pixel
Lissy Pixel
21 jaar geleden
 
0 +1 -0 -1
Dat is een punt niek :)
Ik heb idd geen beveiliging voor wat dat betreft aangebracht (en nee nu niet allemaal gaan proberen ^_-)
Ik ga er over nadenken en heb ik wat dan meld ik dit hier vast en zeker.
Lissy Pixel
Lissy Pixel
21 jaar geleden
 
0 +1 -0 -1
Ik ben bezig met een soort van beveiliging aan het maken voor het max. plaatsen van smileys.
Het is nu dit:
<script type="text/javascript" language="javascript">
<!-- Smilies invoegen
function addSmilie(code)
{
document.form1.Bericht.value+=code;
document.form1.Bericht.focus();
}
-->
</script>

En er is nu dit:
<script type="text/javascript" language="javascript">
<!-- Smilies invoegen
var smilesmile = 1;
function addSmilie(code)
{
if (smilesmile >= 10)
{
smilesmile = smilesmile + 1;
document.form1.Bericht.value+=code;
document.form1.Bericht.focus();
} else {
alert('Niet meer dan 10 toegestaan!');
}
}
-->
</script>

Maar dat werkt nog niet en ik ben niet echt een kei hierin dus wie heeft raad/oplossing?
Lissy Pixel
Lissy Pixel
21 jaar geleden
 
0 +1 -0 -1
In PHP hebben "we" een andere oplossing bedacht:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
foreach($smiles as $smile=>$image)
{

    if($Error == "")
    {

        if(isset($i) && !empty($i) && $i <= 10)
        {

            $Bericht = str_replace($smile,"<img src=../paginas/gastenboek/smilies/".$image.".gif>", $Bericht);
            $i++;
        }

        else
        {
            $Error .= 'Het is niet toegestaan zoveel smilies te posten in 1 bericht, niemand doet zoiets!';
        }
    }
}

?>


Het maximum aan aantal berichten is nu 10.
Jelmer Draaijer
Jelmer Draaijer
21 jaar geleden
 
0 +1 -0 -1
Dit is mijn form
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<FORM METHOD="post" NAME="form1">
<INPUT TYPE="text" NAME="naam" VALUE="name"><BR>
<INPUT TYPE="text" NAME="bericht" VALUE="bericht"><BR>
<INPUT TYPE="submit" VALUE="Plaatsen" NAME="POST">
</FORM>

Dit is mijn js <script type="text/javascript" language="javascript">
<!-- Smilies invoegen
function addSmilie(code)
{
document.form1.bericht.value+=code;
document.form1.bericht.focus();
}
-->
</script>
Maar hij werkt niet wat doe ik fout?
Arjan Schuurman
Arjan Schuurman
21 jaar geleden
 
0 +1 -0 -1
@roayl devil: Met alleen een form kom je nergens.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Arjan Schuurman
Arjan Schuurman
21 jaar geleden
 
0 +1 -0 -1
Heb je ook één zonder mysql?

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. smileys-in-je-gastenboek

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.