Databaser i PHP [App Academy}

387 views

Published on

Adgang til databaser som MySQL fra PHP.
Slides fra kurset Databaser i PHP: http://appacademy.dk/foredrag/databaser-i-php/

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
387
On SlideShare
0
From Embeds
0
Number of Embeds
34
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Databaser i PHP [App Academy}

  1. 1. Databaser i PHP Eksempler og links kan efterfølgende findes på http://appacademy.dk App Academy www.appacademy.dk @appacademydk
  2. 2. Kristian Langborg-Hansen Partner i App Academy Underviser og foredragsholder Forfatter klh@appacademy.dk App Academy www.appacademy.dk @appacademydk
  3. 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
  4. 4. Database App Academy www.appacademy.dk @appacademydk
  5. 5. Kunne også have været App Academy www.appacademy.dk @appacademydk
  6. 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
  7. 7. Arkitektur Driver App Academy www.appacademy.dk @appacademydk
  8. 8. Installation af databasen App Academy www.appacademy.dk @appacademydk
  9. 9. XAMPP App Academy www.appacademy.dk @appacademydk
  10. 10. Opbygningen Adresser Navn Adresse Postnr By Anders Hansen Borgergade 12 2820 Gentofte Bodil Nielsen Ringgaden 12A 8000 Århus C Christian Muus Søndergade 5 6000 Kolding App Academy www.appacademy.dk @appacademydk
  11. 11. Tabelnavn Opbygningen Kolonner K o l o n n e Adresser Rækker Navn Adresse Postnr By Anders Hansen Borgergade 12 2820 Gentofte Bodil Nielsen Ringgaden 12A 8000 Århus C Christian Muus Søndergade 5 6000 Kolding App Academy www.appacademy.dk @appacademydk
  12. 12. Opbygningen Adresser Navn Adresse Postnr Anders Hansen Borgergade 12 2820 Bodil Nielsen Ringgaden 12A 8000 Christian Muus Søndergade 5 6000 Postnumre Postnr By 2820 Gentofte 8000 Århus C 6000 Kolding App Academy www.appacademy.dk @appacademydk
  13. 13. Opbygningen Adresser Navn Adresse Postnr Anders Hansen Borgergade 12 2820 Bodil Nielsen Ringgaden 12A 8000 Christian Muus Søndergade 5 6000 Postnumre Postnr By 2820 Gentofte 8000 Århus C 6000 Kolding App Academy www.appacademy.dk @appacademydk
  14. 14. Administration http://localhost/phpmyadmin App Academy www.appacademy.dk @appacademydk
  15. 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. 16. Forbindelse til database $database = new mysqli("localhost", "root", "", "eksempler"); … $database->close(); App Academy www.appacademy.dk @appacademydk
  17. 17. Forespørgsel $sql = "insert into kontakter values ('" . $_REQUEST['navn']. "', '" . $_REQUEST['adresse'] . "', '" . $_REQUEST['postnummer'] . "')"; $succes = $database->query($sql); App Academy www.appacademy.dk @appacademydk
  18. 18. Gik det godt? if ($succes) { echo "Bruger oprettet"; } else { echo "Der opstod en fejl"; } App Academy www.appacademy.dk @appacademydk
  19. 19. Prepared statements $statement = $database->prepare( "insert into kontakter values (?, ?, ?);"); $statement->bind_param("sss", $_REQUEST['navn'], $_REQUEST['adresse'], $_REQUEST['postnummer']); $succes = $statement->execute(); App Academy www.appacademy.dk @appacademydk
  20. 20. Pladsholder Prepared statements $statement = $database->prepare( "insert into kontakter values (?, ?, ?);"); $statement->bind_param("sss", Datatyper (s, i, d) $_REQUEST['navn'], $_REQUEST['adresse'], $_REQUEST['postnummer']); $succes = $statement->execute(); App Academy www.appacademy.dk @appacademydk
  21. 21. App Academy www.appacademy.dk @appacademydk
  22. 22. Dagens case • Pinkodehuskeren igen – Gemmes i databasen – Bruger logger på, og ser sin egen pinkodehusker App Academy www.appacademy.dk @appacademydk
  23. 23. To tabeller • Brugere – Brugernavn – Adgangskode • Pinkoder – Brugernavn – Farver – Cifre App Academy www.appacademy.dk @appacademydk
  24. 24. Sikre adgangskoder $adgangskode = password_hash( $_REQUEST["adgangskode"], PASSWORD_BCRYPT); App Academy www.appacademy.dk @appacademydk
  25. 25. Sikre adgangskoder $adgangskode = password_hash( $_REQUEST["adgangskode"], PASSWORD_BCRYPT); App Academy www.appacademy.dk @appacademydk
  26. 26. Kontrol af adgangskode if (password_verify($adgangskode, $korrekt_kode)) { ... } App Academy www.appacademy.dk @appacademydk
  27. 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. 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. 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. 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. 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. 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. 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. 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. 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
  36. 36. App Academy Dagens eksempler: www.appacademy.dk Kontakt: klh@appacademy.dk ”Hos App Academy mener vi, at alle fortjener at kunne programmere – og vi vil gerne hjælpe jer www.appacademy.dk med at lære det.” App Academy @appacademydk

×