Anders Moen Skrevet 10. april 2007 Del Skrevet 10. april 2007 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
missiongul Skrevet 10. april 2007 Del Skrevet 10. april 2007 Hvis jeg ikke tar helt feil så tror jeg du kan bruke GROUP BY ip etter WHERE (..) og før ORDER. Lenke til kommentar
endrebjo Skrevet 10. april 2007 Del Skrevet 10. april 2007 (endret) SELECT DISTINCT ip..... 8354145[/snapback] Også må du i bruke mysql_num_rows() etterpå.(eller en annen *_num_rows() hvis du bruker en annen sql-server) Endret 10. april 2007 av endrebjorsvik Lenke til kommentar
Anders Moen Skrevet 10. april 2007 Forfatter Del Skrevet 10. april 2007 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
kakkle Skrevet 10. april 2007 Del Skrevet 10. april 2007 (endret) 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 10. april 2007 av kakkle Lenke til kommentar
Canute Skrevet 10. april 2007 Del Skrevet 10. april 2007 <?php mysql_connect("localhost", "brukernavn", "passord"); mysql_select_db("db"); $r = mysql_query("SELECT count(DISTINCT ip) AS antall FROM counter"); if($row = mysql_fetch_array($r)) { echo $row['antall']; echo '<br />'; } mysql_close(); ?> Slik ville jeg ha gjort det. Lenke til kommentar
endrebjo Skrevet 10. april 2007 Del Skrevet 10. april 2007 SELECT COUNT(DISTINCT ip) AS antall... er bedre ja. Lenke til kommentar
Canute Skrevet 10. april 2007 Del Skrevet 10. april 2007 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
Anders Moen Skrevet 11. april 2007 Forfatter Del Skrevet 11. april 2007 <?php mysql_connect("localhost", "brukernavn", "passord"); mysql_select_db("db"); $r = mysql_query("SELECT count(DISTINCT ip) AS antall FROM counter"); if($row = mysql_fetch_array($r)) { echo $row['antall']; echo '<br />'; } mysql_close(); ?> 8355120[/snapback] Den fungerte flott Tusen takk! Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå