Scripts

[ajax] live users

Stel je hebt in je menu een kopje met actieve leden of online users , dan moet je de pagina refreshen om te zien wie er op dit moment online is. Dit 'scriptje' zet de online users in een div. Als je over die div beweegt met je muisaanwijzer zal de informatie over actieve leden automatisch worden geupdate m.b.v. ajax. Zeer basic en slordig in elkaar gezet, maar het werkt. Mooie versie volgt nog waarschijnlijk. Werkwijze: Upload alle files naar je server, verander de config.php naar je eigen wensen. Op de pagina waar je het wilt laten zien, include je show.php, en roep je het aan dmv showusers(); Heb helaas geen plaats om een voorbeeld te plaatsen.

ajax-live-users
[b][show.php][/b]
[code]
<?php 

function showusers() {
include("config.php");
$num = mysql_num_rows($res);

if (!($res = mysql_query ($sql))) {
  trigger_error (mysql_error ());
}
else {
	if($num >= 1) {
		$i = 0;
		while($data = mysql_fetch_assoc($res)) {
			if($i > 0) {
				$userdata .= ", " . $data[$namefield];
	
			} else {
				$userdata = $data[$namefield];
			}
			$i++;
		}
				
	} else {
		$userdata = "Er zijn geen users online";
	}
}
?>
<script type="text/javascript" src="ajax.js"></script>

<div onmouseOver="ajaxFunction();" id="usercontainer">
<?php
echo $userdata;
?>
</div>
<?php
}
?>
[/code]

[b][users.php][/b]
[code]
<?php
//return online-users to ajax
include("config.php");
$num = mysql_num_rows($res);
if (!($res = mysql_query ($sql))) {
  trigger_error (mysql_error ());
}
else {
	if($num >= 1) {
		$i = 0;
		while($data = mysql_fetch_assoc($res)) {
			if($i > 0) {
				$userdata .= ", " . $data[$namefield];
	
			} else {
				$userdata = $data[$namefield];
			}
			$i++;
		}
				
	} else {
		$userdata = "Er zijn geen users online";
	}
}
echo $userdata;

?>
[/code]

[b][ajax.js][/b]
[code]
function ajaxFunction()
  {
  var xmlHttp;
  try
    {
    // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
    }
  catch (e)
    {
    // Internet Explorer
    try
      {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
      }
    catch (e)
      {
      try
        {
        xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
      catch (e)
        {
        alert("Your browser does not support AJAX!");
        return false;
        }
      }
    }
    xmlHttp.onreadystatechange=function()
      {
      if(xmlHttp.readyState==4)
        {
        document.getElementById('usercontainer').innerHTML = xmlHttp.responseText;
        }
      }
    xmlHttp.open("GET","users.php",true);
    xmlHttp.send(null);
  }
[/code]

[b][config.php][/b]
[code]
<?php

$dbHost						= ""; 
$dbUser 					= ""; 
$dbPass						= ""; 
$dbName						= ""; 
$namefield					= ""; 

mysql_connect($dbHost, $dbUser, $dbPass) or trigger_error(mysql_error());
mysql_select_db($dbName) or trigger_error(mysql_error());

$qry = "SELECT * FROM users WHERE status = 'online'";

?>
[/code]

Reacties

0
Nog geen reacties.