# 5.1 CRUD - Read

<span style="color: #000000;">Wat moet goed je weten voor deze les:</span>

- <span style="color: #000000;">Hoe werken arrays.</span>
- <span style="color: #000000;">Hoe werken assiociative arrays.</span>
- <span style="color: #000000;">Hoe werken tables.</span>

<span style="color: #000000;">Wat ga je leren deze les?</span>

- <span style="color: #000000;">Je gaat werken met PHP objecten</span>
- <span style="color: #000000;">Je gaat leren werken met methods en properties van een object</span>
- <span style="color: #000000;">Je gaat inheritance toepassen</span>

#### <span style="color: #000000;">CRUD</span>

<span style="color: #000000;">CRUD is een groep functionaliteiten die je voor je examen moet kunnen</span>

<span style="color: #000000;">CRUD staat voor Create, Read, Update en Delete. We gaan een pagina maken waar je deze functies kunt uitvoeren. We gaan dit testen op de airlines table in de database flights. Dat betekent dat webeginnen met het maken van een overzicht van alle flights (R), Dit is de R(ead) van de CRUD.</span>

<span style="color: #000000;">Voordat we beginnen moeten we controleren of we alles uit de vorige lessen goed hebben.</span>

<span style="color: #000000;">Controleer of je de volgende structuur hebt:</span>

```
/includes/db.php
crud.php
view.html
```

<span style="color: #000000;">In /incudes/db.php heb je een db class gemaakt. Deze zorgt ervoor dat er een verbinding wordt gemaakt met de SQL database.</span>

<span style="color: #000000;">crud.php en view.html zijn nu nog leeg.</span>

<span style="color: #000000;">Je hebt een tabel `airlines` gemaakt in een nieuwe databse `flights`.</span>

<span style="color: #000000;">Remember: *<span style="color: #ff0000;">een object is een variabele in een object!</span>*</span>

<span style="color: #000000;">In de `crud.php` file maken we een class airlines. In de \_\_construct() maken we een DB object. Het airlines object heeft nu property die verwijst naar een DB object.</span>

<p class="callout success"><span style="color: #000000;">Vraag 1: Hoe heet de property (variabele) in crud.php die het object DB bevat?</span></p>

```PHP
<?php

include_once "includes/db.php";

class airlines .... {
    public function getAllAirlines() {
        return $this->executeSQL("select * from airlines");
    }
}
?>
```

<span style="color: #000000;">Bekijk bovensstaande code en let vooral op de regel waar de class airlines wordt gemaakt. Zie je de puntjes? Daar moet nog wat komen te staan. De class airlines maken we namelijk een 'kind' van de class 'DB'. Hierbij erft het kind, alle eigenschappen van de moeder.</span>

<span style="color: #000000;">Weet je nog hoe dat zat met classes en ínherentence'? </span>

<span style="color: #000000;">Als je het nog eens wilt bekijken dan kun je het volgende video filmpje bekijken:</span>

<span style="color: #000000;">[Inheritance in PHP eplained](https://www.youtube.com/watch?v=5JG3eGaqT-c)  
</span>

<span style="color: #000000;">Vul nu de juiste code in op de plaats van de puntjes zodat de airlines class alle eigenschappen van de DB class erft.</span>

<p class="callout success"><span style="color: #000000;">Vraag 2: welke statement gebruik je in PHP om een child class te maken?</span></p>

<span style="color: #000000;">Remember: *<span style="color: #ff0000;">een method is een functie in een object!</span>*</span>

Nu gaan we onze code testen en dat doen we door vanuit view de code aan te roepen.

Zet dan de volgende code in view.php

```PHP
<?php
include "crud.php";

$airlines = new Airlines;
echo $airlines->getAllAirlines();
?>

```

Bekijk wat er gebeurt. Welk getal wordt er afgedrukt en waarom?

##### Rows

In de class DB staat een method getRow. Roep deze aan vanuit de view.php.

`$row=$airlines->getRow();`

Druk de regel af,wat zie je? Waarom wertk dat niet? Gebruik de PHP functie `var_dump($row)` om de regel af te drukken. Zie je nu wat er wordt afgedrukt?

We gaan nu in driestappen alle regels netjes afdrukken.

Stap 1, we gaan in een loop alle regels afdruken met var\_dump

Dat ziet er ongeveel zo uit:

```
array(2) { ["code"]=> string(2) "AA" ["airline"]=> string(22) "American Airlines Inc." }
array(2) { ["code"]=> string(2) "AS" ["airline"]=> string(20) "Alaska Airlines Inc." }
array(2) { ["code"]=> string(2) "B6" ["airline"]=> string(15) "JetBlue Airways" }
array(2) { ["code"]=> string(2) "DL" ["airline"]=> string(20) "Delta Air Lines Inc." } 
....
....
```

Om de regels één voor één op te halen moet je net zo lang de method getRow() aanroepen todat je ..... totdat je wat? Kijk in de code voor het antwoord.

Stap 2, druk de regels af als twee losse variabele

```
AA American Airlines Inc.
AS Alaska Airlines Inc.
B6 JetBlue Airways
DL Delta Air Lines Inc.
....
....
```

Stap 3, zet nu alles netjes in een table:

![](http://bookstack.maxdata.ovh/uploads/images/gallery/2019-09/scaled-1680-/image-1568707305545.png)

Eventueel kun je de table met CSS nog wat mooier maken. Je kunt nog een nette kopregel toevoegen.

Op zich zijn het opfraien van de GUI geen keiharde voor de back-end programmeur, maar als je met een paar eenvoudige stappen de output wat kunt 'opleuken' dat toont dat toch beter.

De R van CRUD is nu klaar.

---