begin process at 2012 02 04 23:45:55
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Application

 > SHOUTBOX PARAMETRABLE SANS MYSQL

SHOUTBOX PARAMETRABLE SANS MYSQL


 Information sur la source

Note :
9 / 10 - par 5 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Application Niveau :Initié Date de création :26/01/2005 Date de mise à jour :03/03/2005 17:17:54 Vu / téléchargé :11 189 / 1 232

Auteur : malalam

Ecrire un message privé
Site perso
Commentaire sur cette source (52)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Ben voila, c'est une shoutbox. Elle n'utilise pas Mysql, et est relativement bien modifiable.
Pour le moment :
- modification du design grace au fichier CSS externe (tout est la).
- possibilite de l'appeler avec ou sans gestion des smileys (on clique sur le smiley voulu, il apparait)
- possibilite de definir une taille maximale pour le fichier contenant les messages
- possibilite de definir le nom du fichier contenant les messages
- possibilite de modifier les styles de texte avec menu cliquable

teste sur IE6 et Firefox

Ces choix se font lors de l'instantiation de l'objet. Si des parametres ne sont pas fournis, ce sont ceux par defaut qui prevalent.  

Je joins quand meme le code, meme si il faut le zip.

Demo ici : http://membres.lycos.fr/pat665/index.php
(Merci Darkdje :-)

