|
Par
Cybermanu
Mise à jour : 04/09/2010
487 visites depuis 7 jours,
dont 29 sur ce chapitre
classé 233/786
|
) :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <?php require(dirname(__FILE__).'/../config/global.php'); // On récupère l'action à effectuer (Create, Read, Update ou Delete). // Je compte sur vous pour utiliser un système plus perfectionné que ça. ^^ $action = 'read'; if(isset($_GET['action']) && in_array($_GET['action'], array('create', 'read', 'update', 'delete'))) { $action = $_GET['action']; } /* Nous ferons ici les traitements concernant la page. */ switch($action) { case 'read': break; case 'create': break; case 'update': break; case 'delete': break; } /* Nous appellerons ici la page HTML appropriée. */ include(HTML_DIR.$action.'.php'); |
1 2 3 4 5 6 7 8 9 10 11 12 13 | INSERT INTO member (login, password) VALUES ('Jean', 'mypass'), ('Bernard', 'mysuperpass'), ('Superman', 'batman'); INSERT INTO article (title, content) VALUES ("Mon premier article", "Voici le contenu de l'article, comme c'est simplement pour tester, je mets du texte tout bidon. D'ailleurs, je ne sais pas si vous avez remarqué, mais je n'ai pas beaucoup d'imagination !"), ("Mon second article", "Voici le contenu du deuxième article, comme c'est simplement pour tester, je mets du texte tout bidon. D'ailleurs, je ne sais pas si vous avez remarqué, mais je n'ai pas beaucoup d'imagination !"), ("Mon troisième et dernier article", "Voici le contenu du troisième article, comme c'est simplement pour tester, je mets du texte tout bidon. D'ailleurs, je ne sais pas si vous avez remarqué, mais je n'ai pas beaucoup d'imagination !"); |

Mais dans ce cas, ce n'est presque pas la peine de lire jusqu'en bas, parce que je ne fais que reprendre ce que l'on a vu jusqu'ici. À vous de voir ce que vous préférez. 
1 2 3 4 5 6 | <?php /* ... */ case 'read': $articles = Doctrine_Core::getTable('Article')->findAll(); break; /* ... */ |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US"> <head> <title>Tutoriel Doctrine</title> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> </head> <body> <h1>Liste des articles</h1> <a href="?action=create">Ajouter un nouvel article</a> <table> <tr> <th>Titre</th> <th>Contenu</th> <th>Auteur</th> <th><em>Action</em></th> </tr> <?php foreach($articles as $article): ?> <tr> <td><?php echo $article['title'] ?></td> <td><?php echo $article['content'] ?></td> <td><?php echo $article['User']['login'] ?></td> <td> <a href="?action=update&id=<?php echo $article['id'] ?>">Modifier</a> <a href="?action=delete&id=<?php echo $article['id'] ?>">Supprimer</a> </td> </tr> <?php endforeach; ?> </table> </body> </html> |
).1 2 3 4 5 6 7 8 9 10 11 12 13 | <body> <h1>Création d'un article</h1> <form action="index.php?action=create" method="post"> <label for="article_title">Titre : </label><br /> <input type="text" name="title" id="article_title" /><br /> <br /> <label for="article_text">Texte : </label><br /> <textarea name="content" id="article_text"></textarea><br /> <br /> <input type="submit" value="Sauvegarder" /> </form> <a href="?action=read">Retour à la liste</a> </body> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php /* ... */ case 'create': if(!empty($_POST)) { $article = new Article(); $article->title = $_POST['title']; $article->content = $_POST['content']; // On indique l'auteur. Adaptez cela à votre projet. $article->User = $user; $article->save(); } break; /* ... */ |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <body> <h1>Modification d'un article</h1> <form action="index.php?action=update" method="post"> <label for="article_title">Titre : </label><br /> <input type="text" name="title" id="article_title" value="<?php echo $article['title'] ?>" /><br /> <br /> <label for="article_text">Texte : </label><br /> <textarea name="content" id="article_text"><?php echo $article['content'] ?></textarea><br /> <br /> <input type="submit" value="Sauvegarder" /> <!-- Pour se souvenir de quel article il s'agit --> <input type="hidden" name="id" value="<?php echo $article['id'] ?>" /> </form> <a href="?action=read">Retour à la liste</a> </body> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <?php /* ... */ case 'update': $id = isset($_POST['id']) ? $_POST['id'] : $_GET['id']; // Il faut évidemment s'assurer que l'article existe if(!($article = Doctrine_Core::getTable('Article')->find($id))) { // À vous de mettre un traitement personnalisé ! // Par exemple, on considère qu'il s'agit d'un nouvel article. $article = new Article(); // Ou bien : exit(); } if(!empty($_POST)) { $article->title = $_POST['title']; $article->content = $_POST['content']; // On indique l'auteur. Adaptez cela à votre projet, par exemple si vous stockez l'id dans la session. $article->User = $user; $article->save(); } break; /* ... */ |
1 2 3 4 5 6 7 8 9 10 | <?php if(!empty($_POST)) { $q = Doctrine_Query::create() $q->update('Article a') ->set('a.title', '?', $_POST['title']) ->set('a.content', '?', $_POST['content']) ->where('a.id = ?', $id) ->execute(); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <body> <?php if($article->exists()): ?> <h1>Modification d'un article</h1> <?php else: ?> <h1>Création d'un article</h1> <?php endif; ?> <form action="index.php?action=<?php echo $action ?>" method="post"> <label for="article_title">Titre : </label><br /> <input type="text" name="title" id="article_title" value="<?php echo $article['title'] ?>" /><br /> <br /> <label for="article_text">Texte : </label><br /> <textarea name="content" id="article_text"><?php echo $article['content'] ?></textarea><br /> <br /> <input type="submit" value="Sauvegarder" /> <?php if($article->exists()): ?> <input type="hidden" name="id" value="<?php echo $article['id'] ?>" /> <?php endif; ?> </form> <a href="?action=read">Retour à la liste</a> </body> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <?php /* ... */ case 'create': case 'update': if(!isset($_GET['id']) && !isset($_POST['id'])) { $article = new Article(); } else { $id = isset($_POST['id']) ? $_POST['id'] : $_GET['id']; if(!($article = Doctrine_Core::getTable('Article')->find($id))) { $article = new Article(); } } if(!empty($_POST)) { $article->title = $_POST['title']; $article->content = $_POST['content']; // On indique l'auteur. Adaptez cela à votre projet, par exemple si vous stockez l'id dans la session. $article->User = $user; $article->save(); } break; /* ... */ |


1 2 3 4 5 6 7 8 9 10 11 | <?php /* ... */ case 'delete': $id = isset($_POST['id']) ? $_POST['id'] : $_GET['id']; // On s'assure que l'article existe if($article = Doctrine_Core::getTable('Article')->find($id)) { $article->delete(); } break; /* ... */ |

1 2 3 4 5 | <?php $q = Doctrine_Query::create() $q->delete('Article a') ->where('a.id = ?', $id) ->execute(); |
) vous a permis de mettre en pratique simplement ce que nous avons vu jusque là. Bien sûr, comme je l'ai déjà dit, l'intérêt de Doctrine se révèle surtout dans les gros projets, et je ne vous encourage pas forcément à l'utiliser pour de petits projets simples.Il n'y a pas encore de commentaire pour ce tuto.