Gå til innhold

Telle ulike IP'er fra tabellen i databasen?


Anbefalte innlegg

Hei!

 

Jeg har en slags counter på min side, som bare setter inn IP, og nettleser. Fungerer kjempeflott, men hver gang man oppdatérer sida så blir man lagt til i databasen, men når jeg printer ut vil jeg ha unike hits, og alle hits hvis dere skjønner.

 

Så hvordan kan jeg printe ut hvor mange ulike IP'er som ligger i databasen? Jeg har brukt ORDER BY id DESC LIMIT 1 for å få siste ID ut (ja, auto_increment på et felt kalt id), men det har da vært hits og ikke unike hits.

 

Takk!

Lenke til kommentar
Videoannonse
Annonse

Hm, fikk ikke helt til..

 

Her er koden jeg prøvde:

<?php

mysql_connect("localhost", "brukernavn", "passord");
mysql_select_db("db");

$r = mysql_query("SELECT DISTINCT ip FROM counter");

while($row = mysql_fetch_array($r)) {

echo mysql_num_rows($r);
echo '<br />';

}


mysql_close();

?>

 

Resultatet:

297

297

297

297

Osv 297 ganger nedover tror jeg det var.

Lenke til kommentar

Spørringen din henter alle unike iper, (som tydligvis er 297)

Så looper du igjennom resultatet, og skriver ut antall unike iper like mange ganger som det er unike iper...

 

Og jeg håper ikke du har telt gjennom alle, at det er 297 ganger det blir skrevet ut ? ;)

 

mysql_num_rows tar jo $r (spørringen) som argument, så du trenger forsvidt ikke å hente ut noen verdier ($row)

 

EDIT: Med andre ord: fjern While løkken...

Endret av kakkle
Lenke til kommentar
SELECT COUNT(DISTINCT ip) AS antall... er bedre ja. :)

8355177[/snapback]

Jepp, mye bedre å la SQL-serveren ta seg av slikt arbeid. Bare se her:

$st = microtime();
$r = mysql_query("SELECT count(DISTINCT ipen) AS antall FROM dlslogg");
if ($row = mysql_fetch_array($r)) {
echo 'Forsøk1: ';
echo $row['antall'];
echo '<br />';
echo microtime() - $st;
echo '<br />';
}
echo '<br />';
$st = microtime();
$r = mysql_query("SELECT DISTINCT ipen FROM dlslogg");
echo 'Forsøk2: ';
echo mysql_num_rows($r);
echo '<br />';
echo microtime() - $st;
echo '<br />';

 

Output:

Forsøk1: 189
0.000225

Forsøk2: 189
0.000385

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...