Source

  • FICHIER shoutbox.cls.php
  • <?php
  • require_once ("smallform.cls.php");
  • class shoutBox {
  • var $fichier; // nom du fichier
  • var $smiley; // gestion des smileys
  • var $taille; // taille du fichier
  • var $style; // gestion du style des textes
  • var $arrSmiley;
  • var $arrSmileyTrans;
  • var $arrStyle;
  • var $arrStyleTrans;
  • //constructeur, je changerai plus tard le _construct. Les parametres optionnels sont fixes par defaut.
  • function shoutBox($smiley=true, $style=true, $taille=10, $fichier="shoutbox.txt") {
  • $this -> smiley = $smiley;
  • $this -> style = $style;
  • $this -> fichier = $fichier;
  • $this -> taille = $taille*1024;
  • // tableau des smileys, avec le chemin.
  • $this -> arrSmiley = array ('<img src="smileys/rire.gif" />', '<img src="smileys/sourire.gif" />', '<img src="smileys/triste.gif" />', '<img src="smileys/clin.gif" />');
  • // tableau des codes correspondants. Ajoutez ce que vous voulez, mais les 2 tableaux DOIVENT comporter le meme nombre d'entrees, evidemment!
  • $this -> arrSmileyTrans = array (':-o', ':-)', ':-(', ';-)');
  • // tableau des styles de texte. Memes remarques que pour les smileys.
  • $this -> arrStyle = array ('<span style="font-weight:bold">','<span style="font-style:italic">', '<span style="text-decoration:underline">', '<span style="text-decoration:overline">', '<span style="text-decoration:underline overline">', '<span style="color:aqua">', '<span style="color:black">', '<span style="color:blue">', '<span style="color:fuchsia">', '<span style="color:gray">', '<span style="color:green">', '<span style="color:lime">', '<span style="color:maroon">', '<span style="color:navy">', '<span style="color:olive">', '<span style="color:purple">', '<span style="color:red">', '<span style="color:silver">', '<span style="color:teal">', '<span style="color:white">', '<span style="color:yellow">', '<span style="border:1pt solid aqua">','<span style="border:1pt solid black">', '<span style="border:1pt solid blue">', '<span style="border:1pt solid fuchsia">','<span style="border:1pt solid gray">', '<span style="border:1pt solid green">', '<span style="border:1pt solid lime">', '<span style="border:1pt solid maroon">', '<span style="border:1pt solid mavy">', '<span style="border:1pt solid olive">', '<span style="border:1pt solid purple">', '<span style="border:1pt solid red">', '<span style="border:1pt solid silver">', '<span style="border:1pt solid teal">', '<span style="border:1pt solid white">', '<span style="border:1pt solid yellow">', '</span>');
  • $this -> arrStyleTrans = array ('[b]', '[i]','[u]', '[o]', '[a]', '[aqua]', '[black]', '[blue]', '[fuchsia]', '[gray]', '[green]', '[lime]', '[maroon]', '[navy]', '[olive]', '[purple]', '[red]', '[silver]', '[teal]', '[white]', '[yellow]', '[aqua_b]', '[black_b]', '[blue_b]', '[fuchsia_b]', '[gray_b]', '[green_b]', '[lime_b]', '[maroon_b]', '[navy_b]', '[olive_b]', '[purple_b]', '[red_b]', '[silver_b]', '[teal_b]', '[white_b]', '[yellow_b]', '[/end]');
  • // validation du formulaire
  • if (isset($_POST['submit']) && $_POST['submit']=="Shout")
  • $this -> valider(!empty($_POST['texte'])?$_POST['texte']:"Oouups, oubli texte", !empty($_POST['pseudo'])?$_POST['pseudo']:"Anonyme");
  • echo '<div class="shoutbox">';
  • // instantiation d'un objet formulaire
  • $form = new smallForm($this -> smiley, $this -> style);
  • // appel de la methode affichant les messages
  • $this -> affiche();
  • echo '</div>';
  • }
  • // methode enregistrant le message poste dans le fichier
  • function valider($texte, $pseudo) {
  • $texte = $this -> valideCode($texte);
  • if(get_magic_quotes_gpc()===0)
  • $entree = addslashes($pseudo.'||'.$texte.'||');
  • $entree=htmlentities($pseudo.'||'.$texte.'||').date("dmy").'||';
  • // different systeme d'ouverture selon si le fichier existe ou doit etre efface, ou n'existe pas encore
  • if (file_exists($this -> fichier) && filesize($this -> fichier) >= $this -> taille)
  • $fp = fopen($this -> fichier, 'w') or die("Echec d'ouverture du fichier");
  • else
  • $fp = fopen($this -> fichier, 'a') or die("Echec d'ouverture du fichier");
  • $ecriture=fwrite($fp, $entree) or die ("Echec d'ecriture dans le fichier");
  • fclose ($fp);
  • }
  • // fonction recuperant les valeurs du tableau en fonction d'un calcul modulo (cree pour recuperer chaque pseudo, message et date dans un tavbleau specifique
  • function getValeursTab($tab, $div, $reste) {
  • while ($dmp=current($tab)) {
  • if (key($tab)%$div==$reste)
  • $tabT[] = $tab[key($tab)];
  • next($tab);
  • }
  • return $tabT;
  • }
  • // methode pour afficher les messages.
  • function affiche () {
  • if(file_exists($this -> fichier)) {
  • fopen($this -> fichier, 'r') or die ("Echec d'ouverture du fichier");
  • // on parse une 1ere fois pour recuperer dans un tableau chaque pseudo suivi de chaque message
  • if(get_magic_quotes_runtime()===1)
  • $tabtmp = explode('||', stripslashes(file_get_contents($this -> fichier)));
  • else
  • $tabtmp = explode('||', file_get_contents($this -> fichier));
  • // si smiley, on va chercher la methode les gerant
  • if ($this -> smiley)
  • $tabtmp = $this -> parseCode($tabtmp, $this -> arrSmiley, $this -> arrSmileyTrans);
  • // si style, on va chercher la methode les gerant...
  • if ($this -> style)
  • $tabtmp = $this -> parseCode($tabtmp, $this -> arrStyle, $this -> arrStyleTrans);
  • // recuperation dans un tableau associatif de chaque pseudo, message, date
  • $tabshout = array ('pseudo' => $this -> getValeursTab($tabtmp, 3, 0), 'texte' => $this -> getValeursTab($tabtmp, 3, 1), 'date' => $this -> getValeursTab($tabtmp, 3, 2));
  • // affichage proprement dit
  • $i=count($tabshout['pseudo'])-1;
  • for ($i; $i>=0; $i--)
  • echo '<span class="pseudo">',$tabshout['pseudo'][$i],'</span>','<span class="date"> ','[',$tabshout['date'][$i],']','</span>',' :: ','<span class="texte">',$tabshout['texte'][$i],'</span><br />';
  • }
  • }
  • // On parse les codes speciaux
  • function parseCode ($tab, $output, $input) {
  • return $tab = str_replace($input, $output, $tab);
  • }
  • // methode pour equilibrer le nombre de tags fermants, afin d'avoir un html correct en sortie
  • function valideCode($texte) {
  • $ouvertures = 0;
  • $tab = $this -> arrStyleTrans;
  • array_pop($tab);
  • foreach ($tab as $txt)
  • $ouvertures += substr_count($texte, $txt);
  • $fermetures = substr_count($texte, '[/end]');
  • if ($fermetures < $ouvertures)
  • $texte .= str_repeat('[/end]', $ouvertures - $fermetures);
  • if ($ouvertures < $fermetures) {
  • $oter = $fermetures - $ouvertures;
  • $tab = explode(' ', $texte);
  • $i = 0;
  • foreach ($tab as $k => $v) {
  • if ($i == $oter)
  • break;
  • if ($v == '[/end]') {
  • $tab[$k] ='';
  • $i++;
  • }
  • }
  • $texte = implode(' ', $tab);
  • }
  • return $texte;
  • }
  • }
  • ?>
  • FICHIER smallform.cls.php
  • <?php
  • class smallForm {
  • // constructeur (oui oui, je sais...), avec les parametres optionnels
  • function smallForm($smiley=true, $style=true) {
  • echo '<div class="divform"><form method="POST" action="',$_SERVER['PHP_SELF'],'">';
  • echo '<input type="text" class="smallformField" name="pseudo" value="',isset($_POST['pseudo'])?$_POST['pseudo']:"Pseudo",'" size="8" maxlength="20"/>';
  • echo '<input type="text" id="t" class="smallformField" name="texte" value="',isset($_POST['texte'])?$_POST['texte']:"Message",'" size="18" maxlength="200"/>';
  • echo '<input type="submit" title="Poster le message" class="smallformSubmit" name="submit" value="Shout" /><br /><br />';
  • if ($smiley || $style)
  • $this -> affBoiteEdition($smiley, $style);
  • echo '<hr class="separateur" />';
  • echo'</form></div>';
  • }
  • // simple remarque : je ne fais qu'ajouter le code du smiley a la valeur de l'input, sur un onclick. Je n'y suis pas encore arrive sur un submit...ca ne l'affichait pas, meme si ca le rajoutait effectivement.
  • function smileys() {
  • echo '<input type ="image" src="smileys/rire.gif" onclick="document.getElementById(\'t\').value+=\' :-o \'"/>';
  • echo '<input type ="image" src="smileys/sourire.gif" onclick="document.getElementById(\'t\').value+=\' :-) \'"/>';
  • echo '<input type ="image" src="smileys/triste.gif" onclick="document.getElementById(\'t\').value+=\' :-( \'"/>';
  • echo '<input type ="image" src="smileys/clin.gif" onclick="document.getElementById(\'t\').value+=\' ;-) \'"/>';
  • }
  • // comme pour les smileys
  • function style() {
  • echo '<select title="couleur du texte" class="smallformSelect" name ="couleur" onchange="document.getElementById(\'t\').value+=this.value">';
  • $couleurs = array ('aqua', 'black', 'blue', 'fuchsia', 'gray', 'green', 'lime', 'maroon', 'navy', 'olive', 'purple', 'red', 'silver', 'teal', 'white', 'yellow');
  • foreach ($couleurs as $v)
  • echo '<option value="['.$v.']" style="background-color:'.$v.'">&nbsp;</option>';
  • echo '</select>';
  • echo '<select title="couleur de la bordure" class="smallformSelect" name ="couleurbordure" onchange="document.getElementById(\'t\').value+=this.value">';
  • foreach ($couleurs as $v)
  • echo '<option value="['.$v.'_b]" style="color:'.$v.'">[]</option>';
  • echo '</select>';
  • echo '<input type="submit" title="gras start tag" class="bold" value="b" onclick="document.getElementById(\'t\').value+=\' [b] \'" />';
  • echo '<input type="submit" title="italique start tag" class="italic" value="i" onclick="document.getElementById(\'t\').value+=\' [i] \'" />';
  • echo '<input type="submit" title="souligne start tag" class="underline" value="u" onclick="document.getElementById(\'t\').value+=\' [u] \'" />';
  • echo '<input type="submit" title="surligne start tag" class="overline" value="o" onclick="document.getElementById(\'t\').value+=\' [o] \'" />';
  • echo '<input type="submit" title="souligne et surligne start tag" class="underlineoverline" value="a" onclick="document.getElementById(\'t\').value+=\' [a] \'" />';
  • echo '&nbsp;<input type="submit" title="end tag pensez a le mettre pour fermer chaque style" class="endtag" value="end" onclick="document.getElementById(\'t\').value+=\' [/end] \'" />';
  • }
  • // permet de controler l'affichage/masquage de la boite d'edition
  • function affBoiteEdition ($smiley, $style) {
  • echo '<input class ="controle" title ="Afficher ou masquer le champ edition" type="button" name="controle" value="-" onclick="this.value=(this.value==\'-\')?\'+\':\'-\'; document.getElementById(\'boite\').style.visibility=(document.getElementById(\'boite\').style.visibility==\'hidden\')?\'visible\':\'hidden\';document.getElementById(\'boite\').style.display=(document.getElementById(\'boite\').style.display==\'none\')?\'block\':\'none\' " />';
  • echo '<div id="boite" class="edit">';
  • if ($smiley) {
  • $this -> smileys();
  • if ($style)
  • echo '<br /><br />';
  • }
  • if ($style)
  • $this -> style();
  • echo '</div>';
  • }
  • }
  • ?>
  • FICHIER index.php exemple
  • <html>
  • <head>
  • <title>
  • </title>
  • <link rel=stylesheet type="text/css" href="shoutbox.css">
  • </head>
  • <body style="background-color : #cccccc">
  • <?php
  • // Include de la classe
  • require_once ("shoutbox.cls.php");
  • // appel par defaut
  • // $shout (false, false, 20, "monfichier.txt"); est un autre exemple d'appel : pas de smiley, pas de style, 20ko pour la taille max du fichier, et le fichier s'appelle monfichier.txt
  • $shout = new shoutBox ();
  • ?>
  • </body></html>
