Avatar billede t.lunde Nybegynder
02. april 2002 - 19:32 Der er 50 kommentarer

Hjælp...

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?
Avatar billede erikjacobsen Ekspert
02. april 2002 - 19:35 #1
Hvad sker der, og hvad er din kode?
Avatar billede nielsgron Nybegynder
02. april 2002 - 19:36 #2
Du skal enten indsætte $time[0] eller $time[1]
Avatar billede nielsgron Nybegynder
02. april 2002 - 19:37 #3
$time[0] er værdien af den første del af microtime(den før " ")
$time[1] er så den efter " ".
Avatar billede nielsgron Nybegynder
02. april 2002 - 19:38 #4
Jeg har lige tjekket, og det ser ikke ud til at virke. Jeg tror ikke, at du sådan kan splitte microtime.
Avatar billede t.lunde Nybegynder
02. april 2002 - 19:39 #5
Jeg skal have gemt tiden på hvornår en bruger kommer ind på siden, og det skal jeg så have printet ud i pænt format! HVordan det...
Avatar billede erikjacobsen Ekspert
02. april 2002 - 19:41 #6
Joh, man kan skam

$time= explode(" ", microtime());
print_r($time);

udskriver

Array ( [0] => 0.43659100 [1] => 1017769184 )

så du har nok ret Niels. Men spørgeren kunne jo godt have forklaret
sit problem...
Avatar billede nielsgron Nybegynder
02. april 2002 - 19:42 #7
;-)
Avatar billede nielsgron Nybegynder
02. april 2002 - 19:43 #8
Kan du få printet array'en ud?
Avatar billede erikjacobsen Ekspert
02. april 2002 - 19:44 #9
OK, t.lunde - men hvorfor bruger microtime() - hvordan vil du
gerne have det?
Avatar billede nielsgron Nybegynder
02. april 2002 - 19:44 #10
selvfølgelig, man skal jo bare bruge print_r...Dooh
Avatar billede nielsgron Nybegynder
02. april 2002 - 19:45 #11
t.lunde>> var det ikke en ide, at bruge date() istedet for?
Avatar billede t.lunde Nybegynder
02. april 2002 - 19:47 #12
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...
Avatar billede nielsgron Nybegynder
02. april 2002 - 19:51 #13
Skal du så ikke bare skrive:

print_r($time[0]);
...eller...
print_r($time[1]);

?
Avatar billede t.lunde Nybegynder
02. april 2002 - 19:58 #14
Jeg kan ikke få en tid frem! Prøv at se her:thomaslunde.dk/whoisonline.php
Avatar billede t.lunde Nybegynder
02. april 2002 - 19:58 #15
Min kode ser nu sådan ud:

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'");

//Udtrækket
$col0 = "ffffff"; 
$col1 = "efefef"; 
$i=0; 
$res = mysql_query("select ip, host, date, side from whoisonline");
while($row = mysql_fetch_array($res)){
$ip = $row[ip];
if($ip == "127.0.0.1"){
    $ip = "BOFH";
}
++$i; 
$col = "col" . $i%2; 
      echo "
        <tr bgcolor=" . $$col . ">\n 
        <td width = \"250\">IP adresse: $ip</td>  <td>$host print_r($time[0]);
<a href=\"$row[side]\">$row[side]</a><br></td>\n
        </tr>\n";
}
?>
Avatar billede nielsgron Nybegynder
02. april 2002 - 19:58 #16
Eller...

print_r("$time[0] "."$time[1]");

Hvis du vil printe begge ud.
Avatar billede nielsgron Nybegynder
02. april 2002 - 20:00 #17
Den skrev en tid da jeg gik ind på den, men efter et par "opdater" forsvandt det???
Avatar billede nielsgron Nybegynder
02. april 2002 - 20:01 #18
Og så kom det sgu tilbage...
Avatar billede t.lunde Nybegynder
02. april 2002 - 20:02 #19
jeg legede lige lidt! Men det er da bare nogle tal! Hvordan skal se tolkes?? Kan den ikke skrive: 19:44 for eksempel
Avatar billede nielsgron Nybegynder
02. april 2002 - 20:02 #20
Nu tror jeg, at jeg ved hvad der er galt. Du har puttet print_r($time[0]); ind i en echo. prøv at slette print_r( og );
Avatar billede nielsgron Nybegynder
02. april 2002 - 20:03 #21
Nåhh, det er DET der er problemet.
Avatar billede t.lunde Nybegynder
02. april 2002 - 20:04 #22
yeps! Jeg har hele tiden kunne få de tal der fra, men ville bare gerne have det udskrevet i et pænt format
Avatar billede nielsgron Nybegynder
02. april 2002 - 20:04 #23
Det ved jeg ikke, om der er en funktion der gør. Prøv evt. at se her: http://www.php.net/manual/en/function.time.php
Avatar billede nielsgron Nybegynder
02. april 2002 - 20:06 #24
Du kan lave et ekstra felt i den tabel, og kalde det dato. Og så indsætte den date() funktion i stedet for.
Avatar billede nielsgron Nybegynder
02. april 2002 - 20:10 #25
Eks.

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'");

//Udtrækket
$col0 = "ffffff"; 
$col1 = "efefef"; 
$i=0; 
$res = mysql_query("select ip, host, date, dato, side from whoisonline");
while($row = mysql_fetch_array($res)){
$ip = $row[ip];
if($ip == "127.0.0.1"){
    $ip = "BOFH";
}
++$i; 
$col = "col" . $i%2; 
      echo "
        <tr bgcolor=" . $$col . ">\n 
        <td width = \"250\">IP adresse: $ip</td>  <td>$host $dato
<a href=\"$row[side]\">$row[side]</a><br></td>\n
        </tr>\n";
}
?>
Avatar billede t.lunde Nybegynder
02. april 2002 - 20:12 #26
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:

//Udtrækket
$col0 = "ffffff"; 
$col1 = "efefef"; 
$i=0; 
$res = mysql_query("select ip, host, date, dato, side from whoisonline");
while($row = mysql_fetch_array($res)){
$ip = $row[ip];
if($ip == "127.0.0.1"){
    $ip = "BOFH";
}
++$i; 
$col = "col" . $i%2; 
      echo "
        <tr bgcolor=" . $$col . ">\n 
        <td width = \"250\">IP adresse: $ip</td>  <td>$host $dato
<a href=\"$row[side]\">$row[side]</a><br></td>\n
        </tr>\n";
}

Den skulle udfra $col1 og $col2 gerne farvelægge hver anden tabelrække, men det ser den heller ikke ud til at gøre...

Kan nogen se disse problemer??
Avatar billede t.lunde Nybegynder
02. april 2002 - 20:15 #27
nielsgron >> Jeg har prøvet at sætte dit script neders på samme side som før men den siger fejl i koden du har givet mig. Det er denne linie:

while($row = mysql_fetch_array($res)){
Avatar billede nielsgron Nybegynder
02. april 2002 - 20:20 #28
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");

Så henter den nemlig alt.
Avatar billede t.lunde Nybegynder
03. april 2002 - 12:03 #29
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??
Avatar billede t.lunde Nybegynder
03. april 2002 - 12:19 #30
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...
Avatar billede nielsgron Nybegynder
03. april 2002 - 14:50 #31
Sorry, der tænkte jeg mig vist ikke om.

$dato = date("H:i:s");

Så viser den klokken.

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 ;-)
Avatar billede nielsgron Nybegynder
03. april 2002 - 14:54 #32
Du nævnte noget med kollonnefarven. Det der er lavet i dit script, ser ret underligt ud, så jeg har tilpasset det til, hvordan JEG gør:

//Udtrækket
$col = ($col == "#FFFFFF" ? "#EFEFEF" : "#FFFFFF");
$res = mysql_query("select ip, host, date, dato, side from whoisonline");
while($row = mysql_fetch_array($res)){
$ip = $row[ip];
if($ip == "127.0.0.1"){
    $ip = "BOFH";

      echo "
        <tr bgcolor="$col">\n 
        <td width = \"250\">IP adresse: $ip</td>  <td>$host $dato
<a href=\"$row[side]\">$row[side]</a><br></td>\n
        </tr>\n";
}
Avatar billede nielsgron Nybegynder
03. april 2002 - 15:44 #33
Jeg tror at jeg ved, hvad problemet er med host'en. Kan det passe at du også har TDC ADSL? Det har jeg nemlig, og så har vi vel samme host(?)
Avatar billede t.lunde Nybegynder
03. april 2002 - 15:46 #34
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'");

//Udtrækket
$col0 = "ffffff"; 
$col1 = "efefef"; 
$i=0; 
$res = mysql_query("select ip, host, date, side from whoisonline");
$res = mysql_query("select * from whoisonline");
while($row = mysql_fetch_array($res)){
$ip = $row[ip];
if($ip == "127.0.0.1"){
    $ip = "BOFH";
}
++$i; 
$col = "col" . $i%2;     
      echo "
        <tr bgcolor=" . $$col . ">\n 
        <td width = \"250\"><b>IP adresse:</b> $ip | </td>  <td> <b>Host:</b> $host | <b>Site:</b> <a href=\"$row[side]\"> $row[side]</a><br></td>\n
        </tr>\n";
}
?>
Avatar billede t.lunde Nybegynder
03. april 2002 - 15:47 #35
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!
Avatar billede nielsgron Nybegynder
03. april 2002 - 16:15 #36
Gider du ikke lige, at skrive hvordan tabellen whoisonline ser ud(strukturen) så jeg kan teste scriptet inden jeg skriver det her.
Avatar billede nielsgron Nybegynder
03. april 2002 - 16:31 #37
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());

