PHP 6 - XAMPP, MySQL, PHP

1 / 27
suivant
Slide 1: Diapositive
InformaticaWOStudiejaar 4,5

Cette leçon contient 27 diapositives, avec diapositives de texte.

time-iconLa durée de la leçon est: 45 min

Éléments de cette leçon

Slide 1 - Diapositive

Cet élément n'a pas d'instructions

Fundament

Hier is niet direct een fundament hoofdstuk voor

Slide 2 - Diapositive

Cet élément n'a pas d'instructions

Leerdoelen
Na deze les kun je:
  • MySQL starten in XAMPP
  • een SQL database importeren naar MySQL
  • met PHP een verbinding maken met een SQL database
  • met PHP een SQL database uitlezen
  • uitleggen wat -> doet
  • met PHP een SQL database bewerken

Slide 3 - Diapositive

Rode achtergrond betekent: klas is stil, dit zijn de leerdoelen en quizzes waarbij niet overlegd mag worden.

Doel van deze les is om het leren zichtbaar te maken voor zowel leerling als docent.
XAMPP services
In het XAMPP Control Panel kun je de diverse "modules" opstarten via de "Start" knop

  1. Apache is de PHP server
    Druk naast Apache op de "Start" knop

  2. MySQL is de SQL server
    Druk naast MySQL op de "Start" knop

Slide 4 - Diapositive

Cet élément n'a pas d'instructions

SQL importeren
Voordat we kunnen oefenen met SQL hebben we eerst een database nodig met informatie

We kunnen een database op verschillende manieren vullen:
  • handmatige invoer via PHPMyAdmin (straks meer daarover)
  • via php code (bv vanuit een lijst in een loop)
  • importeren (dit laatste gaan we straks doen)

Slide 5 - Diapositive

Cet élément n'a pas d'instructions

PHPMyAdmin starten
Om een SQL bestand te importeren gebruiken we PHPMyAdmin

Dat is geïnstalleerd met XAMPP en wordt gestart met de MySQL server
Je vindt het in de XAMPP Control Panel bij MySQL onder de knop "Admin" of via localhost/phpmyadmin

Slide 6 - Diapositive

Cet élément n'a pas d'instructions

Opdracht SQL importeren
  1. Download het SQL database bestand "xampp_boeken.sql" van https://informatica.stmichaelcollege.nl/software/
  2. Open PHPMyAdmin in je browser: localhost/phpmyadmin
  3. PHPMyAdmin: Klik op de knop "Import"
  4. PHPMyAdmin: Klik bij "File to import" op de knop "Choose file"
  5. PHPMyAdmin: Selecteer nu het xampp_boeken.sql bestand
  6. PHPMyAdmin: Druk onderaan het scherm op "Import"
  7. klaar? dat ziet er zo uit:
timer
5:00

Slide 7 - Diapositive

Cet élément n'a pas d'instructions

SQL importeren
XAMPP had een lege database genaamd "test",
en daar hebben we net de SQL database
naartoe geïmporteerd, dat zie je
in localhost/phpmyadmin 
in de linkerkolom onder "test" 
(evt. op het + knopje drukken)

Slide 8 - Diapositive

Cet élément n'a pas d'instructions

PHPMyAdmin
We hebben de tab "Import" gebruikt, maar je kunt een heleboel ook direct in de database via PHPMyAdmin
Klik in de linkerkolom de database waar je de actie op wil uitvoeren ("test" in ons geval) en kijk dan naar de tabs:
  • Structure: de database direct inzien en bewerken
  • SQL: SQL queries uitvoeren op de database
                                              let op: de "Go" knop is
                                                lastig te zien

Slide 9 - Diapositive

Cet élément n'a pas d'instructions

MySQL via PHP 1/8
We hebben nu een gevulde MySQL database en de SQL en PHP servers zijn actief

Om met PHP een database te openen moeten we eerst een verbinding maken, daarvoor hebben we een account nodig
XAMPP heeft een standaard account gemaakt (maar via PHPMyAdmin kunnen we dat evt. later aanpassen)

Slide 10 - Diapositive

Cet élément n'a pas d'instructions

MySQL via PHP 2/8
Een verbinding maken doen we via de functie mysqli()
Het is good practice om daar variabelen voor te gebruiken:


Slide 11 - Diapositive

Cet élément n'a pas d'instructions

MySQL via PHP 3/8
Controleer in je code of het is gelukt:



De -> operator zegt letterlijk: "Gebruik de eigenschap of methode van dit object" dus hier is dat "Kijk naar de eigenschap connect_error van het $conn-object"

Slide 12 - Diapositive

Cet élément n'a pas d'instructions

MySQL via PHP 4/8
We hebben een verbinding met de database, nu kunnen we dus een query uitvoeren met die verbinding:




