Online Anzeige

Henselmania

Mitglied
Hallo Leute,
ich habe ein kleines Problem und ich komm irgendwie nicht dahinter...
Aber sicher könnt ihr mir helfen.

Zum Problem:
Ich habe einen Login bereich mit Sessions erstellt das Funktioniert auch alles super.
Doch nun wollte ich eine Anzeige einbauen so das alle Eingeloggten User auch sehen wer noch ON ist.

Dazu habe ich hier im Forum schon was nettes gefunden. Doch bekomme ich es einfach nicht hin.
Das Probelm ist das er mir keinen Timestamp in die DB schreibt bzw. auch nicht ausliest.

Hier meine Daten:
Mysql Tabellenstruktur
#
# Tabellenstruktur für Tabelle `benutzerdaten`
#

CREATE TABLE benutzerdaten (
Id int(11) NOT NULL auto_increment,
Nickname varchar(50) NOT NULL default '',
Kennwort varchar(50) NOT NULL default '',
Nachname varchar(50) NOT NULL default '',
Vorname varchar(50) NOT NULL default '',
Mail varchar(50) NOT NULL default '',
Online int(11) NOT NULL,
PRIMARY KEY (Id)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

online.php
PHP:
<?php 
include ("checkuser.php");

$userid = $_SESSION["user_id"];
if(!empty($userid)) {  ?>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<?

  $db = mysql_connect(localhost,xxx,xxx);
  mysql_select_db(xxx,$db);
  $time = time();
  $onlineborder = $time - (5 * 60);
  $onlineborder2 = $time + (10 * 60);
  $online= mysql_query("SELECT COUNT(*) FROM benutzerdaten WHERE Online >= '$onlineborder' and Online <= '$onlineborder2'");
  $online = mysql_fetch_row($online);
  $query = "SELECT Nickname FROM benutzerdaten WHERE Online >= '$onlineborder' and Online <= '$onlineborder2'";
  $result = mysql_query($query,$db);
  while ($row = mysql_fetch_array($result,MYSQL_ASSOC))

 

  echo "<font size=1>".$row["Nickname"]."</font> <br>";

?>

</body>
</html>
Hier sollte er die Timestamps berechnen und mir die Nicknamen von den Online Usern ausgeben aber er liest garnichts aus. Leider.

intern.php
PHP:
<?php 
include ("checkuser.php"); 

$db = mysql_connect(localhost,xxx,xxx);
mysql_select_db(xxx,$db);

$userid = $_SESSION["user_id"];
$time = time();
if(!empty($userid)) {

$userProfile = mysql_fetch_array(mysql_query("SELECT * FROM benutzerdaten WHERE Id = '$userid'"));

$sql = "UPDATE benutzerdaten SET Online='$time' WHERE Id='$user_id'";
$result = mysql_query($sql,$db);

}

mysql_close($db);
        
?> 

<html> 
<head> 
  <title>Interne Seite</title> 
</head> 
<body>

Hier soll er den Timestamp in die DB eintragen passend zur User_ID


Hoffe auf schnelle Hilfe. Thx
 
Hallo!

error_reporting(E_ALL)
mysql_error()
Beide sollten Dir einen Hinweis bzw. einen Fehler melden. ;)

Was hast Du mit der Variable $userProfil vor?
Die nutzt Du ja nirgends.
Wo definierst Du die Variable $user_id?

Und zum auswählen der Datensätze zwischen 2 Werten benutzt man eigentlich BETWEEN..... aber egal, sollte so auch funktionieren.

Gruss Dr Dau
 
Was hast Du mit der Variable $userProfil vor?
Die nutzt Du ja nirgends.
Wo definierst Du die Variable $user_id?

$userProfil habe ich nur drin da ich da ja irgendwas brauche
$user_id an diese Variable übergebe ich die Session_User_ID aus meinen Login Script.

Das Funktioniert ja auch alles.

Doch jetzt habe ich mal eine Fehlermeldung bekommen und zwar sagt er No database selected doch ich weis nicht woran es liegen kann ist meiner Meinung alles richtig.

Die DB Verbindung ist doch so richtig oder ?
$db = mysql_connect(localhost,username,passwort);
mysql_select_db(datenabnk,$db);
 
$userProfil habe ich nur drin da ich da ja irgendwas brauche
Davon ist in dem Script aber nichts zu sehen.
$user_id an diese Variable übergebe ich die Session_User_ID aus meinen Login Script.
Falsch, Du übergibst die ID aus der Session an die Variable $userid.
Im UPDATE-Query hast Du aber die Variable $user_id stehen. ;)
Die DB Verbindung ist doch so richtig oder ?
$db = mysql_connect(localhost,username,passwort);
mysql_select_db(datenabnk,$db);
Da die Angaben keine Variablen sind, sondern Strings, müssen sie auch als solche gekennzeichet sein (Anführungsstriche).
 
Zurück