Informaticasite van het Lauwers College te Buitenpost                 © R.J. van der Beek
 

Hoofdstuk 19. PHP en MySQL

19.4. MySQL met phpMyAdmin

Je kunt in PHP ook met SQL werken, waarbij je gegevens van een database kunt laten zien of wijzigen.
Daarbij wordt gebruik gemaakt van MySQL, dat is een DBMS (database management systeem).
Je kunt in je PHP-document SQL-opdrachten zetten, die door MySQL worden verwerkt. Maar dan moet er wel een database zijn, en die database moet je eerst rechtstreeks m.b.v. MySQL of m.b.v. PhpMyAdmin aanmaken, dus niet in je PHP-document.

Als je rechtstreeks met MySQL wilt werken dan moet je het in een MSDOS-venster starten, en dan moet je allemaal commando's invoeren. Dat is nogal lastig, want dan moet je die commando's kennen. Maar je kunt ook met PhpMyAdmin werken, dat is een web-gebaseerde toepassing waarmee je je MySQL databases kunt beheren.
We gaan er daarom vanuit dat je met PhpMyAdmin gaat werken, en dat je de WAMP-server op je eigen computer hebt geïnstalleerd.

  19.4.1. PhpMyAdmin starten

Klik rechts in de taakbalk op het wampserver icoontje en kies in het menu dat dan verschijnt voor phpMyAdmin. Dit zorgt ervoor dat de browser wordt opgestart en je krijgt het volgende phpmyadmin-venster te zien.



Als je voor de eerste keer inlogt na de installatie, dan ben je ingelogd als root, d.w.z. dat je gebruikersnaam root is en dat je alle rechten hebt.
En er is nog geen wachtwoord voor de gebruiker root, en ook niet voor de andere gebruikers.
Het is verstandig wel een wachtwoord aan te brengen voor de gebruiker root, en een gebruikersnaam met wachtwoord aan te brengen voor iedereen die van je database gebruik wil maken via je website, maar die verder geen rechten heeft.
In het PhpMyAdmin-venster heb je een link Rechten, klik daar op.
Je krijgt dan een venster te zien waar de gebruikersnamen staan, met de bijbehorende rechten.
Als WAMP net geïnstalleerd is zijn er twee gebruikers: Elke en root.
Na zo'n nieuwe installatie zijn er nog geen wachtwoorden, at zie je in het veld Wachtwoord.
In het veld Host zie je voor beide gebruikers o.a. localhost staan, dat betekent dat alleen mensen die op de computer werken waarop WAMP is geïnstalleerd gebruik kunnen maken van de MySQL-server.



We gaan nu eerst de gebruiker Elke verwijderen.
Zet een vink in de vakjes voor Elke, klik op de button voor Verwijder de gebruikers en vernieuw de privileges daarna.
Klik dan op start, twee regels lager (zie het venster hierboven) en de gebruiker Elke zal worden verwijderd.

  19.4.2. Een wachtwoord voor de gebruiker root invoeren

Klik weer op de link rechten in het hoofdmenu van phpMyAdmin.
Klik dan bij de gebruiker root op het icoontje helemaal rechts op de regel (zie het venster hieronder, bij de pijl).



Er verschijnt een nieuw venster, waarin je het wachtwoord voor de gebruiker root kunt invoeren.



Onder in dat venster zie je ergens Wijzig wachtwoord, klik twee regels verderop op de button voor Wachtwoord en dan kun je een wachtwoord invoeren. Je moet het nog eens herhalen in het invoerveld eronder, en als je dan op start klikt wordt het wachtwoord vastgelegd.

Als je PhpMyAdmin daarna afsluit, en het dan opnieuw opstart krijg je een foutmelding zoals hieronder.



Er staat dan op het scherm o.a. dat je de host, de gebruikersnaam en het wachtwoord in config.inc.php moet controleren.
Open Kladblok en open daarin het bestand config.inc.php (het staat in de map C:\wamp\www\phpmyadmin, tenminste als je WAMP hebt geïnstalleerd in de map C:\wamp).
En zoek de volgende regels op:
$cfg['Servers'][$i]['auth_type'] = 'config'; // Authentication method (config, http or co
$cfg['Servers'][$i]['user']      = 'root';   // MySQL user
$cfg['Servers'][$i]['password']  = '';       // MySQL password (only needed
                                             // with 'config' auth_type)
Daar zie je dat als er achter $cfg['Servers'][$i]['auth_type'] het woord 'config'; staat aangenomen wordt dat de gebruikersnaam root is (er staat ['user'] = 'root';) is en het wachtwoord leeg (er staat ['password']='';)
Verander daarom 'config'; achter $cfg['Servers'][$i]['auth_type'] in 'http'; en sla het bestand op.