//Udtrækket
$res = mysql_query("select * from whoisonline") or die (mysql_error());
while($row = mysql_fetch_array($res)){
$col = ($col == "#FFFFFF" ? "#EFEFEF" : "#FFFFFF");
$ip = $row[ip];
if($ip == "127.0.0.1"){
    $ip = "BOFH";
}
echo"<table border='0' cellpadding='0' cellspacing='0' width='800'>";
echo"  <tr bgcolor='$col'>
        <td><b>IP:</b> $row[ip]</td>
        <td><b>Host:</b> $row[host]</td>
        <td><b>Tid:</b> $row[tid]</td>
        <td><b>Side:</b> <a href='$row[side]'>$row[side]</a></td>
      </tr>";
echo"</table>";
}
?>

Fungerer det?

Med hensyn til de der point, så skal du bare give mig, hvad din samvittighed fortæller dig ;-)
Avatar billede t.lunde Nybegynder
03. april 2002 - 16:34 #38
jeg prøver lige at oploade det, og så kan du tjekke det på:
www.thomaslunde.dk/whoisonline.php
Avatar billede t.lunde Nybegynder
03. april 2002 - 16:37 #39
Jeg har lige prøvet at sætte hele din kode ind, men nu skriver den slet ikke noget ud på skærmen?
Avatar billede t.lunde Nybegynder
03. april 2002 - 16:38 #40
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)
);
Avatar billede nielsgron Nybegynder
03. april 2002 - 16:40 #41
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)
);
Avatar billede nielsgron Nybegynder
03. april 2002 - 16:46 #42
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.
Avatar billede t.lunde Nybegynder
03. april 2002 - 17:02 #43
Tjek lige siden igen! Den siger noget med tiden..HVad er det der skal rettes??
Avatar billede t.lunde Nybegynder
03. april 2002 - 17:07 #44
Hele koden ser nu sådan ud:

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());

//Udtrækket
$res = mysql_query("select * from whoisonline") or die (mysql_error());
while($row = mysql_fetch_array($res)){
$col = ($col == "#FFFFFF" ? "#EFEFEF" : "#FFFFFF");
$ip = $row[ip];
if($ip == "127.0.0.1"){
    $ip = "BOFH";
}
echo"<table border='0' cellpadding='0' cellspacing='0' width='800'>";
echo"  <tr bgcolor='$col'>
        <td><b>IP:</b> $row[ip]</td>
        <td><b>Host:</b> $row[host]</td>
        <td><b>Tid:</b> $row[tid]</td>
        <td><b>Side:</b> <a href='$row[side]'>$row[side]</a></td>
      </tr>";
echo"</table>";
}
?>
Avatar billede t.lunde Nybegynder
03. april 2002 - 17:13 #45
Nu virker det...Jeg havde bare glemt at skrive database navn!

Er det sådan nu med scriptet, at når man forlader siden igen, så slettes man fra databasen eller hvad??
Avatar billede t.lunde Nybegynder
03. april 2002 - 17:26 #46
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 :-(
Avatar billede t.lunde Nybegynder
03. april 2002 - 17:40 #47
ALLER SIDTE HJÆLP fra dig nielsgron! Hvordan får jeg tabellerne til at stå lige?? Lige som her: http://www.o-piz.dk/showonline.php

Det er sådan jeg gerne vil have det til at ende ud!
Avatar billede nielsgron Nybegynder
04. april 2002 - 14:46 #48
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.
Avatar billede nielsgron Nybegynder
04. april 2002 - 16:52 #49
Hvis din 'echo'-del ser sådan ud, vil det virke:

echo"<table border='0' cellpadding='0' cellspacing='0' width='800'>";
echo"  <tr bgcolor='$col'>
        <td width='15%'><b>IP:</b> $row[ip]</td>
        <td width='35%'><b>Host:</b> $row[host]</td>
        <td width='15%'><b>Tid:</b> $row[tid]</td>
        <td width='35%'><b>Side:</b> <a href='$row[side]'>$row[side]</a></td>
      </tr>";
echo"</table>";

procenterne kan du evt. ændre, hvis det er påkrævet.
Avatar billede nielsgron Nybegynder
08. april 2002 - 19:56 #50
Øhh, t.lunde vender du snart tilbage?
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester