Jeg har en kommando der ser sådan du: $time= explode(" ", microtime());
Den bliver skrevet ned i database, men så når jeg skal have den trukket ud af databasen igen skulle jeg gerne have det til at stå normalt...Altså tiden. Hvordan gør man det?
Jeg sidder og leget med et script, hvor kommandoen: $time= explode(" ", microtime()); er i, og den gemmer nogle tal ned i databasen! Jeg ved ikke lige helt hvad de betyder, men det har vel noget med tiden at gøre. Det jeg gerne vil, er at tiden en bruger kommer på siden, bliver gemt i databasen, og så skal jeg bruge en kommando til at udskrive det på en pæn måde igen på skærmen...
mysql_connect("$host", "$loginname", "$password") or die (mysql_error()); mysql_select_db("$database") or die (mysql_error());
$ip = $REMOTE_ADDR; $host = gethostbyaddr($ip); $time= explode(" ", microtime()); $userusec =(double)$time[0]; $usersec =(double)$time[1]; $select = mysql_query("select * from whoisonline where ip like '$ip'"); mysql_query("delete from whoisonline where date < $usersec -1500"); if(!mysql_num_rows($select)){ mysql_query("insert into whoisonline (id,ip,host,date) values ('','$ip','$host','$usersec')"); } mysql_query("update whoisonline set side = '$PHP_SELF' where ip = '$ip'");
mysql_connect("$host", "$loginname", "$password") or die (mysql_error()); mysql_select_db("$database") or die (mysql_error());
$ip = $REMOTE_ADDR; $host = gethostbyaddr($ip); $time= explode(" ", microtime()); $userusec =(double)$time[0]; $usersec =(double)$time[1]; $dato = date("d/m/Y"); $select = mysql_query("select * from whoisonline where ip like '$ip'"); mysql_query("delete from whoisonline where date < $usersec -1500"); if(!mysql_num_rows($select)){ mysql_query("insert into whoisonline (id,ip,host,date,dato) values ('','$ip','$host','$usersec','$dato')"); } mysql_query("update whoisonline set side = '$PHP_SELF' where ip = '$ip'");
okay skid med det med tiden, men der er to andre problemmer her med koden! Det ser ud til at den hele tiden viser den samme host adress, og det er jo forkert, og så er der en fejl i dette stykke kode:
Det ser lidt underligt ud. Kan du ikke for god ordens skyld, i linie over den der giver fejl, ændre til: $res = mysql_query("select * from whoisonline");
nielsgron >> Nu har jeg lavet den rettelse du lige viste mig, og det virker med at den skriver det rigtigt nu, men istedet for at datoen står der, kan man så ikke få klokken frem på hvornår brugeren er ankommet til siden?? Det er ligesom det jeg hele tiden gerne ville frem til...Kan du hjælpe med med det??
neilsgron >> Jeg tror faktisk stadig ikke at det der med host navnene passer! Jeg syntes stadig at den skriver de samme navne, selvom det er forskellige maskiner der er online!
Du må lige sige til, hvis du gerne vil have flere points for at hjælpe...
Med hensyn til det der med host'en, så fatter jeg det ikke helt.-Jeg kan i hvert fald ikke finde nogle fejl. Point? - dem vil man jo altid gerne have flere af ;-)
nej, jeg har stofanet, og det er nemlig et andet problem jeg har. Den skriver den samme host ud selvom, det er forskellige host!
I kan lige på hele koden at kigge på: mysql_connect("$host", "$loginname", "$password") or die (mysql_error()); mysql_select_db("$database") or die (mysql_error());
$ip = $REMOTE_ADDR; $host = gethostbyaddr($ip); $time= explode(" ", microtime()); $userusec =(double)$time[0]; $usersec =(double)$time[1]; $select = mysql_query("select * from whoisonline where ip like '$ip'"); mysql_query("delete from whoisonline where date < $usersec -1500"); if(!mysql_num_rows($select)){ mysql_query("insert into whoisonline (id,ip,host,date) values ('','$ip','$host','$usersec')"); } mysql_query("update whoisonline set side = '$PHP_SELF' where ip = '$ip'");
nielsgron >> Kan du ikke prøve at tilpasse hele scriptet så det kommer til at se pænt ud! Og så siger du bare hvor mange points du syntes er rimeligt, og du får det...Takker!
Nevermind, jeg har gættet mig frem til tabellen. Nu har jeg bakset hele scriptet sammen, men jeg ved ikke rigtigt, om det der med host virker:
<? mysql_connect("$host", "$loginname", "$password") or die (mysql_error()); mysql_select_db("$database") or die (mysql_error());
$ip = $REMOTE_ADDR; $host = gethostbyaddr($ip); $time= explode(" ", microtime()); $userusec =(double)$time[0]; $usersec =(double)$time[1]; $tid = date("H:i:s"); $select = mysql_query("select * from whoisonline where ip like '$ip'") or die (mysql_error()); mysql_query("delete from whoisonline where date < $usersec -1500") or die (mysql_error()); if(!mysql_num_rows($select)){ mysql_query("insert into whoisonline (id,ip,host,date,tid) values ('','$ip','$host','$usersec','$tid')") or die (mysql_error()); } mysql_query("update whoisonline set side = '$PHP_SELF' where ip = '$ip'") or die (mysql_error());
Her er database strukturen som er brugt, hvis du selv lige vel teste det:
CREATE TABLE online ( id int(11) NOT NULL auto_increment, ip tinytext, host tinytext, date tinytext, side varchar(80) NOT NULL default '/index.php', PRIMARY KEY (id) );
Det er fordi, at jeg har ændre date til tid, da det er mere sigende. Du skal bare ændre din tabel, så den ser sådan ud:
CREATE TABLE online ( id int(11) NOT NULL auto_increment, ip tinytext, host tinytext, date tinytext, tid tinytext, side varchar(80) NOT NULL default '/index.php', PRIMARY KEY (id) );
hehe, det var noget vrøvl, det jeg skrev. feltet "tid" er jo tilføjet for, at den skal skrive hvad klokken er. Den har derfor ikke noget med "date" at gøre.
mysql_connect("$host", "$loginname", "$password") or die (mysql_error()); mysql_select_db("$database") or die (mysql_error());
$ip = $REMOTE_ADDR; $host = gethostbyaddr($ip); $time= explode(" ", microtime()); $userusec =(double)$time[0]; $usersec =(double)$time[1]; $tid = date("H:i:s"); $select = mysql_query("select * from whoisonline where ip like '$ip'") or die (mysql_error()); mysql_query("delete from whoisonline where date < $usersec -1500") or die (mysql_error()); if(!mysql_num_rows($select)){ mysql_query("insert into whoisonline (id,ip,host,date,tid) values ('','$ip','$host','$usersec','$tid')") or die (mysql_error()); } mysql_query("update whoisonline set side = '$PHP_SELF' where ip = '$ip'") or die (mysql_error());
jeg har også fået det med tiden til at virke nu, men nu mangler det bare at IP, Host, Tid og side står under hinanden når der er flere på siden! Det gør de nemlig ikke...Hvordan definere man det?? Har prøvet lidt, men får ikke andet end fejl :-(
1. Ja, man bbliver slettet efter 1500sek. Det synes jeg godt nok er lige lovlig lang tid, så det kan du jo bare ændre.(find der hvor der står '$usersec -1500')
2. Prøv at angive en 'width' i alle de tags der hedder <td>. Eks. <td witdh='100'><b>IP:</b> $row[ip]</td> osv.
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.