Als je PhpMyAdmin daarna weer opstart door op het wampserver icoontje te klikken en voor PhpMyAdmin te kiezen, dan krijg je eerst een venstertje waarin je de gebruikersnaam en het wachtwoord moet invoeren.



Voer als gebruikersnaam root in en het bijbehorende wachtwoord, en dan kun je weer met PhpMyAdmin werken.

Als je PHP gaat gebruiken tesamen met MySQL dan moet je in je php-documenten een gebruikersnaam en een wachtwoord en een databasenaam opgeven. Dan is het heel onverstandig om als gebruikersnaam root op te geven want dan krijgt degene die jouw site bezoekt alle rechten, hij kan dan bijvoorbeeld al je databases verwijderen.

Het is gebruikelijk om een gebruiker met beperkte rechten aan te maken, en dan wel zo dat die gebruiker alleen kan werken met de database die op de betreffende site gebruikt wordt.

Werk nooit met de gebruikersnaam root, behalve als het beslist niet anders kan voor onderhoudswerkzaamheden.

  3. Een nieuwe database aanmaken

We gaan nu een database aanmaken voor een tennisvereniging.
En in die database is de belangrijkste tabel de tabel met de leden. Die tabel leden heeft de velden lidnr (dat is het nummer van het lid), naam, woonplaats, geboren, leeftijd, lidsoort, en score.

Als je PhpMyAdmin hebt opgestart dan zie je in het hoofdmenu vlak onder MySQL staan: Nieuwe database aanmaken
In het invoerveld daaronder tik je tennisvereniging in, en dan klik je op aanmaken



Het scherm wordt vernieuwd, er wordt gemeld dat de database is aangemaakt en dat er nog geen tabellen zijn in de database.
Je kunt dan de naam van een tabel invoeren, en aangeven hoeveel velden er bij die tabel horen.
Tik als tabelnaam leden in, en geef aan dat er 7 velden zijn. Klik dan op Start



Het scherm wordt weer vernieuwd, en je kunt de gegevens van de velden invoeren. Voer als naam van het eerste veld lidnr in, bij het type kies je voor INT, bij Attributen kies je voor UNSIGNED, en bij Extra kies je voor auto_increment
Klik verder op het eerste rondje achter de Extra-kolom (Primary key staat er bij het icoontje erboven, als je er met de muis op staat).
Auto_increment betekent dat je dat getal zelf niet hoeft in te voeren, MySQL doet dat zelf als er een nieuwe opmerking wordt toegevoegd aan de tabel en het laatste nummer wordt daarbij met één verhoogd.
Het type is INTEGER, dus een geheel getal, en UNSIGNED betekent dat het getal niet negatief kan zijn.
Als je het eerste rondje aanvinkt betekent dat dat het betreffende veld het sleutelveld wordt.

Voer als naam van het tweede veld naam in, bij het type kies je voor VARCHAR, en bij Lengte/Waardes voer je 30 in.
Het type VARCHAR betekent dat het een tekst is, en die tekst mag in dit geval uit maximaal 30 tekens bestaan.

Voer als naam van het derde veld woonplaats in, bij het type kies je voor VARCHAR, en bij Lengte/Waardes voer je 20 in.

Voer als naam van het vierde veld geboren in, bij het type kies je voor DATE.

Voer als naam van het vijfde veld leeftijd in, bij het type kies je voor INT en bij Attributen kies je voor UNSIGNED.

Voer als naam van het zesde veld lidsoort in, bij het type kies je voor VARCHAR, en bij Lengte/Waardes voer je 20 in. Verder zorg je er voor dat in de kolom Null het woord null staat.
Bij de eerste vijf staat not null en dat betekent dat daar beslist iets moet worden ingevuld, dat veld mag niet leeg zijn. De lidsoort hoeft echter niet beslist te worden ingevuld.

Voer tenslotte als naam van het zevende veld score in, bij het type kies je voor INT, bij Attributen kies je voor UNSIGNED, en in de kolom Null kies je null uit.



Als je klaar bent met invullen klik je Opslaan. En dan is de structuur van de tabel vastgelegd.

Zorg ervoor dat er geen spaties in de veldnamen voorkomen !

Welke types je kunt gebruiken, en wat de betekenis ervan is zie je in de tabel hieronder:

