runnerjp
asked on
counting users on pages.
throughout my site i track users...
i have a forum section and want to display how many users and who is viewing the forum...
the thing is i store the page next to the username that they are on and im woundering if i could search for short hand of the url... examples will help make this clearer...
here are a few examples of links on my forum
index.php?page=post&forum= <?php echo $forum?>
index.php?page=mainforums
index.php?page=reply&id=<? echo $id ?>
and so on... as you guys can see there are alot of veriations... is there away to search for the links that contain
index.php?page=reply
index.php?page=mainforums
index.php?page=post
to just display them??
i have a forum section and want to display how many users and who is viewing the forum...
the thing is i store the page next to the username that they are on and im woundering if i could search for short hand of the url... examples will help make this clearer...
here are a few examples of links on my forum
index.php?page=post&forum=
index.php?page=mainforums
index.php?page=reply&id=<?
and so on... as you guys can see there are alot of veriations... is there away to search for the links that contain
index.php?page=reply
index.php?page=mainforums
index.php?page=post
to just display them??
Where is the data stored? In a database? In a text file? Need more info...
ASKER
sorry ok its stored in a database... below is how i store the information..
$timestamp = time();
$timeout = $timestamp - 180;
$username= get_username($_SESSION['user_id']);
function selfURL() {
$s = empty($_SERVER["HTTPS"]) ? '' : ($_SERVER["HTTPS"] == "on") ? "s" : "";
$protocol = strleft(strtolower($_SERVER["SERVER_PROTOCOL"]), "/").$s;
$port = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]);
return $protocol."://".$_SERVER['SERVER_NAME'].$port.$_SERVER['REQUEST_URI']; }
function strleft($s1, $s2) { return substr($s1, 0, strpos($s1, $s2)); }
$filename = (selfURL());
//Insert User
$insert = mysql_query("REPLACE INTO `useronline` SET `timestamp`='$timestamp', `ip`='".$_SERVER['REMOTE_ADDR']."', `file`='$filename',`user`='$username',`user_id`='".$_SESSION['user_id']."'")
or die(mysql_error());
?>
To select records from a database you would use the SQL SELECT statement. Something like this:
SELECT user, FROM useronline WHERE file LIKE "%index.php?page=reply%";
The LIKE operator allows a wildcard type search, % means any sequence of any characters.
To find currently online users (last ten minutes) within a particular page, the PHP would be something like the below:
SELECT user, FROM useronline WHERE file LIKE "%index.php?page=reply%";
The LIKE operator allows a wildcard type search, % means any sequence of any characters.
To find currently online users (last ten minutes) within a particular page, the PHP would be something like the below:
$page = "index.php?page=mainforums";
$sql = "SELECT * FROM useronline
WHERE file LIKE '%$page%' AND
timestamp > now() - interval 10 minute";
$res = mysql_query($sql) or die('Error: '.mysql_error());
if(mysql_num_rows($res) > 0) {
echo '<div class="CurrentlyOnline">';
while($row = mysql_fetch_assoc($res))
echo $row['user'].'<br />';
echo '</div>';
}
A should hurry to add that the database server can not use an index when you start the search phrase with %. It would be better for performance if you could do like this:
WHERE file LIKE 'http://mydomain.com/path/$page%'
ASKER
well i display my pages like so... http://mysite.com/members/index.php?page=reply
Yes... if $page contains "index.php?page=reply" you would use this:
WHERE file LIKE 'http://mysite.com/members/$page%'
If I am not answering your question, I may have misunderstood. Please elaborate.
ASKER
your kinda getting there lol
thing is its an include link so i have many files with index... im just looking for those with
index.php?page=reply
index.php?page=mainforums
index.php?page=post
thing is its an include link so i have many files with index... im just looking for those with
index.php?page=reply
index.php?page=mainforums
index.php?page=post
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
thats 100% what i was looking for.. i will start work on it right away ty