FICHIER shoutbox.cls.php

<?php
require_once ("smallform.cls.php");

class shoutBox {
	
	var $fichier; // nom du fichier
	var $smiley; // gestion des smileys
	var $taille; // taille du fichier
	var $style; // gestion du style des textes
	var $arrSmiley;
	var $arrSmileyTrans;
	var $arrStyle;
	var $arrStyleTrans;
	
	
	//constructeur, je changerai plus tard le _construct. Les parametres optionnels sont fixes par defaut.
	
	function shoutBox($smiley=true, $style=true, $taille=10, $fichier="shoutbox.txt") { 
	$this -> smiley = $smiley;
	$this -> style = $style;
	$this -> fichier = $fichier;
	$this -> taille = $taille*1024;
	// tableau des smileys, avec le chemin.
	$this -> arrSmiley = array ('<img src="smileys/rire.gif" />', '<img src="smileys/sourire.gif" />', '<img src="smileys/triste.gif" />', '<img src="smileys/clin.gif" />'); 
	// tableau des codes correspondants. Ajoutez ce que vous voulez, mais les 2 tableaux DOIVENT comporter le meme nombre d'entrees, evidemment!
	$this -> arrSmileyTrans = array (':-o', ':-)', ':-(', ';-)'); 
	// tableau des styles de texte. Memes remarques que pour les smileys.
	$this -> arrStyle = array ('<span style="font-weight:bold">','<span style="font-style:italic">', '<span style="text-decoration:underline">', '<span style="text-decoration:overline">', '<span style="text-decoration:underline overline">', '<span style="color:aqua">', '<span style="color:black">', '<span style="color:blue">', '<span style="color:fuchsia">', '<span style="color:gray">', '<span style="color:green">', '<span style="color:lime">', '<span style="color:maroon">', '<span style="color:navy">', '<span style="color:olive">', '<span style="color:purple">', '<span style="color:red">', '<span style="color:silver">', '<span style="color:teal">', '<span style="color:white">', '<span style="color:yellow">', '<span style="border:1pt solid aqua">','<span style="border:1pt solid black">', '<span style="border:1pt solid blue">', '<span style="border:1pt solid fuchsia">','<span style="border:1pt solid gray">', '<span style="border:1pt solid green">', '<span style="border:1pt solid lime">', '<span style="border:1pt solid maroon">', '<span style="border:1pt solid mavy">', '<span style="border:1pt solid olive">', '<span style="border:1pt solid purple">', '<span style="border:1pt solid red">', '<span style="border:1pt solid silver">', '<span style="border:1pt solid teal">', '<span style="border:1pt solid white">', '<span style="border:1pt solid yellow">', '</span>'); 
	$this -> arrStyleTrans = array ('[b]', '[i]','[u]', '[o]', '[a]', '[aqua]', '[black]', '[blue]', '[fuchsia]', '[gray]', '[green]', '[lime]', '[maroon]', '[navy]', '[olive]', '[purple]', '[red]', '[silver]', '[teal]', '[white]', '[yellow]', '[aqua_b]', '[black_b]', '[blue_b]', '[fuchsia_b]', '[gray_b]', '[green_b]', '[lime_b]', '[maroon_b]', '[navy_b]', '[olive_b]', '[purple_b]', '[red_b]', '[silver_b]', '[teal_b]', '[white_b]', '[yellow_b]', '[/end]'); 
	// validation du formulaire
	if (isset($_POST['submit']) && $_POST['submit']=="Shout") 
			$this -> valider(!empty($_POST['texte'])?$_POST['texte']:"Oouups, oubli texte", !empty($_POST['pseudo'])?$_POST['pseudo']:"Anonyme"); 
	echo '<div class="shoutbox">';
	 // instantiation d'un objet formulaire
	$form = new smallForm($this -> smiley, $this -> style);
	// appel de la methode affichant les messages
	$this -> affiche(); 
	echo '</div>';
	}
	
	 // methode enregistrant le message poste dans le fichier
	function valider($texte, $pseudo) {
	$texte = $this -> valideCode($texte);
	if(get_magic_quotes_gpc()===0)
		$entree = addslashes($pseudo.'||'.$texte.'||');
	$entree=htmlentities($pseudo.'||'.$texte.'||').date("dmy").'||';
	// different systeme d'ouverture selon si le fichier existe ou doit etre efface, ou n'existe pas encore
	if (file_exists($this -> fichier) && filesize($this -> fichier) >= $this -> taille) 
		$fp = fopen($this -> fichier, 'w') or die("Echec d'ouverture du fichier"); 
	else
		$fp = fopen($this -> fichier, 'a') or die("Echec d'ouverture du fichier");
	$ecriture=fwrite($fp, $entree) or die ("Echec d'ecriture dans le fichier");
	fclose ($fp);
	}
	
	 // fonction recuperant les valeurs du tableau en fonction d'un calcul modulo (cree pour recuperer chaque pseudo, message et date dans un tavbleau specifique
	function getValeursTab($tab, $div, $reste) {
	while ($dmp=current($tab)) {
		if (key($tab)%$div==$reste) 
			$tabT[] = $tab[key($tab)];
		next($tab);
		}
	return $tabT;
		}
	
	// methode pour afficher les messages.
	function affiche () { 
	if(file_exists($this -> fichier)) { 
		fopen($this -> fichier, 'r') or die ("Echec d'ouverture du fichier");
		// on parse une 1ere fois pour recuperer dans un tableau chaque pseudo suivi de chaque message
		if(get_magic_quotes_runtime()===1)
			$tabtmp = explode('||', stripslashes(file_get_contents($this -> fichier))); 
		else
			$tabtmp = explode('||', file_get_contents($this -> fichier));
		// si smiley, on va chercher la methode les gerant
		if ($this -> smiley) 
			$tabtmp = $this -> parseCode($tabtmp, $this -> arrSmiley, $this -> arrSmileyTrans); 
		 // si style, on va chercher la methode les gerant...
		if ($this -> style)
			$tabtmp = $this -> parseCode($tabtmp, $this -> arrStyle, $this -> arrStyleTrans);
		// recuperation dans un tableau associatif de chaque pseudo, message, date
		$tabshout = array ('pseudo' => $this -> getValeursTab($tabtmp, 3, 0), 'texte' => $this -> getValeursTab($tabtmp, 3, 1), 'date' => $this -> getValeursTab($tabtmp, 3, 2)); 
		// affichage proprement dit
		$i=count($tabshout['pseudo'])-1;
		for ($i; $i>=0; $i--) 
			echo '<span class="pseudo">',$tabshout['pseudo'][$i],'</span>','<span class="date"> ','[',$tabshout['date'][$i],']','</span>',' :: ','<span class="texte">',$tabshout['texte'][$i],'</span><br />'; 
		}
	}

	 // On parse les codes speciaux
	function parseCode ($tab, $output, $input) {
	return $tab = str_replace($input, $output, $tab);
	}
	
	// methode pour equilibrer le nombre de tags fermants, afin d'avoir un html correct en sortie
	function valideCode($texte) {
	$ouvertures = 0;
	$tab = $this -> arrStyleTrans;
	array_pop($tab);
	foreach ($tab as $txt)
		$ouvertures += substr_count($texte, $txt);
	$fermetures = substr_count($texte, '[/end]');
	if ($fermetures < $ouvertures)
		$texte .= str_repeat('[/end]', $ouvertures - $fermetures);
	if ($ouvertures < $fermetures) {
		$oter = $fermetures - $ouvertures;
		$tab = explode(' ', $texte);
		$i = 0;
		foreach ($tab as $k => $v) {
			if ($i == $oter)
				break;
		if ($v == '[/end]') {
			$tab[$k] ='';
			$i++;
			}
		}
	$texte = implode(' ', $tab);
	}
	return $texte;
	}
}
?>

FICHIER smallform.cls.php

<?php
class smallForm {
	
	// constructeur (oui oui, je sais...), avec les parametres optionnels
	function smallForm($smiley=true, $style=true) { 
		echo '<div class="divform"><form method="POST" action="',$_SERVER['PHP_SELF'],'">';
		echo '<input type="text" class="smallformField" name="pseudo" value="',isset($_POST['pseudo'])?$_POST['pseudo']:"Pseudo",'" size="8" maxlength="20"/>';
		echo '<input type="text" id="t" class="smallformField" name="texte" value="',isset($_POST['texte'])?$_POST['texte']:"Message",'" size="18" maxlength="200"/>';
		echo '<input type="submit" title="Poster le message" class="smallformSubmit" name="submit" value="Shout" /><br /><br />';
		if ($smiley || $style)
			$this -> affBoiteEdition($smiley, $style);
		echo '<hr class="separateur" />';
		echo'</form></div>';
	}
	
	 // simple remarque : je ne fais qu'ajouter le code du smiley a la valeur de l'input, sur un onclick. Je n'y suis pas encore arrive sur un submit...ca ne l'affichait pas, meme si ca le rajoutait effectivement.
	function smileys() {
		echo '<input type ="image" src="smileys/rire.gif" onclick="document.getElementById(\'t\').value+=\' :-o \'"/>';
		echo '<input type ="image" src="smileys/sourire.gif" onclick="document.getElementById(\'t\').value+=\' :-) \'"/>';
		echo '<input type ="image" src="smileys/triste.gif" onclick="document.getElementById(\'t\').value+=\' :-( \'"/>';
		echo '<input type ="image" src="smileys/clin.gif" onclick="document.getElementById(\'t\').value+=\' ;-) \'"/>';
		}
	
	// comme pour les smileys
	function style() {
	echo '<select title="couleur du texte" class="smallformSelect" name ="couleur" onchange="document.getElementById(\'t\').value+=this.value">';
	$couleurs = array ('aqua', 'black', 'blue', 'fuchsia', 'gray', 'green', 'lime', 'maroon', 'navy', 'olive', 'purple', 'red', 'silver', 'teal', 'white', 'yellow');
	foreach ($couleurs as $v) 
		echo '<option value="['.$v.']" style="background-color:'.$v.'">&nbsp;</option>';
	echo '</select>';
		echo '<select title="couleur de la bordure" class="smallformSelect" name ="couleurbordure" onchange="document.getElementById(\'t\').value+=this.value">';
	foreach ($couleurs as $v) 
		echo '<option value="['.$v.'_b]" style="color:'.$v.'">[]</option>';
	echo '</select>';
	echo '<input type="submit" title="gras start tag" class="bold" value="b" onclick="document.getElementById(\'t\').value+=\' [b] \'" />'; 
	echo '<input type="submit" title="italique start tag" class="italic" value="i" onclick="document.getElementById(\'t\').value+=\' [i] \'" />';
	echo '<input type="submit" title="souligne start tag" class="underline" value="u" onclick="document.getElementById(\'t\').value+=\' [u] \'" />';
	echo '<input type="submit" title="surligne start tag" class="overline" value="o" onclick="document.getElementById(\'t\').value+=\' [o] \'" />';
	echo '<input type="submit" title="souligne et surligne start tag" class="underlineoverline" value="a" onclick="document.getElementById(\'t\').value+=\' [a] \'" />';
	echo '&nbsp;<input type="submit" title="end tag pensez a le mettre pour fermer chaque style" class="endtag" value="end" onclick="document.getElementById(\'t\').value+=\' [/end] \'" />';
	}

	 // permet de controler l'affichage/masquage de la boite d'edition
	function affBoiteEdition ($smiley, $style) {
	echo '<input class ="controle" title ="Afficher ou masquer le champ edition" type="button" name="controle" value="-" onclick="this.value=(this.value==\'-\')?\'+\':\'-\'; document.getElementById(\'boite\').style.visibility=(document.getElementById(\'boite\').style.visibility==\'hidden\')?\'visible\':\'hidden\';document.getElementById(\'boite\').style.display=(document.getElementById(\'boite\').style.display==\'none\')?\'block\':\'none\' " />';
	echo '<div id="boite" class="edit">';
	if ($smiley) {
			$this -> smileys();
			if ($style)
				echo '<br /><br />';
			}
		if ($style) 
			$this -> style();
	echo '</div>';
	}
}
?>

FICHIER index.php exemple

<html>
<head>
<title>
</title>
<link rel=stylesheet type="text/css"  href="shoutbox.css">
</head>
<body style="background-color : #cccccc">
<?php

// Include de la classe 

require_once ("shoutbox.cls.php"); 

// appel par defaut
// $shout (false, false, 20, "monfichier.txt"); est un autre exemple d'appel : pas de smiley, pas de style, 20ko pour la taille max du fichier, et le fichier s'appelle monfichier.txt

$shout = new shoutBox (); 
?>
</body></html>

 Conclusion

