terug naar Techniek CodeIgniter 3
De verbinding met een database
CodeIgniter - de verbinding met een database maken
Er zullen weinig web applicaties zijn welke zonder een database werken.
Codeigniter heeft daar zijn eigen voorzieningen voor.
Het instellen van de database
Hier gebruiken we de world database van MySQL zelf voor.
Plaats de sql file in de database world.
Het artikel zal van deze database uitgaan.
We dienen CodeIgniter wel te vertellen dat er een database gebruikt gaat worden en welke database dat is.
Allereerst dienen we Codeigniter te vertellen dat er een database gebruikt gaat worden.
Dit doen we door aan de configuratie file autoload.php de library database te activeren.
Je kunt ook de library aanroepen op het moment dat deze nodig is, maar de kans op het vergeten aan te roepen of het vele type werk wat hier extra bij komt kun je voorkomen door deze library bij het aanroepen van de applicatie al beschikbaar te maken
pad naar de file autoload.php |
Verander het volgende
van |
naar |
Het kan zijn dar er al library's zijn toegevoegd.
De syntax voor het bijvoegen van een library is :
Daarna gaan we CodeIgniter vertellen welke database gebruikt dient te worden en welke de aanmeld gegevens zijn.
Dit doen we in de configuratie file database.php
pad naar de file database.php |
Verander het volgende
van |
naar |
De controller voor het uitlezen van de tabel
Er vanuit gaande dat de standaard controller welkom.php
is,
( zie hiervoor het voorgaande artikel) ,
ga ik de standaard functie van die controller ( index
) gebruiken om de MySQL tabel uit te lezen.
Om het gehele plaatje van Model, Controller, View rond te krijgen zal ik in alle 3 de secties iets gaan schrijven.
In de Model sectie het gedeelte van de interactyie met de database.
In de View sectie het gedeelte van het weergeven van alle informatie in HTML.
En als verbindende schakel in de Controller sectie het oproepen van de database gegevens en het koppelen van deze gegevens met de view en het weergeven van de view
De controller welkom.php
pad naar de controller file welkom.php |
Deze ziet er als volgt uit
Om te zorgen dat we niet teveel aanpassingen later dienen te maken heb ik de controller aangepast.
Er gaan nu 3 view's aangeroepen worden.
- header
- inhoud
- footer
Hierdoor hoef je bij een aanpassing van de daarwerkelijke inhoud alleen view inhoud.php aan te passen.
En inderdaad gebruik ik geen php extensie bij de view's.
Codeigniter is slim genoeg om deze zelf te plaatsen
De controller welkom.php gaat er als volgt uitzien
De view's
De view header.php gaat er als volgt uitzien
Standaard dus.
De view inhoud.php gaat er als volgt uitzien
De view footer.php gaat er als volgt uitzien
Eigenlijk is de oude view in 3 stukken gehakt.
Alle aanpassingen zullen in inhoud.php
plaatsvinden.
De model
We zullen eerst een model dienen te maken.
Standaard zijn er geen model aanwezig.
De model zal als naam model_vb.php
krijgen
De basis opzet van alle models is wel gelijk.
De controller dient een verbinding met Codeigniter te krijgen.
Dat ziet als volgt uit
Je mag elke naam eigenlijk kiezen.
Probeer hier wel enige logica in te houden.
Ik zelf laat altijd in de models's de naam model terug komen, ook hier.
Let op het hoofdletter gebruik in de class.
In de fysieke naam zie je dit niet weer.
We dienen Codeigniter nog wel te vertellen dat we gebruik gaan maken van een model.
Het is niet verplicht, maar wel zo handig.
in feite kan ik mij niet voorstellen dat je zonder een model werkt.
Het zou betekeken dat je het MVC model zou verlaten en er een VC model van zou maken.
Over verarming gesproken.
Verander het volgende in de file autoload.php
Deze hebben we hierboven al eens gebruikt.
Verander het volgende
van |
naar |
We kunnen nu veilig de de model class Model_vb
gebruiken en overal inzetten.
De aanpassing aan het model
Eerst de aanpassing aan het model.
Je ziet dat er een functie is bijgekomen, namenlijk alle_records()
Aan de kleur codering en de accolades zie je waar deze begint en stopt.
Aan elke functie kun je variabelen meegeven.
Deze plaats je tussen de accolades.
Aangezien we geen variabelen op dit moment willen gebruiken en alle records willen zien, hoeven we nu niets tussen de accolades te plaatsen.
De volgende regel begint met $this->
Dit is om binnen de gecreerde werkruimte binnen PHP de gegevens beschikbaar te maken en houden.
De code $this->db
geeft aan dat we met de ter beschikkeng gestelde class db
werken.
En ja, deze verzorgt de interactie met de database.
( Zie hiervoor bv. https://www.vanwijhecons.nl/codeigniter/gebruikers_gids/database/active_record.html )
Deze regel zegt ons dat we de volgende velden willen selecteren:
- Code
- Name
- Continent
- Region
Het woord array
geeft aan dat we resultaten kunnen verwachten in een array.
De volgende regel laat een sortering plaats vinden op het record Name
en wel Ascending ( asc
)
De hierop volgende regel laat zoeken in de tabel country
en wijst de vraag toe aan de variable $query
.
De laatste regel laat deze query uitvoeren en als uitvoer terug geven.
En hoe nu verder?
De volgende stap is deze uitvoer te koppelen aan onze controloler welkom.php
om deze de gegevens te laten doorgeven aan de view.
De cirkel is dan rond.
In logico opbouw hebben we dan het volgende gedaan:
- De controller
welkom.php
wordt aangeroepen - Deze haalt gegevens op van de model
model_vb.php
middels de functiealle_records()
- Vervolgens worde deze deze gegvens aan de view
inhoud.php
doorgegeven.
Het doorgegeven van de gegevens aan de view via de controller.
Hiertoe passen we de controller welkom.php
aan
Verander het volgende:
De aanpassingen zitten in het toewijzen van gegevens aan de variabele $data['landen']
en aan het meesturen van deze data met de view inhoud $this->load->view('inhoud', $data);
De eerste aanpassing is nodig om in het script de gegevens beschikbaar te krijgen.
De geneste array structuur $data[]
wordt hiervoor gebruikt.
In dit geval wordt de sub array $data['landen']
hier voor gebruikt.
De tweede aanpassing is het toewijzen van gegevens aan een view
Hiertoe wordt de geneste array $data
teoegewezen aan de view inhoud.php
Zo kun je aan elke view gegevens mee geven.
Tevens zie je hoe de controller de spin in het web wordt.
Gegevens worden toegewezen aan variabelen en deze variabelen worden verder toegewezen aan views
Je kunt zo aan elke view gegevens mee geven.
De aanpassing aan de view
De view inhoud.php
wordt volledig aangepast.
Alleen de gegevens vanuit de database wil ik hier zichtbaar hebben.
Verander het volgende:
Je ziet hier een tabel onstaan uit de array $landen
Deze wordt eerst in rijen omgezet $rij
waarna deze per rij verder wordt weergegeven.
En in de browser
Zou je zoiets als volgende dienen te krijgen.
Tot slot
CodeIgniter heeft nu een verbinding met een database.
Probeer het uit, zou ik zeggen.
Het volgende artikel zal gaan over het aanpassen van gegeven in de database.
Veel programmeer plezier ermee.
Tot ziens,
Ubel Jan van Wijhe
van Wijhe Consultancy
E-mail naar info@vanwijheweb.nl