bryce_30 Posted June 29, 2006 Share Posted June 29, 2006 salut tout le monde, je suis en train d'améliorer mon site, et je viens de faire un code qui remplace certaines chaine par un smiley, comme ceci : <?php $in=array( '-(;', '-((' ); $out=array( '<img src="pas_content.png" alt="nom image" />', '<img src="en_colere.png" alt="nom image" />' ); echo str_replace($in,$out,$texte); ?> seulement je voudrais faire un peu comme sur le forum, qu'en cliquant sur un lien, il apparaisse une popup avec a l'intérieur tous mes smileys ! comment faire ? Link to comment Share on other sites More sharing options...
playstation.2.fg Posted June 29, 2006 Share Posted June 29, 2006 Fait le à l'aide d'une fonction Javascript. Link to comment Share on other sites More sharing options...
bryce_30 Posted June 29, 2006 Author Share Posted June 29, 2006 Fait le à l'aide d'une fonction Javascript. oui, je me doute ! sauf que je connais pas le javascript... je sais pas si on peut y mettre du php dedans ? uqelqu'un pourrait m'expliquer ? Link to comment Share on other sites More sharing options...
Sentinel Posted June 29, 2006 Share Posted June 29, 2006 Le plus simple est de regarder le code source de la page de rédaction des messages, sur ce forum. En gros, il te faut : 1. Sur ta page principale, un lien (balise <a> avec propriété "target") permettant d'ouvrir la page contenant les smileys. 2. Une page html contenant tous les smileys, avec sur chaque image une fonction javascript ressemblant à : onclick="opener.getElementById('toto').value='mon_smiley'". La partie importante dans cet exemple est l'emploi de l'objet "opener", qui permet d'accéder à la page ayant ouvert la page contenant les smilies, pour en changer le contenu. Encore une fois, regarde le code source du forum, ce sera instructif et certainement réutilisable sans beaucoup de modifications. Link to comment Share on other sites More sharing options...
bryce_30 Posted June 29, 2006 Author Share Posted June 29, 2006 j'ai pas tout compris ! mais je vais regarder le code source merci Link to comment Share on other sites More sharing options...
bryce_30 Posted June 29, 2006 Author Share Posted June 29, 2006 alors j'y arrive a peu près, mais il y a un seul truc que j'arrive pas a faire, c'est le lien sur le smiley pour qu'il s'affiche dans la page que je veux..., j'ai bien mis la fonction que tu dis, maisje sais pas quoi mettre comme valeur au href ? edit : voici le code : <table align='center' width='90%' border='3'> <?php foreach($tableau as $cle => $element) { echo "<tr><td align='center' width='50%'><a href='#' onclick='opener.getElementById(\"message\").value=".$cle."'>".$cle."</a></td><td align='center' width='50%'>".$element."</td></tr>"; } ?> </table> edit 2 : voici le code de la page ou je souhaite qu'apparaissent les smileys ça dans le <head> de la page : <script language="javascript"> function emot_pop() { var nouvelleFenetre = open("../includes/tabl_emot.php", "tableauEmot", "scrollbars, resizable, width=300, height=500"); } </script> et ça a l'endroit ou je veux qu'il y ai le lien : <form method="post" action="minichat.php"> <p>Pseudo : <input type="text" name="pseudo" /></p> <p>Message : <input type="text" name="message" /></p> <p><input type="submit" value="Smileys" onClick="emot_pop()" /></p> <p><input type="submit" /></p> </form> Link to comment Share on other sites More sharing options...
bryce_30 Posted June 30, 2006 Author Share Posted June 30, 2006 voici la solution : <script ='javascript'> function add_smilie(smil, textarea) { //opener.document.forms[0] += ' ' + smil + ' '; //return true; opener.document.getElementById(textarea).value += ' ' + smil + ' '; } </script> <a href="java script:void(0);" onClick="add_smilie(' :-)', 'message');\">" :-)"</a> ici textarea doit prendre la valeur de l'id du textarea dans votre formulaire ! donc ici il s'agit de 'message' Link to comment Share on other sites More sharing options...
FiP_ Posted June 30, 2006 Share Posted June 30, 2006 Pour info, sur mon site j'ai repris la syntaxe pcinpact, c'est à dire :<nomdusmiley>: //Smileys! $reg = '#:(.*):#sU'; preg_match_all($reg,$string,$out,PREG_SET_ORDER); // $out[][0] = :smiley: // $out[][1] = smiley // on les remplace: foreach ( $out as $tab ) { if ( file_exists(dirname(__FILE__) . '/../_images/smileys/' . $tab[1] . '.gif') ) $string = str_replace($tab[0], "<img src=\"$site/_images/smileys/" . $tab[1] . '.gif" alt="smiley: ' . $tab[1] . 'class="smiley" />', $string); } C'est plus simple pour en rajouter, je n'ai qu'à les rajouter dans le dossier image de mon site :) (en revanche le code actuel ne supporte que les images .gif.. mais bon pour le moment je n'ai pas besoin de plus) Pour avoir la liste, je suppose que je pourrais parcourir le dossier des smileys, avec un chtit: $liste = array(); $dir = opendir($directory); // keep going until all files in directory have been read while ($file = readdir($dir)) if ($file != '.' && $file != '..') $liste[] = $file; closedir($dir); Pour ensuite afficher le tableau. Ou alors, pour encore moins se fatiguer, ne pas renseigner de tableau mais ecrire directement sur la page: (...) while ($file = readdir($dir)) if ($file != '.' && $file != '..') echo '<tr><td>' . $file . '</td><td><img src="...." alt="..."</td></tr>'; a toi de voir. Link to comment Share on other sites More sharing options...
bryce_30 Posted July 2, 2006 Author Share Posted July 2, 2006 ça m'a l'air compliqué comme ça ! faudrait que je m'y penche dessus ! mais bon, le mien fonctionne au poil maintenant, juste 2 ou 3 détails et ça sera parfait ! mais bon, c'est quand meme intéressant d'apprendre de nouveaux trucs ! Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.