cursusmaster, wat in de managers folder staat.
?php
/* cursusmanager inherits van mastermanager. Op dit moment bevat de mastermanager
* alleen nog een database verbinding.
*/
class cursusmanager extends mastermanager {
public function getById($aId) {
$statement = $this->connection->prepare("SELECT * FROM cursus WHERE id = ?");
$statement->bindValue(1, $aId);
$statement->execute();
/* fetchobject haalt het eerste record op uit het statement. PHP
* maakt hier zelf een object van, dus het model person.php wordt
* hier nu niet gebruikt. fetchobject geeft null als er geen records
* zijn
*/
return $statement->fetchObject();
}
public function getAll() {
$statement = $this->connection->prepare("SELECT * FROM cursus");
$statement->execute();
/* fetchAll(PDO::FETCH_OBJ) haalt ALLE records op uit het statement. PHP
* maakt hier zelf objecten van, fetchAll(PDO::FETCH_OBJ) geeft een lege array als
* er geen records zijn
*/
return $statement->fetchAll(PDO::FETCH_OBJ);
}
public function delete($aId) {
$statement = $this->connection->prepare("DELETE FROM cursus WHERE id = ?");
$statement->bindValue(1, $aId);
$statement->execute();
}
public function magVerwijderen($aCursusId) {
$statement = $this->connection->prepare("SELECT COUNT(*) FROM cursusleerling WHERE cursusid = ?");
$statement->bindValue(1, $aCursusId);
$statement->execute();
$aantal = $statement->fetchColumn();
return $aantal == 0;
}
}
mastermanager, wat ook in de masters folder staat.
<?php
class mastermanager {
/* connectie beschikbaar maken voor afgeleide van deze klas */
protected $connection;
/* De constructor van de mastermanager */
function __construct() {
/* Globale database connection koppelen aan mastermanager
* het keyword global betekend in php dat je gebruik wilt maken
* van een globale variabele buiten de scope waar je nu bezig bent.
* In dit geval komt $globalConnection uit database.php
*/
global $globalConnection;
$this->connection = $globalConnection;
}
}
person:
<?php
class person {
public $id;
public $firstname;
public $lastname;
public $email;
}
autoloader -> Nee hiermee laadt je geen auto op, maar iets anders ofzo.
<?php
$searchPaths = Array();
array_push($searchPaths, "");
array_push($searchPaths, "managers/");
array_push($searchPaths, "models/");
require_once 'database.php';
function __autoload($aClassName) {
global $searchPaths;
foreach ($searchPaths as $item) {
$fileName = $item . $aClassName . ".php";
if (file_exists($fileName)) {
require_once $fileName;
return;
}
}
}
database -> maak hiermee connectie met de database om zo alles werkende te krijgen
<?php
$hostname = "localhost";
$database = "fkwarningthree";
$username = "root";
$password = "";
$globalConnection = new PDO("mysql:hostname=$hostname;dbname=$database;", $username, $password);
$globalConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
index -> alles wat een beetje vorm geeft aan het hele gebeuren etc.
<html>
<head>
<link href="css/stylesheet.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<?php
require_once 'autoloader.php';
// cursusManager is verantwoordelijk voor alle person handeling op
// de database.
$cursusManager = new cursusmanager();
// Aanname dat delete de enige action is op dit scherm
if(isset($_GET["action"]) && $_GET["action"] == "delete") {
// Aanname dat het id netjes word meegenomen!
$id = $_GET["id"];
$cursusManager->delete($id);
}
// Haal alle cursussen uit de database om deze verderop te laten zien.
$cursussen = $cursusManager->getAll();
?>
<img src="images/logo.png" id="logo" />
<h2>Cursussen</h2>
<!-- simpel gridje, 123 hatsaflats -->
<div class="grid">
<div class="gridheader">Naam</div>
<div class="gridheader">Aantal jaar</div>
<div class="gridheader">Niveau</div>
<div class="gridheader gridaction"></div>
<?php
// loop door alle personen heen
// (in code bovenaan uit database gehaald)
foreach($cursussen as $cursus) {
echo "<div class='gridcontent'>$cursus->naam</div>";
echo "<div class='gridcontent'>$cursus->aantaljaar</div>";
echo "<div class='gridcontent'>$cursus->niveau</div>";
echo "<div class='gridcontent gridaction'><a href='verwijderen.php?id=$cursus->id'>delete</a></div>";
}
?>
</div>
</body>
verwijderen -> een tussenpagina om twee buttons te laten zien, vooral bedoelt om de bezoeker te laten nadenken of hij/zij de content wel wilt verwijderen of niet.
<html>
<body>
<?php
require_once 'autoloader.php';
// cursusManager is verantwoordelijk voor alle person handeling op
// de database.
$cursusManager = new cursusmanager();
// Aanname dat delete de enige action is op dit scherm
$id = $_GET["id"];
$cursus = $cursusManager->getById($id);
if(isset($_POST["verwijderen"])) {
$cursusManager->delete($id);
header("Location: index.php");
}
if(isset($_POST["annuleren"])) {
header("Location: index.php");
}
?>
<form method="post">
Weet je zeker dat je deze cursus wilt verwijderen? <br/><br/>
<?php
echo "<strong>$cursus->naam</strong>";
?>
<br/><br/>
<?php
$magVerwijderen = $cursusManager->magVerwijderen($id);
if($magVerwijderen == true) {
echo "<input type='submit' name='verwijderen' value='Verwijderen' />";
}
else {
echo "<input type='submit' name='verwijderen' disabled value='Verwijderen' />";
}
?>
<input type="submit" name="annuleren" value="Annuleren" />
</form>
</body>
Aucun commentaire:
Enregistrer un commentaire