[PHP] [PHP][AJAX][MYSQL] Faire un Compteur de connectés dynamique.

    Publicités

Users Who Are Viewing This Thread (Total: 0, Members: 0, Guests: 0)

Sm0cky

V
Apr 17, 2011
505
0
441
29
Bonjours,

Afin de faire un compteur dynamique de connectés en live pour votre site, il va falloir y intégrer la technologie: PHP & JQUERY.

Mais qu'est-ce ? PHP est un dérivé du JAVA afin de rendre votre site web dynamique, par exemple: interagir avec une base de donnée.

Le JQUERY, est un dérivé du XML & du Javascript différent du JAVA.Il va servir à recharger notre compteur toute les X secondes.

Dans un premier temps, il nous faut notre base de donnée:

Pour cela il vous faut un hébergeur MYSQL comme par exemple free-h.org (payant & gratuit).

Faite cette requête SQL sur votre serveur MYSQL:
PHP:
CREATE TABLE IF NOT EXISTS `ma_database` (
  `id` int(255) NOT NULL AUTO_INCREMENT,
  `pseudo` varchar(255) NOT NULL,
  `connecte` enum('0','1') NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=56 ;

Ensuite, il faut déclarer la connexion au serveur mysql en php, pour cela créer un dossier nommée "CONFIG" puis créer dedans un fichier sql.php

Voici le contenu de SQL.php:

PHP:
<?PHP
	/* CONFIG MYSQL */
	$SQL_HOST = "SQL.HEBERGEUR.FR";//Votre hebergeur SQL
	$SQL_USER = "IDENTIFIANT";//Votre Identifiant
	$SQL_PASS = "MOT DE PASSE";//Votre MOT de Passe
	$SQL_DATA = "ma_database";//Votre database
	

/* CONNEXION MYSQL */
$mysql_connect = mysql_connect($SQL_HOST,$SQL_USER,$SQL_PASS) or die("La connexion avec notre base de données à échouée.");
$mysql_database = mysql_select_db($SQL_DATA) or die("Une erreur s'est produite avec la base de données.");



?>
Puis créer compteur.php HORS DU DOSSIER "CONFIG":
PHP:
<?PHP
include('./CONFIG/sql.php');
//Notre Fonction qui récupère les connectés:
//$STR correspond à la variable mes_connectés vous pouvez changer celle-ci, ne doit pas contenir de caractères spéciaux.
//NE doit pas contenir de caractères spéciaux sauf des _ 

function Connecte($str){
$tmp = mysql_query("SELECT COUNT(*) AS $str FROM
".$SQL_DATA." WHERE (connecte = '1')") or die(mysql_error()."Erreur lors de la récupération des Connectés");
$tmp = mysql_fetch_assoc($tmp);
return $tmp[$str];
}

//puis faite un simple echo();
// sécurisez ce echo(); via is_numeric();
 echo is_numeric(Connectes('mes_connectes'));

?>

Enfin, viens notre JQUERY & JAVASCRIPT(simple):
Dans les Balises <head> de votre document ajoutez:"<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.0.min.js"></script><script type="text/javascript" src="compteur.js"></script>"
Dans les Balises <div> souhaité où apparraisse vos connectés en live ajoutez: "<div id='mes_connectes'></div>";

Créer compteur.js
HORS DU DOSSIER "CONFIG" dans le même répertoire que votre page d'appelle à compteur.js

PHP:
var membres=0;// Nombre de connectés par défaut.
var secondes = 2000;// Recharger le compteur toutes les 2000 milisecondes soit 2 Secondes.
var my_id = '#mes_connectes';
// Bon à savoir: Si le <div></div> souhaité porte un attribut "ID", var my_id = ''; contient toujours un "#" avant le nom de l' "ID" du div.
//Exemple:<div id="mes_connectes"></div> alors var my_id = ''; devient var my_id = '#mes_connectes'; 
// Bon à savoir: Si le <div></div> souhaité porte un attribut "CLASS", var my_id = ''; contient toujours un "." avant le nom de la "CLASS" du div.
//Exemple:<div class="mes_connectes"></div> alors var my_id = ''; devient var my_id = '.mes_connectes'; 

	function membres_enligne()
	{
		$.ajax({
		  url: "/compteur.php",
		  type: "GET",
		  success : function(html) {		
			$(my_id).fadeOut(200, function () {
			$(my_id).css("display","none");
			$(my_id).html(html);
			$(my_id).fadeIn(200);
			});
		}});
		membres++;
		setTimeout("membres_enligne()",secondes);
//consulter var secondes, celle-ci est réglé à 2000 millisecondes soit 2 secondes (Recommandé afin d'évité les bogues.)
	}	
	(function($){ $(document).ready(function() {
			membres_enligne();
	})})(jQuery); 
       $.noConflict();
 
Last edited: