Avatar billede jjdk Nybegynder
18. februar 2005 - 20:41 Der er 23 kommentarer og
1 løsning

Antal online i dag og i går

Jeg har en lille tabel, hvor jeg registrerer, hvilke IP-adresser, der har været på siden.
Tabellen ser sådan her ud:

CREATE TABLE count_users (
  ipaddr varchar(20) NOT NULL default '',
  _date date NOT NULL default '0000-00-00'
) TYPE=MyISAM;

Men det kniber med at hente datoen rigtig i PHP.
Jeg vil så bruge det til at se på hvormange, der var online i går og hvormange i dag.
Hvordan henter jeg datoen idag, så jeg kan få den korrekt "insertet" i tabellen.
Hvilken PHP-kode skal jeg anvende for at hente antal rækker i dag og antal rækker i går?
Avatar billede arne_v Ekspert
18. februar 2005 - 21:04 #1
Du må kunne indsætte med:

mysql_query("INSERT INTO count_users($ip,NOW())");
Avatar billede arne_v Ekspert
18. februar 2005 - 21:06 #2
Hvis det kun er dato så nok snarere:

mysql_query("INSERT INTO count_users($ip,CURDATE())");
Avatar billede arne_v Ekspert
18. februar 2005 - 21:08 #3
SELECT _date,COUNT(*)
FROM count_users
GROUP BY _date
ORDER BY _date DESC
LIMIT 2

tror jeg
Avatar billede jjdk Nybegynder
18. februar 2005 - 22:19 #4
Jeg kan se at "CURDATE()" henter dags dato. Hvad er tilsvarende "kald" for tidspunktet
Avatar billede arne_v Ekspert
18. februar 2005 - 22:23 #5
CURTIME()

mener jeg
Avatar billede arne_v Ekspert
18. februar 2005 - 22:23 #6
Avatar billede jjdk Nybegynder
18. februar 2005 - 23:11 #7
Hej Arne.
Endnu engang har din ekspertice hjulpet mig og jeg har lært noget.
Tak for hjælpen - sender du lige et svar.
Avatar billede jjdk Nybegynder
18. februar 2005 - 23:17 #8
Lige - en sidste ting.
Selve udvælgelsen fungerer jf. din kommentar kl. 21:08. Det er afprøvet i PHPMyAdmin.
Jeg har også indtastet det i HTML-filen.
Men hvordan får jeg så resultatet vist på skærmen?
Avatar billede arne_v Ekspert
18. februar 2005 - 23:53 #9
svar
Avatar billede arne_v Ekspert
18. februar 2005 - 23:54 #10
Noget i stil med:

$rs = mysql_query("SELECT * FROM tabel") or die(mysql_error());
while ($row = mysql_fetch_array($rs, MYSQL_ASSOC)) {
    print $row["felt1"] . " " . $row["felt2"] . "<br>\n";
}
mysql_free_result($rs);
Avatar billede jjdk Nybegynder
19. februar 2005 - 00:26 #11
Jeg har skrevet følgende:
$rs = mysql_query("SELECT * FROM count_users") or die(mysql_error());
while ($row = mysql_fetch_array($rs, MYSQL_ASSOC)) {    
print $row["ipaddr"] . " " . $row["_date"] . "<br>\n";
}
mysql_free_result($rs);

Men får følgende fejl:
Parse error: parse error, unexpected T_STRING in /data/webhotel/esbjerg1/statistik.php on line 55
Linje 55 = while ($row = ...........
Avatar billede arne_v Ekspert
19. februar 2005 - 00:29 #12
Er det copy pastet ?

(fordi fejlen plejer at skyldes rod i " erne)
Avatar billede jjdk Nybegynder
19. februar 2005 - 09:40 #13
Nu har jeg prøvet den halve morgen, men kan bare ikke få det til at virke.
Samme fejl hver gang. Der står præcis som jeg har vist ovenfor kl. 00:26. Jeg har skrevet det manuelt og det har heller ikke hjulpet.
Den sidste linje: mysql_free_result($rs);  Hvad bruges den til?
Avatar billede jjdk Nybegynder
19. februar 2005 - 09:42 #14
Min kode ser sådan her ud: Jeg har 2 gange SELECT - Er det rigtigt?

mysql_query("SELECT _date,COUNT(*)FROM count_users GROUP BY _date ORDER BY _date DESC LIMIT 3");
$rs = mysql_query("SELECT * FROM count_users") or die(mysql_error());
while ($row = mysql_fetch_array($rs, MYSQL_ASSOC)) {    
print $row['ipaddr'] . $row['_date'];
}
mysql_free_result($rs);
Avatar billede arne_v Ekspert
19. februar 2005 - 10:06 #15
Nej. Kun en SELECT.
Avatar billede arne_v Ekspert
19. februar 2005 - 10:06 #16
Jeg vil have dig til at copy paste fra din fil og her ind.
Avatar billede jjdk Nybegynder
19. februar 2005 - 10:18 #17
Den første SELECT viste du mig tidligere. Dette resultat vil jeg gerne have vist på skærmen. Og så viser du mig den anden SELECT.
Koden er her (copy og pastet):

mysql_query("SELECT _date,COUNT(*)FROM count_users GROUP BY _date ORDER BY _date DESC LIMIT 3");
$rs = mysql_query("SELECT * FROM count_users") or die(mysql_error());
while ($row = mysql_fetch_array($rs, MYSQL_ASSOC)) {    
print $row['ipaddr'] . $row['_date'];
}
mysql_free_result($rs);
Avatar billede arne_v Ekspert
19. februar 2005 - 10:34 #18
De skal merges:

$rs = mysql_query("SELECT _date,COUNT(*) AS n FROM count_users GROUP BY _date ORDER BY _date DESC LIMIT 3") or die(mysql_error());
while ($row = mysql_fetch_array($rs, MYSQL_ASSOC)) {   
print $row['_date'] . " " . $row['n'] . "<br>\n";
}
mysql_free_result($rs);
Avatar billede arne_v Ekspert
19. februar 2005 - 10:34 #19
mysql_free_result($rs);

frigiver result settet
Avatar billede jjdk Nybegynder
19. februar 2005 - 10:54 #20
Hvad vil det sige, at de skal merges?
Avatar billede jjdk Nybegynder
19. februar 2005 - 10:59 #21
Jeg har kopieret det over i NotePad og derfra videre til Frontpage.
NU VIRKER DET SGU!.
Undskyld min uvidenhed og tusind tak endnu engang for din hjælp og tålmodighed.
Avatar billede arne_v Ekspert
19. februar 2005 - 11:13 #22
FrontPage ?

Det vil jeg nok ikke anbefale til PHP.
Avatar billede jjdk Nybegynder
19. februar 2005 - 11:23 #23
Jeg gemmer også som HTML-fil og må efterfølgende rename til PHP.
Kan du anbefale et freeware-program?
Avatar billede arne_v Ekspert
19. februar 2005 - 11:38 #24
Jeg laver ikke meget i PHP selv.

Men prøv og spørg i PHP kategorien.
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