Je travaille encore dessus...notamment, j'essaye d'ajouter facilement des styles de texte (comme pour les smileys, par clic sur un bouton, et pas seulement en ajoutant du bbcode (par exemple) a la main.

Tout commentaire est le bienvenue!
-------------------------------------- ------------------------------------------

UPDA TE 26-01-05: Je viens d'ajouter la possibilite de jouer sur le style des textes, tout est cliquable.

UPDATE 28-01-05 :  Ajout de la date, et modifications du code (optimisation de certaines fonctions).

UPDATE 28 01 05 : oui encore un...j'ai ajoute la possibilite d'afficher / masquer la boite d'edition (avec les smileys, ou le style de texte), car je compte encore ajouter des controles sur le texte, et ca commence a prendre de la place ;-)

UPDATE 04 01 05 : ajout de couleurs pour le texte.  Quelques changement au niveau du code.

UPDATE 04 01 05 : ajout de bordures colorees au texte

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

26 janvier 2005 16:47:10 :
27 janvier 2005 16:45:08 :
28 janvier 2005 12:53:51 :
28 janvier 2005 13:39:05 :
28 janvier 2005 13:44:21 :
28 janvier 2005 14:21:27 :
28 janvier 2005 14:27:02 :
28 janvier 2005 16:22:29 :
04 février 2005 10:26:39 :
04 février 2005 10:37:11 :
04 février 2005 13:00:46 :
04 février 2005 13:06:24 :
04 février 2005 21:35:06 :
UPDATE 040105 : Juste un rajout de lien pour une demo : http://membres.lycos.fr/pat665/index.php
07 février 2005 18:09:52 :
UPDATE 070105 : correction d'un petit bug avec les slashes, et eradication d'une redondance stupide sur un tableau...
03 mars 2005 16:32:15 :
UPDATE 03 03 05 : rajout d'une fonction permettant d'equilibrer les tags fermants, ce afin d'avoir un maximum de chance d'avoir un HTML bien forme en sortie. Ce n'est pas encore parfait, il y a une petite faille, mais c'est mieux :-)
03 mars 2005 16:42:45 :
03 mars 2005 17:17:58 :

 Sources du même auteur

Source avec Zip ASTUCES/HACK PHP
SQUELETTE DE GESTION DES DROITS
[PHP 5.1] CLASS STRING : NOUVEL EXEMPLE SUR LA SPL
Source avec Zip Source avec une capture [PHP 5.1] PHOTOPHOP (PHPDRAW 2)
Source avec Zip Source avec une capture [PHP5.1] O-LOC : CLASSE ET BACKOFFICE D'INTERNATIONALISATION

 Sources de la même categorie

Source avec Zip IPHONE - ICÔNE D'APPEL TÉLÉPHONIQUE SUR L'ÉCRAN D'ACCUEIL par Rainbow
Source avec Zip Source avec une capture [APP WEB]SERVEUREXPLOREUR par thematrix01
Source avec Zip Source avec une capture MY.BOOKMARKS par inwebo
Source avec Zip M.V.C M.E.D par faceme
Source avec Zip Source avec une capture MOTEUR DE RECHERCHE YOUTUBE API par mtrix000

Commentaires et avis

Commentaire de astrolabbcracker le 27/01/2005 12:58:17

ta source a l'air de bien tourner mais...ça sert à quoi une shoutbox ?

Commentaire de malalam le 27/01/2005 13:05:01 administrateur CS

Pas a grandchose...faut bien l'avouer!
C'est un genre de mini forum, ou de mini chat a l'extreme limite...qui se place souvent en 1ere page d'un site, dans un coin. Les utilisateurs s'en servent pour mettre de petits messages sur la page d'accueuil quoi, et ca peut rendre plus vivant un site.

Et merci :-) Je travaille encore dessus, il y a qques erreurs de programmation, je veux changer un peu tout ca, et il manque  quelques fonctionnalites.

Commentaire de tazmania37 le 27/01/2005 21:49:23

Impec !
Tout à fait ce que je cherchais mais j'avais la flemme de le faire ! Thx !!! lol
Allez, 9/10 !
Continue...

Commentaire de malalam le 28/01/2005 09:34:35 administrateur CS

Merci :-)
Y aura des evolutions...!

Sinon, si quelqu'un s'en sert en ligne sur un site, s'il le veut, il peut me donner l'url, que je la mette ici pour demo, vu que moi je ne m'en sers pas en ligne lol.

Commentaire de tahiti_bob le 02/02/2005 10:36:59

Je ne suis pas sûr, mais il y a des class, ce qui requiert l'interpréteur PHP 5

Commentaire de malalam le 03/02/2005 09:27:40 administrateur CS

Les classes existaient deja en PHP 4. Maintenant, je ne sais pas, je travaille en PHP 5 effectivement. Je ne pense neanmoins pas qu'il y ait grandchose dans cette source qui pose probleme a PHP 4. Il faudrait tester.

Commentaire de darkdje le 04/02/2005 21:04:39

Moi je l'utilise et je la trouve pas mal
http://membres.lycos.fr/pat665/index.php pour la demo

Commentaire de malalam le 04/02/2005 21:36:33 administrateur CS

C'est fait, j'ai rajoute le lien, merci beaucoup Darkdje :-)
Je ne me suis pas penche sur le probleme parce que j'ai fait ca a la va vite, mais j'ai vu que mon style pour les <select> ne marche pas, et que tu l'avais change. Tu as mis quoi?

Commentaire de darkdje le 15/02/2005 10:26:01

Umh j'ai rien changer du tous moi lol
Sinon le probleme des ' il vient d'où

Commentaire de malalam le 15/02/2005 11:44:51 administrateur CS

Il est corrige, j'ai update une nouvelle version qui corrige ca.
Il y aura encore une version dans quelques temps, pour fermer les tags ouverts si l'utilisateur ne l'a pas fait, afin d'avoir en sortie un html correct (voire meme un xhtml correct).
Et je vais reflechir a une petite interface d'administration aussi, pour corriger, modifier, effacer des messages.

Commentaire de darkdje le 15/02/2005 12:21:50

Je la met sur le site desuite

Commentaire de ffvf1er le 09/06/2005 19:07:04

comment fait on pour mettre un shoud box sur un forum stv

dsl de mettre ce message ici mais je ne sais vraiment pas ou le mettre

Commentaire de malalam le 10/06/2005 09:02:52 administrateur CS

Hello,

mets le dans le forum.

De plus je n'ai pas bien compris ta question ? Pourquoi veux tu mettre une shoutbox dans un forum ?

Commentaire de Oziris le 07/09/2005 10:39:35

salut et merci pour ce code
par contre il me sort une erreur : fatale en ligne 74 du fichier shoutbox.cls.php

Fatal error: Call to undefined function: file_get_contents() in c:\home\shootbox\shoutbox.cls.php on line 74

si tu a une reponse au probleme merci

Commentaire de malalam le 07/09/2005 10:50:04 administrateur CS

Hello,

bah oui. ce genre d'erreur indique que la version de php utilisée ne supporte pas la fonction en question.

