Créations d’un livre d’or en 6 étapes
- Définition
- Créations des tables sql et des répertoires
- Bases des fichiers
- Affichages et ajout de messages
- Modification et suppression des messages
- Conclusions
Bases des fichiers
Avant tout, il nous faut créer les différents fichier .htaccess
RewriteEngine on #RewriteBase /serveur/mon_repertoire/ RewriteRule .* index.php php_flag magic_quotes_gpc off php_flag register_globals off
La ligne en commentaire, permet dans le cas d’une erreur de ce type : Fatal error: Uncaught exception ‘Zend_Controller_Dispatcher_Exception’ with message ‘Invalid controller specified (serveur)’ in
de corriger le problème, pour un accès, par exemple, via : http://localhost/serveur/mon_repertoire/
LivreControllers.php
<?php /** Zend_Controller_Action */ require_once 'Zend/Controller/Action.php'; class LivreController extends Zend_Controller_Action { public function indexAction() { echo 'Index du livre d\'or'; return; } public function ajouterAction() { $this->view->title .= ' .: Ajout d\'un message'; echo 'ajout d\'un message!'; return; } }
Le controlleur, c’est ce qui va diriger notre application
index.php
<?php error_reporting(E_ALL|E_STRICT); date_default_timezone_set('Europe/Brussels'); set_include_path('.' . PATH_SEPARATOR . '../site/lib' . PATH_SEPARATOR . './app/models/' . PATH_SEPARATOR . get_include_path()); include 'Zend/Loader.php'; Zend_Loader::loadClass('Zend_Controller_Front'); Zend_Loader::loadClass('Zend_Config_Ini'); Zend_Loader::loadClass('Zend_Registry'); Zend_Loader::loadClass('Zend_Db'); // load configuration $config = new Zend_Config_Ini('./app/config.ini', 'general'); $registry = Zend_Registry::getInstance(); $registry->set('config', $config); // setup database $db = Zend_Db::factory($config->db->adapter, $config->db->config->toArray()); Zend_Db_Table::setDefaultAdapter($db); // Régler le dossier des contrôleurs par défaut : $frontController = Zend_Controller_Front::getInstance(); $frontController->throwExceptions(true); $frontController->setControllerDirectory('./app/controllers'); // run! $frontController->dispatch();
Livre.php
<?php Zend_Loader::loadClass('Zend_Db_Table'); class Livre extends Zend_Db_Table { protected $_name = 'livre'; protected $_primary = 'id'; public function insertObject($object) { return parent::insert((array) $object); } public function updateObject($object, $where) { return $this->update((array) $object, $where); } }
Le modèle du livre, c’est-à-dire les données -> ici la base des données.
Date.php
<?php class MyWsp_View_Helper_Date { /** * Retourne une date sous forme d'une chaîne, au format donné par le * paramètre format, fournie par le paramètre timestamp ou la date et * l'heure courantes si aucun timestamp n'est fourni. En d'autres termes, * le paramètre timestamp est optionnel et vaut par défaut la valeur de la * fonction time(). * Plus d'info sur http://www.php.net/manual/fr/function.date.php * * @param string $format format de la date * @param int $timestampdate à formaté * * @return string */ public function date($format, $timestamp = null) { if (!is_nan($timestamp)) $timestamp = time(); // see http://www.php.net/manual/fr/function.strftime.php $dates = array( 'DDDD' => '%A', 'DDD' => '%a', 'DD' => '%d', 'D' => '%e', 'MMMM' => '%B', 'MMM' => '%b', 'MM' => '%m', 'YYYY' => '%Y', 'YY' => '%y', 'HH' => '%H', 'hh' => '%I', 'mm' => '%M', 'ss' => '%S', ); return strftime(str_replace(array_keys($dates), array_values($dates), $format), $timestamp); } }
config.ini
[general] db.adapter = PDO_MYSQL db.config.host = localhost db.config.username = root db.config.password = db.config.dbname = livredor
Contient la configuration pour accéder à la base de donnée du livre d’or.
Test
Rendez-vous à l’adresse de votre script :
- Lire les messages : http://localhost/serveur/mon_repertoire/livre/
- Ajouter un message : http://localhost/serveur/mon_repertoire/livre/ajouter/
Si tout est ok, passons à la suite!