CREATE TABLE brugere ( id int(11) NOT NULL auto_increment, navn tinytext NOT NULL, password tinytext NOT NULL, email tinytext NOT NULL, alder tinytext NOT NULL, hjemmeside tinytext NOT NULL, status char(1) NOT NULL default '2', PRIMARY KEY (id) ) TYPE=MyISAM;
Der skal jeg have indsat en tid også skal tiden skrives ned i brugere i sql FORstår du?
hmm...det kan jo godt blive et problem, hvis de ikke logger ud igen.
Jeg går ud fra at du vil have den akkumulerede onlinetid for alle besøg.
Så du laver et felt hvor der står hvornår de sidst fik vist en side som logget ind og så for hver sidevisning henter du den værdi ud og lægger forskellen mellem den og tiden nu til den onlinetid der står...
skal den gemme den totale online-tid så (ellers giver det vel ikke meget mening)? eller skal du bare bruge det til en besked når brugeren logger ud igen?
Jeg har dette system med 10 brugere og så når man logger ind som fx. Admin så skal den tælle tiden også siger vi han har været inde i 5 min. så logger han ud, og logger ind igen og sidder igen i 5 min. så skal den tælle det sammen og smide det i DBen
det vil altså sige at du skal have et felt som indeholder den totale onlinetid - lav det til et int(10) felt og skriv tiden i sekunder...
så skal du have et felt som indeholder sidste sidevisning. Lav også den til et int(10) felt og skriv et unix timestamp i den: time()
Hver gang siden vises henter den sidste sidevisning ud fra databasen, trækker det fra tiden nu og lægger den værdi til onlinetiden.
Herefter opdateres databasen med den nye onlinetid og tiden nu, som så bliver den nye sidevisningstid...
når du så skal vise onlinetid laver du bare en formateringsfunktion som dividerer til du har det i et format du skal bruge (timer/dage/uger/whatever)...
<?php //tiden nu: $current_time = time(); //hent de gamle data ud... //går ud fra at brugerid ligger i en sessionvariabel, ellers kan du jo ændre det... $sql = "SELECT * FROM brugere WHERE id = $_SESSION[id]"; $result = mysql_query($sql); $row = mysql_fetch_array($result);
//find onlinetid siden sidst $online_add = $current_time - row['last_page_view'];
CREATE TABLE brugere ( id int(11) NOT NULL auto_increment, navn tinytext NOT NULL, password tinytext NOT NULL, email tinytext NOT NULL, alder tinytext NOT NULL, hjemmeside tinytext NOT NULL, status char(1) NOT NULL default '2', online_time int(11) NOT NULL, last_page_view int(11) NOT NULL, PRIMARY KEY (id) ) TYPE=MyISAM;
og så skal du bare lave en funktion som kan lave tiden i sekunder om til et læsbart format...kan godt skrive den til dig, men det bliver i så fald først i morgen..smutter i seng nu :)
Okay så er det gjort men nu får jeg fejl her: Warning: Supplied argument is not a valid MySQL result resource in c:\apache\htdocs\chat\test.php on line 30
<html> <body> <? // Tjekker om brugeren er logget ind if ($s_navn && $s_password) { ?> <? include ("config.php"); mysql_connect($host,$user,$pass); mysql_select_db($db); $query = mysql_query("SELECT * FROM brugere WHERE navn='$s_navn' AND password='$s_password'") or print mysql_error(); while($r = mysql_fetch_array($query)) { $id = $r["id"]; $navn = $r["navn"]; $password = $r["password"]; $email = $r["email"]; $alder = $r["alder"]; $hjemmeside = $r["hjemmeside"]; $status = $r["status"]; //tiden nu: $current_time = time(); //hent de gamle data ud... //går ud fra at brugerid ligger i en sessionvariabel, ellers kan du jo ændre det... $sql = "SELECT * FROM brugere WHERE id = $_SESSION[id]"; $result = mysql_query($sql); $row = mysql_fetch_array($result);
//find onlinetid siden sidst $online_add = ($row['last_page_view'] > 0) ? $current_Time - $row['last_page_view'] : 0;
så skal du jo bare hive det ud og lave sekunderne om til dage/time etc. - jeg kan godt lave en funktion til dig, men det bliver som sagt først imorgen :)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.