file_get_contents () nécessite au moins php4.3.0.
Cela veut dire que tu as une version antérieure à la 4.3.0.
Mon conseil : mets ta version de php à jour (on en est à la 5, ça ne fera pas de mal ;-) ). Si c'est chez ton hébergeur, commence
par lui demander s'il ne peut pas upgrader sa version de php.

Sinon, t peux essayer de modifier cette ligne. A la place de file_get_contents (), tu peux essayer avec fread ().
Je ne sais plus quelle est la ligne exacte (j'ai changé de pc, je n'ai plus cette source, et pas le temps de regarder tout de suite). Mais en gros :
$chaine = fread ($fichier, filesize ($fichier));

$ chaine étant la chaine dans laquelle je mets le contenu du fichier (je fais pareil avec file_get_contents () ),
$fichier étant le nom du fichier utilisé
filesize ($fichier) est à ajouter par rapport à file_get_contents (), car fread doit savoir combien d'octets lire. Donc on lui dit de
lire un nombre d'octets égal à la taille du fichier.

J'espère que cela va t'aider. Sinon, il va falloir que tu patientes avant que jepuisse télécharger mon code, le regarder, et faire les modifications,
puis te les donner.

Le mieux restant quand même d'upgrader php, si possible.

Commentaire de Oziris le 08/09/2005 10:18:54

merci pour ta reponse,
je vien de changer ma version de php mais toujour la meme erreur perssiste
voila la ligne en question

$tabtmp = explode('||', file_get_contents($this -> fichier));

comme je suis un noob je pateinte pour la reponse parce qu je n'est pas compri les infos suivante dans ton message.


Commentaire de malalam le 08/09/2005 10:43:19 administrateur CS

Ok lol. Tu as installé quelle version de php cette fois ?

Commentaire de malalam le 08/09/2005 13:26:32 administrateur CS

Sinon remplace ça :

#  if(get_magic_quotes_runtime()===1)
#             $tabtmp = explode('||', stripslashes(file_get_contents($this -> fichier)));
#         else
#             $tabtmp = explode('||', file_get_contents($this -> fichier));

par ça :

#  if(get_magic_quotes_runtime()===1)
#             $tabtmp = explode('||', stripslashes(fread($this -> fichier), filesize ($this -> fichier)));
#         else
#             $tabtmp = explode('||', fread($this -> fichier), filesize ($this -> fichier));

Ca devrait fonctionner.

Commentaire de starb le 01/02/2006 21:33:50

Dans mon cas pour que cela fonctionne j'ai dû créer un fichier shoutbox.txt et le CHMODer pour qu'il accepte les entrées de données. (Ce qui devrait être spécifié dans les instructions qu'il n'y a pas). Malgré tout, merci pour ce script!

Commentaire de malalam le 02/02/2006 09:25:58 administrateur CS

Mea culpa, et pour les instructions, et pour le fichier...je viens de re-jeter un oeil à ce vieux script et effectivement, la création du fichier s'il n'existe pas ne se fera pas à tous les coups, selon le serveur.

Commentaire de tutoandco le 23/04/2006 20:36:42

slt je voulais te dire deja que ton script est
bien mais est ce que l on peut enlever les styles du champ afficher masquer ?

Commentaire de malalam le 24/04/2006 09:11:22 administrateur CS

hello,

merci.
Je ne pige pas bien ta question, mais à priori, oui ? Il suffit de toucher un peu le code...tu veux enlever quoi au juste ?

Commentaire de tutoandco le 24/04/2006 10:03:26

je veut enlever les styles c est a dire je veut
pas que les visiteurs puissent mettre le texte en couleur, en gras ou autre

Commentaire de malalam le 24/04/2006 10:21:59 administrateur CS

Ahh!
$shout = new shoutBox (true, false); // tu auras les smileys, mais pas les styles.

Commentaire de tutoandco le 25/04/2006 09:00:47

merci :)

Commentaire de tutoandco le 25/04/2006 09:03:08

est ce qu on peut rajouter des smileys ?

Commentaire de malalam le 25/04/2006 09:10:23 administrateur CS

Ben oui :

// tableau des smileys, avec le chemin.
    $this -> arrSmiley = array ('<img src="smileys/rire.gif" />', '<img src="smileys/sourire.gif" />', '<img src="smileys/triste.gif" />', '<img src="smileys/clin.gif" />');
    // tableau des codes correspondants. Ajoutez ce que vous voulez, mais les 2 tableaux DOIVENT comporter le meme nombre d'entrees, evidemment!
    $this -> arrSmileyTrans = array (':-o', ':-)', ':-(', ';-)');

il suffit de modifier ces 2 tableaux.

Commentaire de tutoandco le 25/04/2006 10:13:57

ok merci :)

Commentaire de tutoandco le 25/04/2006 14:48:36

une dernière question comment on enlève la date ?
ou sinon comment on met des slashs entre les dates ?

car ca me donne ca :
[250406] et ca fait pas tres beau :-/
merci d avance :)

Commentaire de malalam le 25/04/2006 15:00:01 administrateur CS

Dan,s la méthode shoutbox::valider, tu as cette ligne :
$entree=htmlentities($pseudo.'||'.$texte.'||').date("dmy").'||';
tu remplaces le date ("dmy") par ce que tu veux : date ("d-m-y") par exemple.

Si tu veux la virer : dans la méthode shoutbox::affiche, cette lmigne :
echo '<span class="pseudo">',$tabshout['pseudo'][$i],'</span>','<span class="date"> ','[',$tabshout['date'][$i],']','</span>',' :: ','<span class="texte">',$tabshout['texte'][$i],'</span><br />';
tu remplaces $tabshout['texte'][$i], par une chaîne vide, par exemple.

Commentaire de tutoandco le 25/04/2006 17:17:29

merci c'est cool :) je mettrait le lien vers la shootbox des que jaurai fini la v4 de mon site :)

Commentaire de Mamat3000 le 12/07/2006 07:34:19

Slu, Merci pour ce script...Je voulais avoir la possibilité d'afficher un minimum de shout dans un tableau, genre le derniers shout seulement, voir même ajouter un scroll-bar invisible pour dérouler.

Merci

Commentaire de malalam le 12/07/2006 10:14:25 administrateur CS

Hello,

ben par exemple, tu peux, dans la méthode soutbox::affiche(), modifier cette ligne :
$i=count($tabshout['pseudo'])-1;
Ici je compte les lignes.
Bref, tu fixes $i au nombre que tu veux afficher, par exemple (en prenant garde qu'il ne dépasse pas la taille du tableau, quand même).

Commentaire de Mamat3000 le 12/07/2006 12:03:50

hum...je vais semblé ignorant, (que je suis) mais j'arrive pas.

// affichage proprement dit
$i=count($tabshout['pseudo'])-1;
for ($i; $i>=0; $i--)
echo '<span class="pseudo">',$tabshout['pseudo'][$i],'</span>','<span class="date"> ','[',$tabshout['date'][$i],']','</span>',' :: ','<span class="texte">',$tabshout['texte'][$i],'</span><br /><hr class="separateur" />';
}
}

