Lav en counter

Tags:    php
Skrevet af Bruger #4 @ 23.10.2001
Lav en counter - part 1

I min artikel serie vil jeg beskrive hvordan man nemt kan lave en counter i PHP/MySQL. I denne første artikel vil vi lave en simpel counter der kun der kun gemmer information om hvor mange der har besøgt sitet. Vi vil lave to versioner. En tekst baseret og en der viser tallet grafisk. Men lad os nu hellere begynde...

MySQL databasen

Før vi starter med at lave nogle filer skal vi lige have oprettet en tabel i din MySQL database. Her kommer MySQL filen som du kan dumpe i din egen database f.eks. via phpMyAdmin. Jeg har lagt min tabel i databasen "test".

CREATE TABLE counter (
  id int(32) NOT NULL auto_increment,
  hits int(32) NOT NULL default '0',
  PRIMARY KEY  (id)
);
INSERT INTO counter VALUES (1,'0');
Som i kan se er det en meget simpel tabel. Vi opretter et id som skal holde styr på databasen. Og så et felt hits der skal indeholder hvor mange hits siden har haft. Derefter indsætter vi bare et 0 (nul) i hits.

Nu skal vi kode PHP!

Nu er det på tide at kode noget PHP! Scriptet består af en enkelt fil kaldet counter.php. Scriptet skal så kaldes via et andet PHP dokument men det kommer vi til! Filen counter.php skal se således ud:

<?PHP

  // Opret forbindelse til MySQL og vælg database
  $conn = mysql_connect("DIN_HOST","DIN_BRUGER","DIT_PASSWORD");
  mysql_select_db("DIN_DB");

  // Send MySQL sætning afsted for at finde ud af hvor mange
  // hits der er i tabellen
  $query = mysql_query("SELECT hits FROM counter");
  $row = mysql_fetch_array($query);

  // Put værdien i en variabel
  $hits = $row["hits"];

  // Opdater antallet med én
  $hits++;

  // Oppdater databasen med den nye værdi
  mysql_query("UPDATE counter SET hits = '$hits'");

  // Fortæl brugere hvad nummer han/hun er
  echo ("Du er besøgende nummer: $hits");

  // Luk forbindelsen til MySQL
  mysql_close($conn);

?>
Da filen er kommenteret hele vejen igennem vil jeg ikke forklare nærmere om hvad scriptet gør. Det burde være klart! Husk at erstatte værdierne DIN_HOST, DIN_BRUGER, DIT_PASSWORD og DIN_DB med værdier der passer med din server. Scriptet kan jo godt køres selvstændigt men vil man køre det sammen med en anden fil kan hele scriptet kaldes med denne komando i ethvert PHP dokument:

<?PHP
  include ("counter.php");
?>
Den komando inkluderer simpelt hen counteren i dit dokument. Komandoen kan iøvrigt også bruges til f.eks. menuer, headere og footere som man tit bruger på ens hjemmeside!

Grafisk counter

Som jeg nævnte i begyndelsen skal vi også lave en grafisk counter. De er faktisk meget nemt! Vi skal bruge 10 forskellige billeder. Billede med tallene fra 0-9. Du kan selv lave nogle eller du kan downloade en zip fil her der indeholder nogle jeg har lavet! Du skal lægge de 10 billede i samme mappe som counter.php. Filerne skal iøvrigt have navnene null.jpg, one.jpg, two.jpg osv. Så laver vi en ny counter.php fil. Den skal se ud som flg.:

<?PHP

  // Opret forbindelse til MySQL og vælg database
  $conn = mysql_connect("DIN_HOST","DIN_BRUGER","DIT_PASSWORD");
  mysql_select_db("DIN_DB");

  // Send MySQL sætning afsted for at finde ud af hvor mange
  // hits der er i tabellen
  $query = mysql_query("SELECT hits FROM counter");
  $row = mysql_fetch_array($query);

  // Put værdien i en variabel
  $hits = $row["hits"];

  // Opdater antallet med én
  $hits++;

  // Oppdater databasen med den nye værdi
  mysql_query("UPDATE counter SET hits = '$hits'");
  
  // Nu bytter vi så tallene ud med billeder
  $hits = eregi_replace("0","<img src="null.jpg">","$hits");
  $hits = eregi_replace("1","<img src="one.jpg">","$hits");
  $hits = eregi_replace("2","<img src="two.jpg">","$hits");
  $hits = eregi_replace("3","<img src="three.jpg">","$hits");
  $hits = eregi_replace("4","<img src="four.jpg">","$hits");
  $hits = eregi_replace("5","<img src="five.jpg">","$hits");
  $hits = eregi_replace("6","<img src="six.jpg">","$hits");
  $hits = eregi_replace("7","<img src="seven.jpg">","$hits");
  $hits = eregi_replace("8","<img src="eight.jpg">","$hits");
  $hits = eregi_replace("9","<img src="nine.jpg">","$hits");
  
  // Fortæl brugere hvad nummer han/hun er
  echo ("Du er besøgende nummer: $hits");

  // Luk forbindelsen til MySQL
  mysql_close($conn);

?>
Jeg vil som ikke sige så meget til den nye kode. Vi bytter simpelt hen alle tallene ud med img tags så vi ser billeder istedet for almindelige tal. Hvis du vil vide mere om funktionen eregi_replace(); kan du slå den op i PHP manualen.

Jeg håber at du har kunne drage nytte af min artikel så den ikke er blevet skrevet forgæves c:) Så er der kun tilbage at sige - vi ses i part 2!



Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.

Del også gerne artiklen med dine Facebook venner:  

Kommentarer (8)

User
Bruger #2495 @ 12.02.03 17:53
ok god artikel :)
User
Bruger #5956 @ 24.06.04 22:52
Virkelig god artikel, Var på udkig efter en counter så, Nice work :)!
User
Bruger #6686 @ 15.05.05 12:25
Nice artikel. Simpelt, men nyttigt.
User
Bruger #8224 @ 04.03.06 10:43
hmm... det vil altså sige, at hvis man vil gøre det sådan, så counteren lægger 1 til antallet af besøgende på index.php, men kun udskriver antallet på statistik.php, så skal man bare dele counter.php op i 2 dele, en på hver side?
User
Bruger #8782 @ 22.04.06 22:31
God og let artikel ! Let at forstå, let at rette, let at arbejde på.!

5 fra mig ! :P
User
Bruger #8331 @ 12.05.06 10:36
Hvis min side er hosted hos frip.dk skal koden så se således ud:
("http://www.frip.dk","sixhoej","blablabla");
User
Bruger #8331 @ 12.05.06 10:37
Hvis min side er hosted hos frip.dk skal koden så se således ud:
("http://www.frip.dk","sixhoej","blablabla");
User
Bruger #14041 @ 30.07.08 16:20
Go artikel, let at forstå og let at bruge :P
Du skal være logget ind for at skrive en kommentar.
t