counter

Samuel

Erfahrenes Mitglied
PHP:
<?php
$minuten = 2;
session_start();
$sid = session_id();
$time_stamp = mktime();
$new_time_stamp = $time_stamp - $minuten * 60;
$conn = mysql_connect("localhost", "", "") or die(mysql_error());
mysql_select_db("test") or die(mysql_error());
$sql = "INSERT INTO counter (uhrzeit, sessid) VALUES ('".$time_stamp."', '".$sid."')";
$insert = mysql_query($sql) or die(mysql_error());
$sql = "SELECT DISTINCT COUNT(sessid) FROM counter WHERE uhrzeit > '".$new_time_stamp."'";
$result = mysql_query($sql) or die(mysql_error());
$user_online = mysql_result($result, 0);
$sql = "DELETE FROM counter WHERE uhrzeit <= '".$new_time_stamp."'";
$delete = mysql_query($sql) or die(mysql_error());
$sql = "SELECT sessid FROM counter GROUP BY sessid";
$result = mysql_query($sql) or die(mysql_error());
$sids = array();
while($res = mysql_fetch_array($result)) {
  $sids[] = $res['sessid'];
}
$fp = fopen("counter.txt", "r");
$bisher = fgets($fp, 512);
if(!in_array($sid, $sids)) {
  $bisher++;
  fputs($fp, $bisher);
}
fclose($fp);
echo "Bisher: ".$bisher."<br>";
echo "User Online: ".$user_online;
?>

ich will mit dem script anzeigen wieviele user schon online waren und wer gerade online ist (zusätzlich soll es noch ne reloadsperre haben - in dem falle eine die zwei minuten aktiv ist)

wenn ich jetzt die seite anzeigen lasse und strg+r drücke zeigt es mir bei useronline immer eins dazu an. also zuerst 1, dann 2, dann 3

$sql = "SELECT DISTINCT COUNT(sessid) FROM counter WHERE uhrzeit > '".$new_time_stamp."'";

das sollte mir doch bei drei einträgen mit der selben sessid doch nur eins ausgaben... ich glaub da liegt der fehler...

würde mich auf eine rasche antwort sehr freuen
danke im voraus

greetingz
 
Ersetze mal die Zeile
PHP:
$sql = "SELECT DISTINCT COUNT(sessid) FROM counter WHERE uhrzeit > '".$new_time_stamp."'";
durch
PHP:
$sql = "SELECT DISTINCT COUNT(sessid) FROM counter WHERE uhrzeit > '$new_time_stamp'";
Da hattest du meiner Meinung nach irgendwo den Wurm in deinem Anführungszeichensalat. Wenns dann immer noch nicht geht, meld dich nochmal.
 
Wozu das Count ? könntest du auch später im array zählen.. villeicht gehts dann, Hatte auch schon des öfteren probleme mit COUNT wenn noch mehr parameter übergeben wurden.
 
Hi,
nur mal als Anmerkung: Du solltest die alten Sessions löschen, bevor Du die Anzahl der aktiven Sessions ermittelst!

Gruß, snuu
 
So wie es momentan programmiert ist, zählst Du auch die abgelaufenen Sessions mit, weil Du die nämlich erst nach dem Zählen löschst.
 
Zurück