Un coup de main...je commence en PHP, alors... ;) MErci

Commentaire de malalam le 12/07/2006 12:22:37 administrateur CS

$iBorne = 5;
$i = (($iMax = count ($tabshout['pseudo']) - 1) >= $iBorne)?$iBorne:$iMax;
for ($i; $i>=0; $i--)
echo '<span class="pseudo">',$tabshout['pseudo'][$i],'</span>','<span class="date"> ','[',$tabshout['date'][$i],']','</span>',' :: ','<span class="texte">',$tabshout['texte'][$i],'</span><br /><hr class="separateur" />';
}
}

Commentaire de Mamat3000 le 12/07/2006 14:04:24

Beaucoup mieux, mais les shouts qui s'affiche sont les 5 premiers, et non les 5 derniers. Mais je fait qqe test pour découvrir comment régler ce prob...Merci

Commentaire de Mamat3000 le 12/07/2006 14:39:50

Bon, Les + - == 0 etc ne fontionne pas...lol...je donnes ma langue au chat..tu connais la raison?

Commentaire de Mamat3000 le 18/07/2006 07:50:48

Ton code fonctionne bien, mais si je peux rappeler mon message précédent, la manière que le code affiche, il liste les anciens message, et non les 5 derniers. Tu a une idée pour inverser l'envoi du formulaire dans le .txt pour qu'il enregistre le dernier message en haut, ou simplement lire à partir du bat. 'Merci

Commentaire de aton69 le 20/07/2006 03:25:38

serieu il est super 10/10

Commentaire de malalam le 20/07/2006 09:38:50 administrateur CS

Mamat => je ne comprends pas. Mon code fait ceci :il enregistre les messages dans un fichier texte, les derniers arrivés étant en fin de fichier.
Puis pour afficher, il lit ce fichier texte, parse les messages, les met dans un tableau, et lit le tableau en partant de la fin.
Tu n'as rien modifié ?

Aton => merci :-)

Commentaire de Mamat3000 le 20/07/2006 11:46:25

Malalam => Pour l'envoi des informations vers le fichier txt, tout semble ok, et suis ce que tu expliques, c'est la lecture du fichier qui semble foiré, et ne lit pas à partir du bas, ou simplement, affiche pas de la bonne façon.
J'ai seulement modifier ce que tu m'as donné plus haut, et fait des changements seulement dans le nombre, et symbole pour en arriver ou je veux..mais jamais réussi.

<?php
require_once ("smallform.cls.php");

class shoutBox {

var $fichier; // nom du fichier
var $smiley; // gestion des smileys
var $taille; // taille du fichier
var $style; // gestion du style des textes
var $arrSmiley;
var $arrSmileyTrans;
var $arrStyle;
var $arrStyleTrans;


//constructeur, je changerai plus tard le _construct. Les parametres optionnels sont fixes par defaut.

function shoutBox($smiley=true, $style=false, $taille=10, $fichier="shoutbox.txt") {
$this -> smiley = $smiley;
$this -> style = $style;
$this -> fichier = $fichier;
$this -> taille = $taille*1024;
// tableau des smileys, avec le chemin.
$this -> arrSmiley = array ('<img src="smileys/rire.gif" />', '<img src="smileys/sourire.gif" />', '<img src="smileys/triste.gif" />', '<img src="smileys/clin.gif" />');
// tableau des codes correspondants. Ajoutez ce que vous voulez, mais les 2 tableaux DOIVENT comporter le meme nombre d'entrees, evidemment!
$this -> arrSmileyTrans = array (':-o', ':-)', ':-(', ';-)');
// tableau des styles de texte. Memes remarques que pour les smileys.
$this -> arrStyle = array ('<span style="font-weight:bold">','<span style="font-style:italic">', '<span style="text-decoration:underline">', '<span style="text-decoration:overline">', '<span style="text-decoration:underline overline">', '<span style="color:aqua">', '<span style="color:black">', '<span style="color:blue">', '<span style="color:fuchsia">', '<span style="color:gray">', '<span style="color:green">', '<span style="color:lime">', '<span style="color:maroon">', '<span style="color:navy">', '<span style="color:olive">', '<span style="color:purple">', '<span style="color:red">', '<span style="color:silver">', '<span style="color:teal">', '<span style="color:white">', '<span style="color:yellow">', '<span style="border:1pt solid aqua">','<span style="border:1pt solid black">', '<span style="border:1pt solid blue">', '<span style="border:1pt solid fuchsia">','<span style="border:1pt solid gray">', '<span style="border:1pt solid green">', '<span style="border:1pt solid lime">', '<span style="border:1pt solid maroon">', '<span style="border:1pt solid mavy">', '<span style="border:1pt solid olive">', '<span style="border:1pt solid purple">', '<span style="border:1pt solid red">', '<span style="border:1pt solid silver">', '<span style="border:1pt solid teal">', '<span style="border:1pt solid white">', '<span style="border:1pt solid yellow">', '</span>');
$this -> arrStyleTrans = array ('[b]', '[i]','[u]', '[o]', '[a]', '[aqua]', '[black]', '[blue]', '[fuchsia]', '[gray]', '[green]', '[lime]', '[maroon]', '[navy]', '[olive]', '[purple]', '[red]', '[silver]', '[teal]', '[white]', '[yellow]', '[aqua_b]', '[black_b]', '[blue_b]', '[fuchsia_b]', '[gray_b]', '[green_b]', '[lime_b]', '[maroon_b]', '[navy_b]', '[olive_b]', '[purple_b]', '[red_b]', '[silver_b]', '[teal_b]', '[white_b]', '[yellow_b]', '[/end]');
// validation du formulaire
if (isset($_POST['submit']) && $_POST['submit']=="Shout")
$this -> valider(!empty($_POST['texte'])?$_POST['texte']:"Oouups, oubli texte", !empty($_POST['pseudo'])?$_POST['pseudo']:"Anonyme");
echo '<div class="shoutbox">';
// instantiation d'un objet formulaire
$form = new smallForm($this -> smiley, $this -> style);
// appel de la methode affichant les messages
$this -> affiche();
echo '</div>';
}

// methode enregistrant le message poste dans le fichier
function valider($texte, $pseudo) {
$texte = $this -> valideCode($texte);
if(get_magic_quotes_gpc()===0)
$entree = addslashes($pseudo.'||'.$texte.'||');
$entree=htmlentities($pseudo.'||'.$texte.'||').date("d-m-y").'||';
// different systeme d'ouverture selon si le fichier existe ou doit etre efface, ou n'existe pas encore
if (file_exists($this -> fichier) && filesize($this -> fichier) >= $this -> taille)
$fp = fopen($this -> fichier, 'w') or die("Echec d'ouverture du fichier");
else
$fp = fopen($this -> fichier, 'a') or die("Echec d'ouverture du fichier");
$ecriture=fwrite($fp, $entree) or die ("Echec d'ecriture dans le fichier");
fclose ($fp);
}

// fonction recuperant les valeurs du tableau en fonction d'un calcul modulo (cree pour recuperer chaque pseudo, message et date dans un tavbleau specifique
function getValeursTab($tab, $div, $reste) {
while ($dmp=current($tab)) {
if (key($tab)%$div==$reste)
$tabT[] = $tab[key($tab)];
next($tab);
}
return $tabT;
}

// methode pour afficher les messages.
function affiche () {
if(file_exists($this -> fichier)) {
fopen($this -> fichier, 'r') or die ("Echec d'ouverture du fichier");
// on parse une 1ere fois pour recuperer dans un tableau chaque pseudo suivi de chaque message
if(get_magic_quotes_runtime()===1)
$tabtmp = explode('||', stripslashes(file_get_contents($this -> fichier)));
else
$tabtmp = explode('||', file_get_contents($this -> fichier));
// si smiley, on va chercher la methode les gerant
if ($this -> smiley)
$tabtmp = $this -> parseCode($tabtmp, $this -> arrSmiley, $this -> arrSmileyTrans);
// si style, on va chercher la methode les gerant...
if ($this -> style)
$tabtmp = $this -> parseCode($tabtmp, $this -> arrStyle, $this -> arrStyleTrans);
// recuperation dans un tableau associatif de chaque pseudo, message, date
$tabshout = array ('pseudo' => $this -> getValeursTab($tabtmp, 3, 0), 'texte' => $this -> getValeursTab($tabtmp, 3, 1), 'date' => $this -> getValeursTab($tabtmp, 3, 2));
// affichage proprement dit
$iBorne = 10;
$i = (($iMax = count ($tabshout['pseudo']) - 1) >= $iBorne)?$iBorne:$iMax;
for ($i; $i>=0; $i--)
echo '<span class="pseudo">',$tabshout['pseudo'][$i],'</span>','<span class="date"> ','[',$tabshout['date'][$i],']','</span>',' :: ','<span class="texte">',$tabshout['texte'][$i],'</span><br /><hr class="separateur" />';
}
}

// On parse les codes speciaux
function parseCode ($tab, $output, $input) {
return $tab = str_replace($input, $output, $tab);
}

// methode pour equilibrer le nombre de tags fermants, afin d'avoir un html correct en sortie
function valideCode($texte) {
$ouvertures = 0;
$tab = $this -> arrStyleTrans;
array_pop($tab);
foreach ($tab as $txt)
$ouvertures += substr_count($texte, $txt);
$fermetures = substr_count($texte, '[/end]');
if ($fermetures < $ouvertures)
$texte .= str_repeat('[/end]', $ouvertures - $fermetures);
if ($ouvertures < $fermetures) {
$oter = $fermetures - $ouvertures;
$tab = explode(' ', $texte);
$i = 0;
foreach ($tab as $k => $v) {
if ($i == $oter)
break;
if ($v == '[/end]') {
$tab[$k] ='';
$i++;
}
}
$texte = implode(' ', $tab);
}
return $texte;
}
}
?>

