Databasprogrammering i PHP

Inledning

Ok, så du har skrivit en del sidor med databaskopplingar i PHP eller kanske gjort en gästbok eller nyhetsscript men känner att du vill göra lite mer än så. Då är du nog precis den målgrupp som är tänkt för denna artikel. Meningen är att vi här ska skapa lite mer avancerade databasdrivna sidor där båda databasen och PHP-koden utvecklas men framförallt att du lär dig att utnyttja SQL till fullo. Artikeln kommer att vara uppbyggd kring ett exempel där koncept och funktioner diskuteras allt eftersom de används.

Besöksstatistikexemplet

Säg att du har en sida med någon form av login för registrerade användare. Det kan vara ett forum eller kanske login för att skriva nyheter på en sida. Du vill nu kolla vem som loggar in och när och kanske få ut lite annan information. För att göra det lite enkelt för oss antar vi att användardatabasen ser ut som följande;

mysql> describe user;

+----------+------------------+------+-----+---------+----------------+
| Field    | Type             | Null | Key | Default | Extra          |
+----------+------------------+------+-----+---------+----------------+
| id       | int(10) unsigned |      | PRI | NULL    | auto_increment |
| username | varchar(64)      |      | UNI | 0       |                |
+----------+------------------+------+-----+---------+----------------+

Den innehåller alltså bara ett användarid och ett användarnamn. Vi har även en tabell som innehåller information som vi sparar när personer loggar in eller exempelvis lägger till en nyhet;

mysql> describe log;

+---------+---------------------+------+-----+---------+----------------+
| Field   | Type                | Null | Key | Default | Extra          |
+---------+---------------------+------+-----+---------+----------------+
| id      | int(10) unsigned    |      | PRI | NULL    | auto_increment |
| date    | timestamp           |      |     | NULL    |                |
| user    | int(10) unsigned    | YES  |     | NULL    |                |
| session | varchar(32)         |      |     |         |                |
| ip      | varchar(16)         |      |     | NULL    |                |
| page    | varchar(128)        |      |     | NULL    |                |
| type    | tinyint(3) unsigned |      |     | NULL    |                |
+---------+---------------------+------+-----+---------+----------------+

Här har vi fältet id som är ett index i databasen, user som visar vilken användare som det rör sig om, session som är session_id för den aktuella användaren och som kan användas för att följa personer genom sidan, ip som är användarens ip-adress, page är adressen som användaren tittar på när vi loggar, dvs. värdet av $_SERVER['PHP_SELF'] och slutligen type som är ett heltal som beskriver vilken form av händelse det är vi loggar. Detta deklareras snyggast med define(LOG_LOGIN, 1) osv. i PHP koden.

Eftersom vi koncentrerar oss på själva loggningen och statistiken här så kommer jag inte att ta upp något av inloggningsförfarandet eller koden för att hålla reda på användarna utan bara själva loggningen och presentation av resultatet. Vi kommer att skapa en mycket enkel loggningsklass som man lätt kan utöka senare. Klassen kommer att fungera som så att man överst på varje sida skapar ett objekt av klassen, sedan anropas man metoden LogEvent($eventType) för varje händelse som man vill logga. Vi börjar med att skriva ner klassen med tomma metoder;

PHP:
<?php
    
    // Våra olika typer av händelser
    defineLOG_LOGIN);
    defineLOG_LOGOUT);
    defineLOG_ADD_NEWS);
    defineLOG_SEE_PAGE);
 
    class Log {
        var $mysql;
        function Log() {}
        function LogEvent($eventType) {}
        function GetLatestLogin($username="") {}
        function GetLatestAddedNews($username="") {}
        function GetActiveUsers() {}
        function GetVisits($pageName) {}
    }
?>

Tanken med GetLatest metoderna är att man ska kunna ange ett användarnamn för att på specifik information om den användaren eller inte ange någonting för att få information om alla användare.

Sida 1 av 7
[ 1 2 3 4 5 6 7 ]
Välkommen Anonymous
Logga in
Registrera
Snabblänkar
Markera alla forum som lästa
Skriptarkivet [86 av 97]
Visa nya inlägg
Visa dina inlägg
Visa obesvarade huvudinlägg
Läs vår skola
  Introduktion
  Programmera i webbmiljö
  Installationen i Windows
  Variabler och konstanter
  Vektorer
  Operatorer
  Villkorssatser
  Slingor
Statistik
Registrerade medlemmar: 19804
Inlägg totalt: 719643
Senaste medlem: Fotvårdsprodukter
Online
Besökare just nu: 33,
0 registrerade,
0 dolda och
33 gäster
Besökare som mest var 501 den 2019-05-02 15:53

Våra medlemmar
Inloggade medlemmar
Bra att veta
Förhållningsregler
Trivselregler
phpBB-FAQ
För dig som vill länka
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic