Brugernavn:




Kodeord: Husk
Forside Forum Artikler Downloads Søg
 

Lav din egen counter med php og mysql

Forord

Hej!
Idag vil jeg vise jer hvordan man laver en simpel counter og en lidt mere avanceret counter!

Hej!
Dette er min første artikel så det er nok ikke den bedste.

Jeg regner med at du har en smule erfaring inden for php og en smule om hvordan man opretter tabeller i mysql.
Ellers kan jeg anbefale at du tager et smut forbi phpartikler for at lære php og tjekker denne artikel fra rowl: PhpMyAdmin og lære hvordan du opretter en tabel

Vi starter med at lave en simpel counter

Først skal vi have en tabel.
Den kommer til at se sådan her ud:
  1. CREATE TABLE `counter`(
  2.     id INT AUTO_INCREMENT,
  3.     randomfeild VARCHAR(50),
  4.     PRIMARY KEY(id)
  5. )
Linje forklaring:
1. Vi fortæller mysql at vi vil oprette en tabel der hedder "counter"
2. Vi opretter feltet id
3. Vi opretter feltet randomfeild
4. Kan ikke helt huske hvad primary key er men det kan man sikkert slå op et sted
5. Vi fortæller mysql at nu opretter vi ikke en tabel mere ved at lukke den ( som vi startede på linje 1

Nu til lidt php kode! Og som før: Kode først forklaring bagefter
  1. <?
  2. mysql_connect("server", "brugernavn", "kode") or die(mysql_error());
  3. mysql_select_db("databasenavn") or die(mysql_error());

  4. mysql_query("INSERT INTO counter(randomfeild) VALUES(0)") or die(mysql_error());
  5. ?>

1. Vi åbner php
2. Vi connecter til vores database. Fyld dine informationer på så det passer.
3. Vi vælger en database. Skriv din database
4. Vi indsætter 0 til randomfeild. Det er ligemeget om man skriver 0 eller hvad man gør. Du får at se hvorfor senere
5. Vi lukker php igen.

Sæt den fil på de sider hvor du vil have den til at tælle besøgende.

Nu skal vi se hvordan man ser hvor mange der har været på siden

  1. <?
  2. mysql_connect("server", "brugernavn", "kode") or die(mysql_error());
  3. mysql_select_db("databasenavn") or die(mysql_error());

  4. $query = mysql_query("SELECT randomfeild FROM counter") or die(mysql_error());
  5. $hvormange = mysql_num_rows($query);
  6. echo "$hvormange";
  7. ?>
1.De første linjer forklarede jeg der oppe så dem springer vi over
2.Nu er vi ved linjen hvor der står $query på. Der henter vi feltet randomfeild fra tabellen counter
3. Vi laver en num row som bruges til at se hvor mange ting der matcher queryen oven over
4.Vi skriver hvor mange der var
5.Vi lukker php igen

Tillykke! Du har nu lavet en simpel counter! Hvis det var det du havde brug for kan du bare gå væk fra siden nu.

Nu skal vi lave en counter som kun tæller 1 op per ip.
Det vil sige at du ikke bare kan opdatere siden og så den lægger en oven i.

Til den counter skal vi bruge en lidt anden mysql tabel som ser sådan her ud:
  1. CREATE TABLE `specielcounter`(
  2.     id INT AUTO_INCREMENT,
  3.     ip VARCHAR(50),
  4.     PRIMARY KEY(id)
  5. )
1. Vi opretter tabellen speciel counter
2. Vi laver feltet id
3. Vi laver feltet ip
4. Vi sætter den primære "nøgle" til at være id'en
5. Vi fortæller mysql at vi ikke laver en tabel mere

Nu skal vi til php delen!
  1. <?
  2. mysql_connect("server", "brugernavn", "kode") or die(mysql_error());
  3. mysql_select_db("databasenavn") or die(mysql_error());

  4. $ip = $_SERVER["REMOTE_ADDR"];

  5. $query = mysql_query("SELECT ip FROM specielcounter WHERE ip='$ip'") or die(mysql_error());
  6. $findesden = mysql_num_rows($query);
  7. if($findesden == "1"){

  8. }else{
  9. mysql_query("INSERT INTO specielcounter (ip) VALUES ('" . $ip . "')") or die(mysql_error());
  10. }
  11. ?>
1.Vi starter php
2.Vi connecter til databasen
3.Vi vælger database
4.Vi sætter en variabel som indeholder brugerens ip
5.Vi laver en query som henter feltet ip hvor at feltet ip indeholder brugerens ip
6.Vi laver en variabel som ligesom i den simple counter ser hvor mange felter der er i queryen som indeholder brugerens ip
7.Vi tjekker om variablen er 1. Hvis den er det så findes brugerens ip og vi lader være med at gøre noget
8.Vi laver en else så hvis ip'en ikke findes i databasen så...
9....Sætter vi ip'en ind i databasen
10.Vi lukker den else vi åbnede ellers går php helt i kage
11.Vi lukker php

Nu skal vi have den til at vise hvor mange der har været. Samme princip som før.

  1. <?
  2. mysql_connect("server", "brugernavn", "kode") or die(mysql_error());
  3. mysql_select_db("databasenavn") or die(mysql_error());

  4. $query = mysql_query("SELECT ip FROM specielcounter") or die(mysql_error());
  5. $hvormange = mysql_num_rows($query);
  6. echo "$hvormange";
  7. ?>
1.De første linjer forklarede jeg der oppe så dem springer vi over
2.Nu er vi ved linjen hvor der står $query på. Der henter vi feltet randomfeild fra tabellen counter
3. Vi laver en num row som bruges til at se hvor mange ting der matcher queryen oven over
4.Vi skriver hvor mange der var
5.Vi lukker php igen

Tillykke! Nu har du lavet din egen unikke counter!

Konstruktiv kritik er mere end velkomment!

Denne kode er testet så hvis du har nogle problemer kan du henvende dig her.
Sidst redigeret 17:57 22/02/2010 af Rowl
Oprettet af:

PHP

Point modtaget: 500

Rating: 3.8
23:14 17/02/2010

Kommentarer

Giv din mening tilkende om denne artikel, eller læs andres.
Har du spørgsmål eller brug for hjælp til denne artikel henvises du til forummet.
PRIMARY KEY gør vidst at auto increment bliver indekseret.
Oprettet af:
  Mail
18:41 22/02/2010
Okay. Det må jeg huske til en anden gang.

Andre der har noget at sige om artiklen?
Oprettet af:
  Mail
17:14 23/02/2010
Fin artikel også. Man får fat i det meste. Men hvis vi skal ud at tale grammatik, så var din grammatik ikke særlig god xD
Oprettet af:
  Mail
19:14 25/02/2010
Hvor er grammatikken ikke god?
Oprettet af:
  Mail
18:41 26/02/2010
Der er ikke komma/punktummer, og Rowl er ikke stavet med stort. ^^
Oprettet af:
  Mail
12:43 31/03/2010
xDesign, jo?! Rowl er et navn, dvs. det er med stort.
Oprettet af:
  Mail
09:27 09/04/2011
Du skal være oprettet og logget ind for at kommentere en artikel
Copyright © Rowl.dk v/ Michael Raagaard | 2005-12 | Alle rettigheder forbeholdes