1. Databaser i
PHP
Eksempler og links kan efterfølgende findes på http://appacademy.dk
App Academy
www.appacademy.dk
@appacademydk
2. Kristian Langborg-Hansen
Partner i App Academy
Underviser og foredragsholder
Forfatter
klh@appacademy.dk
App Academy
www.appacademy.dk
@appacademydk
3. Opgaven fra sidst
• Kan I huske ”Gæt et tal”?
• Brug sessionsvariabler til
– At huske det rigtige tal
– At tælle hvor mange gange brugeren har gættet
• Vis antal gæt for brugeren
• Tip: et tilfældigt tale laves med
$tal = rand(1,10);
• Vejledende løsning på www.appacademy.dk
App Academy
www.appacademy.dk
@appacademydk
5. Kunne også have været
App Academy
www.appacademy.dk
@appacademydk
6. Fællesnævneren
Structured Query Language (SQL)
- Det sprog, de fleste databaser taler
Data Definition Language (DDL)
- Oprettelse af strukturen i databasen
Tutorial og reference: www.appacademy.dk
App Academy
www.appacademy.dk
@appacademydk
15. En note om bogen
• Brug ikke mysqldriveren som beskrevet
i bogen!
• Brug mysqli i stedet
i = improved
• Følg linket fra
appacademy.dk
App Academy
www.appacademy.dk
@appacademydk
16. Forbindelse til database
$database = new mysqli("localhost", "root",
"", "eksempler");
…
$database->close();
App Academy
www.appacademy.dk
@appacademydk
22. Dagens case
• Pinkodehuskeren igen
– Gemmes i databasen
– Bruger logger på,
og ser sin egen
pinkodehusker
App Academy
www.appacademy.dk
@appacademydk
26. Kontrol af adgangskode
if (password_verify($adgangskode,
$korrekt_kode)) { ... }
App Academy
www.appacademy.dk
@appacademydk
27. Data fra databasen
$statement = $database->prepare(
"select adgangskode from brugere where
brugernavn = ?");
$statement->bind_param("s",
$_REQUEST['brugernavn']);
$resultat = $statement->execute();
App Academy
www.appacademy.dk
@appacademydk
28. Data fra databasen
$data = $statement->get_result();
if ($data->num_rows == 0) { … }
$raekke = $data->fetch_row();
$raekke[0]
Adgang til resultatet
Er der fundet noget?
Hent næste række
Adgang til kolonnerne i rækken
App Academy
www.appacademy.dk
@appacademydk
29. Er der allerede en pinkode?
$statement = $database->prepare(
"select farve from pinkode where
brugernavn = ?");
$statement->bind_param("s", $brugernavn);
$result = $statement->execute();
$data = $statement->get_result();
if($data->num_rows == 0) {
App Academy
Ingen data fundet
www.appacademy.dk
@appacademydk
30. Indsæt ny pinkode
$statement = $database->prepare(
"insert into pinkode values(?,?,?)");
$statement->bind_param("sss", $brugernavn,
$farve, $tal);
$statement->execute();
App Academy
www.appacademy.dk
@appacademydk
31. Opdater pinkode
$statement = $database->prepare(
"update pinkode set farve=?, tal=? where
brugernavn = ?");
$statement->bind_param("sss", $farve, $tal,
$brugernavn);
$statement->execute();
App Academy
www.appacademy.dk
@appacademydk
32. Hent data
$statement = $database->prepare(‘
"select tal, farve from pinkode where
brugernavn = ?");
…
Næste række
$row = $data->fetch_row();
Første element
$tal = $row[0];
Andet element
$farve = $row[1];
App Academy
www.appacademy.dk
@appacademydk
33. Slet data
$statement = $database->prepare(
"delete from pinkode where brugernavn =
?");
$statement->bind_param("s", $brugernavn);
$statement->execute();
App Academy
www.appacademy.dk
@appacademydk
34. En sidste opgave…
Udvid pinkodehuskeren, så hver bruger kan
have flere pinkodehuskere.
1. Hver pinkodehusker skal have et navn
2. Brugeren skal kunne vælge mellem sine
pinkodehuskere, når han logger ind
3. Brugeren skal også kunne lave en ny
pinkodehusker.
4. Pinkodehuskere skal kunne slettes
App Academy
www.appacademy.dk
@appacademydk
35. Kursusbevis
• Har du været til alle tre foredrag, får du et
kursusbevis.
– Som billede
– ID til brug på LinkedIn
• Det kommer på e-mail i løbet af en uge
– Hvis ikke, så send mig en mail
klh@appacademy.dk
App Academy
www.appacademy.dk
@appacademydk