Numeriek    
TypeSIGNEDUNSIGNED
TINYINT -127 tot 128 0 tot 255
SMALLINT -32 768 tot 32 767 0 tot 65 535
MEDIUMINT -8 388 608 tot 8 388 607 0 tot 16 777 215
INT -2 147 483 648 tot 2 147 483 647 0 tot 4 294 967 295
BIGINT -9 223 372 036 854 775 808 tot 9 223 372 036 854 775 807 0 tot 18 446 744 073 709551 615
Tekst    
Type Opmerking Max. aantal tekens
VARCHAR variabele lengte niet aangevuld met spaties maximaal 255
CHAR vaste lengte aangevuld met spaties tot de juiste lengte maximaal 255
TINYTEXT geen bijzonderheden maximaal 255
TEXT geen bijzonderheden maximaal 65535
MEDIUMTEXT geen bijzonderheden maximaal 16777215
LONGTEXT geen bijzonderheden maximaal 4294967295
Datum    
DATE eerst het jaar, dan de maand, dan de dag formaat yyyy-mm-dd

  19.4.4. Een gebruiker van de database aanmaken

We gaan nu een gebruiker aanmaken, die alleen rechten op de database tennisvereniging krijgt.
Zorg er voor dat je PhpMyAdmin hebt opgestart, en dat je in het hoofdmenu zit. Als je niet in het hoofdmenu zit klik je op home (het huisje in het linker venster). Klik op de link rechten, en klik in het volgende scherm op Voeg een nieuwe gebruiker toe
Er verschijnt dan een nieuw scherm. Vul als gebruikersnaam leerling in, kies bij host lokaal uit, dan verschijnt in het tekstveld erachter localhost.
Tik als wachtwoord lc2006 in, en voer het nog eens in in het tekstveld eronder.

Onder het venster voor de login informatie staat een venster voor de globale privileges. We vinken daar niets aan, en dat heeft tot gevolg dat deze gebruiker geen globale privileges krijgt.
Onder dat venster zie je een knop met Start erop, klik daar op.



Er verschijnt een nieuw scherm, waarin bovenaan staat Gebruiker leerling@localhost.
In dit scherm kun je globale rechten toekennen, maar dat doen we niet.
We zorgen ervoor dat de gebruiker leerling alleen rechten krijgt op de database tennisvereniging
Onder het venster voor de globale rechten zie je een venster voor de Database-specifieke privileges. In dat venster zie je een regel met Voeg privileges toe aan de volgende database, kies in het pulldown-menu daarachter de database tennisvereniging uit, en klik dan op de knop Start erachter.



In het volgende scherm kun je aangeven welke rechten de gebruiker leerling krijgt op de database tennisvereniging
Klik op Selecteer alles, haal dan het vinkje voor Drop weg, en klik op Start. En dan ben je klaar.

  19.4.5. Velden van een record invullen

Sluit PhpMyAdmin af, en start het dan weer op. Voer nu als gebruikersnaam leerling en als wachtwoord lc2006 in.
Dan kom je in het hoofdmenu, maar er zijn nu minder opties dan wanneer je als root bent ingelogd. Verder staat er onder de link Nieuwe database aanmaken in rood afgedrukt geen rechten.
Kies in het linker venster de database tennisvereniging uit. Een andere database uitkiezen kan trouwens niet, behalve de database test. Dan verschijnt in het rechter venster de structuur van de database tennisvereniging, en dan kun je gegevens invoeren en wijzigen.
Klik op het derde icoontje (dat staat voor invoegen) onder Actie achter de tabel leden (zie de pijl in de figuur hieronder)



Dan kun je gegevens in van de leden invoeren.
Voer het volgende in:
Bij lidnr niets, bij naam Annie, bij woonplaats Buitenpost, bij geboren 1944-06-02 (dat is 2 juni 1944), bij leeftijd 62, bij lidsoort senior en bij score 2075
Klik dan op het rondje voor Voeg een nieuw record toe, en klik dan op Start



Voer op dezelfde manier de gegevens van een tweede lid in:
Bij lidnr niets, bij naam Willem, bij woonplaats Veenklooster, bij geboren 1992-09-13 (dat is 13 sept 1992), bij leeftijd 14, bij lidsoort jeugdlid en bij score 987
Klik dan op het rondje voor Voeg een nieuw record toe, en klik dan op Start

Het is niet de bedoeling om verder gegevens van de tennisvereniging in te voeren m.b.v. PhpMyAdmin.
We gaan in het volgende hoofdstuk bekijken hoe je er voor kunt zorgen dat de leden-tabel van de tennisvereniging ingevuld kan worden via PHP, en hoe dat dan ook bekeken kan worden in een webbrowser.