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
Modification et suppression des messages
Modifions notre contrôleur :
<?php /** Zend_Controller_Action */ require_once 'Zend/Controller/Action.php'; class LivreController extends Zend_Controller_Action { public function indexAction() { $livre = new livre(); $this->view->livres = $livre->fetchAll(); } public function ajouterAction() { $this->view->title .= ' .: Ajout d\'un message'; if ($this->getRequest()->isPost()) { Zend_Loader::loadClass('Zend_Filter_StripTags'); $filter = new Zend_Filter_StripTags(); $livre = $this->_getEmptyMsg(); $livre->id = null; $livre->nom = trim($filter->filter($this->getRequest()->getPost('nom'))); $livre->message = trim($filter->filter($this->getRequest()->getPost('message'))); if ($livre->nom != htmlspecialchars('Pseudo')) { $livre_ = new Livre(); $livre_->insertObject($livre); $this->_redirect('/livre'); return; } else { $this->view->message = 'Merci de donner votre pseudo!'; } } //création d'un message vide $this->view->livre = $this->_getEmptyMsg(); } public function modifierAction() { //si on est aps connecter ->redirection sur le logeur if (!$_SESSION['connecter']) $this->getResponse()->setRedirect($this->view->baseUrl . '/livre/admin/'); $this->view->title .= ' .: Modification d\'un message'; //récupération du message correspondant au paramètre id $livreTable = new Livre(); $where = $livreTable->getAdapter()->quoteInto('id = ?', intval($this->getRequest()->getParam('id'))); $livre = $livreTable->fetchRow($where); if ($this->getRequest()->isPost()) { Zend_Loader::loadClass('Zend_Filter_StripTags'); $filter = new Zend_Filter_StripTags(); $livre->nom = trim($filter->filter($this->getRequest()->getPost('nom'))); $livre->message = trim($filter->filter($this->getRequest()->getPost('message'))); if ($livre->nom != htmlspecialchars('Pseudo')) { $livre_ = new Livre(); $livre_->updateObject($livre, $livre_->getAdapter()->quoteInto('id = ?', $livre->id)); $this->_redirect('/livre/'); return; } } $this->view->livre = $livre; $this->view->action .= '/id/' . $livre->id; $this->render('ajouter'); } public function adminAction() { $this->view->title .= ' .: Administration'; if ($this->getRequest()->isPost() && !$_SESSION['connecter']) { if ($this->getRequest()->getPost('login') == 'admin' && $this->getRequest()->getPost('pass') == '1234') { //bon password et bon login $_SESSION['connecter'] = true; } } elseif (!$_SESSION['connecter']) { $this->render(); return; } $this->getResponse()->setRedirect($this->view->baseUrl . '/livre/'); } public function disadminAction() { $this->view->title .= ' .: Déconnection'; if ($_SESSION['connecter']) { $_SESSION['connecter'] = false; } $this->getResponse()->setRedirect($this->view->baseUrl . '/livre/'); } public function supprimerAction() { //si on est aps connecter ->redirection sur le logeur if (!$_SESSION['connecter']) $this->getResponse()->setRedirect($this->view->baseUrl . '/livre/admin/'); $this->view->title .= ' .: Suppretion d\'un message'; $livre = $this->_getEmptyMsg(); $livre->id = intval($this->getRequest()->getParam('id')); $this->view->action .= '/id/' . $livre->id; if ($this->getRequest()->isPost()) { $livre_ = new Livre(); if ($livre_->delete($livre_->getAdapter()->quoteInto('id = ?', $livre->id))) $this->view->message = 'Message supprimé!'; else $this->view->message = 'Message <b>non</b> supprimé!'; $this->view->message .= '<br /> Vous aller être rediriger!<br />'; $this->getResponse()->setRawHeader('Refresh:3; url=' . $this->view->baseUrl . '/livre/'); } } function init() { session_name('goldbook'); session_start(); $_SESSION['connecter'] = isset($_SESSION['connecter'])?$_SESSION['connecter']:false; $this->view->connecter = $_SESSION['connecter']; $this->view->title = 'Livre d\'or'; //url de base... $this->view->baseUrl = $this->_request->getBaseUrl(); $this->view->action = $this->getRequest()->getActionName(); //prêt à travailler sur les livres Zend_Loader::loadClass('Livre'); //ajout des aides de view $this->view->addHelperPath('./app/views/helpers', 'MyWsp_View_Helper'); $this->view->setEscape('utf8_encode'); } /** * Créer un message vide * * @return Object */ protected function _getEmptyMsg() { //création d'un message vide $livre = new stdClass(); $livre ->id = -99; $livre ->nom = 'Pseudo'; $livre ->message = 'Entrez votre message'; $livre ->date = time(); return $livre; } }
Il nous faut créer un système de session, et une authentification pour l’administration. Ici les choses sont très basiques, car le but n’y est pas! Donc on utilise els session php et une authentification des plus basique (login: admin
, password: 1234
)!
Il nous faut encore modifier index.phtml
<?php echo $this->render('header.phtml'); ?> <?php if ($this->connecter) echo '<a href="' , $this->baseUrl , '/livre/disadmin">Se déconnecter</a>'; ?> <div id="livre"> <p><a href="<?php echo $this->baseUrl; ?>/livre/ajouter">Ajouter un message</a></p> <div id="livre_message"> <?php foreach($this->livres as $livre) : ?> <div class="livre_block_message"> <span class="livre_pseudo"><?php echo $this->escape($livre->nom); ?></span> | <span class="livre_date">Le <?php echo $this->date('DDDD DD MMMM YYYY', $this->escape($livre->date)); ?></span> <br /> <span class="livre_message"><?php echo nl2br($this->escape($livre->message)); ?></span> <?php if ($this->connecter) echo '<br /><a href="' , $this->baseUrl , '/livre/modifier/id/' , $livre->id , '">Modifier</a> <a href="' , $this->baseUrl , '/livre/supprimer/id/' , $livre->id , '">Supprimer</a>'; ?> </div> <?php endforeach; ?> </div> </div> <?php echo $this->render('footer.phtml'); ?>
N’oublions pas d’ajouter les fichier admin.phtml et supprimer.phtml
suprimer.html
<?php echo $this->render('header.phtml'); ?> <div id="livre"> <strong><?php echo $this->message; ?></strong> <form method="post" action="<?php echo $this->baseUrl ?>/livre/<?php echo $this->action ?>" name="form_nom"> <div id="livre_haut"> <button type="submit" name="del">Supprimer?</button> </div> </form> <br /> <br /> </div> <?php echo $this->render('footer.phtml'); ?>
admin.phtml
<?php echo $this->render('header.phtml'); ?> <div id="livre"> <form method="post" action="<?php echo $this->baseUrl ?>/livre/admin" name="form_nom"> <div id="livre_haut"> Login : <input type="text" name="login"> <br /> Password : <input type="password" name="pass"> <br /> <button type="submit" name="admin">Poster</button> </div> </form> <br /> <br /> </div> <?php echo $this->render('footer.phtml'); ?>
Comme on peux le remarquer pas besoin d’un fichier modifier.phtml car nous réutilisons ajouter.phtml via $this->render(‘ajouter’);
!