In dit geval dus de query "SELECT * FROM auteurs"


Slide 13 - Diapositive

Cet élément n'a pas d'instructions

MySQL via PHP 5/8
De output van de query wordt opgeslagen in de variabele die we hebben aangegeven: $result
De -> operator wordt rechts op 
twee manieren gebruikt:

Let op: er zijn meer manieren om
het resultaat op de site te zetten!

Slide 14 - Diapositive

Cet élément n'a pas d'instructions

MySQL via PHP 6/8
Via de -> operator worden twee dingen gedaan met $result:

  1. ophalen aantal rijen met
    kenmerk num_rows

  2. uitvoeren while loop met
    methode fetch_assoc()

Slide 15 - Diapositive

Cet élément n'a pas d'instructions

MySQL via PHP 7/8
  1. num_rows > hiermee wordt gekeken of de tabel wel regels heeft
  2. fetch_assoc() > hiermee wordt
    één regel gehaald uit het
    resultaat, door dit in een
    while-loop te gebruiken 

Slide 16 - Diapositive

Cet élément n'a pas d'instructions

MySQL via PHP 8/8
Als je klaar bent met de verbinding is het verstandig om de die te sluiten, dat wordt gedaan via de methode close() :

Slide 17 - Diapositive

Cet élément n'a pas d'instructions

Opdracht: SQL query
  1. ga naar
    https://informatica.stmichaelcollege.nl/software/
  2. download 06.txt voor de code van wat we net zagen
  3. zet het bestand als 06.php in je ./htdocs/ en voer het uit in je localhost
  4. pas de code aan zodat je uit de tabel boeken alle titels van auteurnr 60 ziet op je webpagina
timer
5:00

Slide 18 - Diapositive

Cet élément n'a pas d'instructions

Insert, Update en Delete
Je kunt een database op verschillende manieren aanpassen, zoals bijvoorbeeld:

INSERT INTO ... VALUES( ... ) : toevoegen aan de database 
UPDATE ... SET ... WHERE :  wijzigen in de database
DELETE FROM ... WHERE : verwijderen uit de database

Slide 19 - Diapositive

Cet élément n'a pas d'instructions

INSERT INTO ... VALUES( ... )
INSERT INTO databasenaam(naam, adres, stad)
    VALUES ('Tom B. Erichsen', 'Skagen 21', 'Stavanger');

Let op : sommige tabellen hebben een "auto-increment" veld/kolom, die automatisch nummert. 
Als dat het geval is, dan zet je die niet in de values lijst (dat gaat dan automatisch)

Slide 20 - Diapositive

Cet élément n'a pas d'instructions

UPDATE ... SET ... WHERE
UPDATE databasenaam
SET City = 'London', Address = 'abc 123'
WHERE CustomerID = 5;

Let op : bij Update en Delete is de Where erg belangrijk, omdat die bepaalt wat er aangepast wordt

Slide 21 - Diapositive

Cet élément n'a pas d'instructions

DELETE FROM ... WHERE
DELETE FROM databasenaam
WHERE CustomerID = 5;

Let op : bij Update en Delete is de WHERE erg belangrijk, omdat die bepaalt wat er aangepast wordt

Slide 22 - Diapositive

Cet élément n'a pas d'instructions

PHP voorbeelden

Slide 23 - Diapositive

Cet élément n'a pas d'instructions

SQL om tabel te maken in db
Er zijn ook manieren om een hele tabel te maken in SQL:





let op: die moet dan nog wel gevuld worden...

Slide 24 - Diapositive

Cet élément n'a pas d'instructions

Opdracht: SQL query
Je mag hierbij AI (zoals ChatGPT) gebruiken!
pas de code van de vorige opdracht aan zodat je:
  1. met POST-form een auteur in auteurs toevoegt;
  2. een tabel van 10 regels maakt uit auteurs en voor elke regel een knop hebt die een specifieke regel weghaalt

Let op dat je wel begrijpt wat ChatGPT je geeft
timer
5:00

Slide 25 - Diapositive

Cet élément n'a pas d'instructions

Leerdoelen
Nu kun je:
  • MySQL starten in XAMPP
  • een SQL database importeren naar MySQL
  • met PHP een verbinding maken met een SQL database
  • met PHP een SQL database uitlezen
  • uitleggen wat -> doet
  • met PHP een SQL database bewerken

Slide 26 - Diapositive

Rode achtergrond betekent: klas is stil, dit zijn de leerdoelen en quizzes waarbij niet overlegd mag worden.

Doel van deze les is om het leren zichtbaar te maken voor zowel leerling als docent.

Slide 27 - Diapositive

Cet élément n'a pas d'instructions