Vorige periode moest ik voor de PHP opdracht en de project les een portfolio maken. Voor de project les ging het vooral om het proces en het feedback geven en ontvangen.
Voor de PHP les ging het natuurlijk om de code en er moesten verschillende functies werken. Zoals een CMS login, project invoeren en bewerken, laatste 5 portfolio items weergeven, navigeren door pagina’s en paar andere dingen.
Het resultaat:
http://student.cmi.hro.nl/0838703/portfolio/

Technische info:
De site is gebouwd met de template engine Template Lite. Hiermee kan je het ontwerp beter gescheiden houden van de PHP.
Hoewel ik een deel van de code heb hergebruikt van andere sites heb ik toch wat nieuwe dingen geprobeerd. Ik heb na wat zoeken een handige manier gevonden om de PDO verbinding mee te nemen in een eigen class. Eigenlijk simpel via de construct.
// Eerst de verbinding
$dbh = new PDO('mysql:host=localhost;dbname=DATABASE', 'USER', 'PASS', array(
PDO::ATTR_PERSISTENT => true ));
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// class oproepen
$delete = new delFiles($dbh);
// de class
class delFiles {
private $db;
function __construct($db) {
$this->db = $db;
}
}
Via $this->db kun je vervolgens in de class de PDO verbinding gebruiken.
Daarnaast heb ik geprobeerd meer met de throw and catch van PHP te werken. Om een goed en een foutmelding te onderscheiden heb ik de error code gebruikt. Als er 200 bij staat betekend het dat de title ‘Succesvol’ moet zijn.
throw new Exception(
'Content is succesvol opgeslagen. <a href="content.php">Ga terug naar de lijst</a>', 200);
De catch aan het einde van de pagina:
catch(Exception $e) {
if ( $e->getCode() == 200 ) {
$title = 'Succesvol'; $error = $e->getMessage();
}
else { $title = 'Fout';
if($CONF_VARS['SYS']['debug']) {
$error = 'Error: '.$e->getMessage().'<br />
File: '.$e->getFile().'<br />
Line: '.$e->getLine();
}
else {
$error = $e->getMessage();
}
}
$tpl->assign( "title", $title );
$tpl->assign ( "message", $error ) ;
$tpl->display('cms_message.html');
}
Een manier om via de throw de link naar de redirect pagina mee te geven had ik niet gevonden.
Volgende uitdaging wordt iets maken met CakePHP.