Inleiding | Introductie connecties | Praktijkvoorbeeld |
|
|
Inleiding |
|
---|---|
In de vorige hoofdstukken is de database programmeertaal SQL geïtroduceerd. Deze taal is nodig om gegevens op te vragen of te muteren via een database management programma. Het doel van deze module is een eigen webapplicatie in php te maken die gebruikmaakt van een MySQL database voor de opslag van gegevens. De koppeling van php met de database vindt plaats door vannuit php een verbinding te maken met een database management service. Is de koppeling tot stand gebracht dan kan men vanuit php doormiddel van SQL opdrachten met deze service communiceren. In dit hoofdstuk concentreren we ons alleen op het maken van de verbinding van het php programma met de database management service. Tot slot zal er bij elk hoofdstuk waarin php en sql wordt beschreven een praktijkvoorbeeld staan. Als je de voorbeelden zelf uitvoert, zal je aan het einde een klein programma hebben waarin je gegevens kunt manipuleren met behulp van php/mysql. Aan het einde van dit hoofdstuk weet je :
|
|
|
|
Een verbinding |
|
Om php en mysql met elkaar te laten samenwerken, zal je in php-code een opdracht tot het maken van een verbinding met de database management service aanwezig moeten zijn. Als de code wordt uitgevoerd wordt er den een verbinding gemaakt tussen de webserver die de php code uitvoert en de mysql database service die op een, mogelijkerwijs andere computer, draait. Als deze verbinding gemaakt kan worden is er daarna de mogelijkheid om gegegevens te kunnen uitwisselen tussen php en de database met behulp van de sql-opdrachten. Door gebruik te maken van formulieren (zie de cursussen javascript en php) kun je vervolgens een gebruikers interface ontwikkelen waar een gebruiker op een beheersbare manier met de gegevens in contact kan komen. Een verbinding maak je door in php de volgende gegevens op te nemen:
Een verbinding maken bestaat uit de volgende stappen:
|
|
Opdrachten |
|
|
|
Praktijkvoorbeeld |
|
Opdrachten |
|
voorbeeld 1: database.php |
<?php // opslaan als database.php // toegangsgegevens mysql database service $server = "localhost"; $user = "leerling"; $wachtwoord = "rloleerling"; $database ="garagebedrijf"; $melding = ""; // verbinding maken met mysql database service $db = new mysqli($server, $user, $wachtwoord,$database); if ($db->connect_errno) { $melding ="Helaas, mysql kan geen verbinding maken" . $db->connect_error; } else { $melding = "De verbinding is tot stand gebracht"; // sluit connectie met database service af $db->close(); } /* Met onderstaand echo commando kun je een stuk text tussen END en END; naar de client computer sturen */ echo <<<END <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Page title</title> </head> <body> $melding<br/> </body> </html> END; ?> |
voorbeeld 2: database.php |
Bestand 1<?php // sla op als database.php /* eerst definiƫren we twee global variabelen $db en $melding. Een globale variabele is een variabele die we overal in de code kunnen benaderen. Voordelen van een globale variabele zijn dat een dergelijke variabele overal vanuit de code benaderbaar is en dat er communicatie mogelijk is vanuit verschillende functies met behulp van deze variabelen zonder dat de functie argumenten nodig heeft. Een groot nadeel is dat het naarmate projecten groter worden lastig is om globale variabelen goed in het oog te houden. */ global $melding; // zal worden gebruikt voor foutmeldingen in database functies global $db; // zal worden gebruikt om een database connectie in op te slaan $melding=""; // zal worden gebruikt voor foutmeldingen in database functies $db=null; // zet de connectie eerst op null /** * maakVerbinding probeert een verbinding met de database manager op te zetten * param &$db: verwijzing naar de globale variabele die de connectie aangeeft * param &$melding: verwijzing naar variabele die de meldingen bijhoudt */ function maakVerbinding(&$db,&$melding) { // toegangsgegevens mysql database service $server = "localhost"; $user = "leerling"; $wachtwoord = "rloleerling"; $database ="garagebedrijf"; // test of er al een verbinding is; if($db) { $melding = "Er is al een verbinding"; } else { // verbinding maken met mysql database service $db = new mysqli($server, $user, $wachtwoord,$database); if ($db->connect_errno) { $melding ="Helaas, mysql kan geen verbinding maken" . $db->connect_error; $db=null; } else { $db->set_charset('utf8'); // Zorgt dat speciale tekens ook uit de database worden gehaald $melding = "Connectie met databse gemaakt"; } } return $db; } /** * verbreekVerbinding verbreekt de connectie met de mysql server en * zet de globale variabele $db weer op de startwaarde. */ function verbreekVerbinding() { global $db; // Haal een verwijzing naar de huidige connectie in database.php if($db) { $db->close(); $db=null; } } ?> Bestand 2<?php // sla op als algemeen.php /* toonVerbindingStatus() is een fucntie die de database connectie test. Het resultaat is een tekst die het succes of niet van het maken van de connectie met de database manager weergeeft */ function toonVerbindingStatus() { $uitvoer=""; // initialisatie van variabele om uitvoer in te plaatsen $melding=""; // initialisatie van variabele om connectie foutmelding in te plaatsen global $db; // Haal een verwijzing naar de huidige connectie in database.php // maak verbinding maakVerbinding($db,$melding); if(!$db) // test verbinding { // mislukt $uitvoer=$melding; } else { $uitvoer=$melding; // Volgende is niet nodig maar alleen om functionaliteit maakVerbinding te laten zien // verbind nog een keer maakVerbinding($db,$melding); $uitvoer.="<br/>".$melding; //sluit database verbreekVerbinding(); // verbind nog een keer; maakVerbinding($db,$melding); $uitvoer.="<br/>".$melding; verbreekVerbinding(); } return $uitvoer; } //einde van het PhP blok ?> Bestand 3
<?php
// sla op als index.php
// ophalen externe code
require_once("database.php");
require_once("algemeen.php");
/* declareren van variabelen die we in de rest van de code in
dit document nodig hebben
*/
$actie="toonVerbindingStatus";
$uitvoer = "";
// afhandelen actie ofwel uitvoer maken
// Vertel hier wat een switch ook weer doet.
switch($actie)
{
case "toonVerbindingStatus": $uitvoer = toonVerbindingStatus(); break;
default: $uitvoer = "Er is niets te doen"; break;
}
// html uitvoer
echo <<<END
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Page title</title>
</head>
<body>
$uitvoer<br/>
</body>
</html>
END;
//einde van het PhP blok
?>
|
|