Commentaire de malalam le 20/07/2006 11:52:18 administrateur CS

Je ne pige pas.
Bon, testons :
$iBorne = 10;
$i = (($iMax = count ($tabshout['pseudo']) - 1) >= $iBorne)?$iBorne:$iMax;
for ($i; $i>=0; $i--)

=>

$jBorne = 10;
$j = (($jMax = count ($tabshout['pseudo']) - 1) >= $jBorne)?$jBorne:$jMax;
for ($i = 0; $i<$j; $i++)

Commentaire de Mamat3000 le 20/07/2006 14:01:17

Bon, bien j'y arrive pas...laisse tomber, je trouverai un autre moyen..Meric pour l'aide

Commentaire de malalam le 20/07/2006 15:36:05 administrateur CS

Ben pq tu ne fais pas ce test...? C'est un test, pour savoir ce qu'il t'affiche dans ce cas-ci.

Commentaire de Mamat3000 le 21/07/2006 05:13:02

J'ai fait le test, il inverse l'affichage, mais affiche pas les 5 derniers...toujours pareil...mais bon...Comme j'ai dit, ce n'est pas grave, ton script reste super. J'ai rajouté une barre de déroulement pour le moment...Dont je ne suis toujours pas capable de la mettre transparente sur Firefox. Mais ça ces une autre histoire.

www.starwarsempire.org Là tu pourras voir ton SHOUT. ;)

Commentaire de ledjdu24 le 25/07/2006 19:44:56

Heu c'est ou que je epxu modifiai la largeur ?

Commentaire de malalam le 26/07/2006 08:31:26 administrateur CS

Ledju => dans me fichier css, tu cherches les styles de la boîte "shoutbox".

Mamat3000 => Bon, je vais réinstaller ce script et le tester (sois patient, je suis assez débordé), et si
je trouve un peu plus de temps, je le réécrirai parce que bon, il commence à dater, et le code me fait un peu peur ;-)
En tous cas, j'irai jeter un oeil sur ton site, merci :-)

Commentaire de mrmadoverclocker le 30/08/2006 03:47:32

Hello,
Ce code est assez clean je trouve,merci pour cette belle shoutbox. 10/10
Si tu le reecris,il devrait devenir excellent.
Cependant,j'ai un petit probleme : comment forcer php a travailler en utf-8 pour afficher les caracteres accentues ? (mon site est en utf-8).

Commentaire de lilhouh le 27/10/2006 17:14:17


Bonjour,

Merci pour ce code. Très pratique et compréhensible...dans sa globalité; cependant, en bonne débutante que je suis, je ne vois pas trop comment changer les paramètres de la zone de 'message'.
(lui donner plus de hauteur : 4-5 lignes par exemple).
Autre question. Est -il possible de restreindre le nombre des messages affichés ? ou du moins comment supprimer les plus vieux ?

Merci par avance.

Commentaire de Firey le 23/12/2006 21:02:40

On fait comment pour augmenter sa taille?

Commentaire de SpacePirate le 06/07/2009 14:36:02

Bonjour, je trouve cette shoutbox très pratique mais je suis débutant et rencontre un petit problème, lorsque j'ajoute un message la page se rafraichi bien mais uniquement sur "mon" navigateur pas sur le navigateur des autres visiteurs!

Je vous donne le lien de la page en question : http://www.space-pirate.net/radio/radio.php

Merci d'avance pour votre aide!

Commentaire de zarbinut35 le 07/10/2010 18:54:33

Bravo,
Super shootbox elle m'a sauvé la vie.
Merci

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,794 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales