preparation-de-la-base-de-donnees
Dans cette seconde partie, nous allons voir comment préparer la base de données pour notre application WatchMyDesk développée avec le Zend Framework et vous allez enfin savoir ce que va être notre application !

Plan de l’épisode #2

  1. Explication de notre projet WatchMyDesk
  2. Création de la base de données
  3. Mise en place de la connexion à la base de données dans notre application
  4. Introduction sur Zend_Db_Table et les modèles
  5. Conclusion
  6. Notes

Explication de notre projet WatchMyDesk

Les acteurs du web sont souvent fiers de leur bureau de travail. De temps en temps, on peut retrouver l’espace de travail de certain d’entre eux.
bureaugeekhype3
Les gens aiment particulièrement voir dans quel contexte travail telle ou telle personne.
L’objectif est de créer une plateforme communautaire sur laquelle les internautes peuvent créer la fiche de leur bureaux et ajouter une ou plusieurs photos.
L’aspect communautaire intervient grâce à la possibilité de commenter et donner une note aux bureaux.

Au niveau des fonctionnalités, nous avons du pain sur la planche. Mis en place dans le premier épisode, nous avons deux modules : Frontend et Backend. Ces deux dossier correspondent à la partie visible de site par un visiteur/membre et à l’administration.

Dans la partie frontend, nous allons avoir sur l’index, les 5 derniers bureaux postés, les 5 bureaux populaires et les accès rapide pour s’inscrire et s’identifier.
Dans la liste des bureaux, on aura une liste paginée avec les miniature et une courte description. On aura aussi la possibilité de trier la liste par titre, auteur, etc…
Dans la partie des détails du bureau, on aura toute les informations sur le bureau ainsi que la possibilité de lui mettre une note et d’ajouter un commentaire.

Une fois inscrit, le membre pourra ajouter son bureau avec un formulaire complet.

Dans la partie administration, on pourra gérer les membres inscrits, les commentaires, les bureaux, et voir les statistiques.

Création de la base de données

La création de la base de données va se passer à partir de phpMyAdmin de notre serveur local, à l’heure d’aujourd’hui le Zend Framework ne possède pas de processus de migration de base de données et de génération de table à la demande.

Pour cela, je vous met à disposition le .sql de notre base de données que vous importerez dans une base nommé watchmydesk.
Dans ce fichier sql, nous retrouvons 6 tables nommées :

  • bureaux: La liste des bureaux et le détails.
  • photos: Les photos lié à un bureaux.
  • bureaux_photos: La table de liaison entre les photos et les bureaux.
  • commentaires: les commentaires (euu normal ^^)
  • votes: les votes par bureaux.
  • membres: les membres inscrits.

Vous avez surement remarqué la table de liaison bureaux_photos, cette table sera très utile pour déterminé quel est la photos principale à afficher. Mais je vous en parlerais plus dans le prochaine épisode.

Mise en place de la connexion à la base de données dans notre application

Sans m’en rendre compte, je vous ai donnée cette partie la semaine dernière dans le premier épisode, enfaite, la configuration se fait grâce au 7 lignes dans le fichier application.ini que nous avons configuré.

; initialize database
resources.db.adapter = "MYSQLI"
resources.db.params.host = "localhost"
resources.db.params.username = "root"
resources.db.params.password = "root"
resources.db.params.dbname = "watchmydesk"
resources.db.params.date_format = "YYYY-MM-ddTHH:mm:ss"
resources.db.isDefaultTableAdapter = true

Introduction sur Zend_Db_Table et les modèles

Selon Wikipédia : Le modèle représente le comportement de l’application : traitements des données, interactions avec la base de données, etc. Il décrit ou contient les données manipulées par l’application. Il assure la gestion de ces données et garantit leur intégrité. Dans le cas typique d’une base de données, c’est le modèle qui la contient. Le modèle offre des méthodes pour mettre à jour ces données (insertion, suppression, changement de valeur). Il offre aussi des méthodes pour récupérer ces données. Les résultats renvoyés par le modèle sont dénués de toute présentation. Dans le cas de données importantes, le modèle peut autoriser plusieurs vues partielles des données.

Dans notre cas, nous allons voir comment créer notre modèle afin d’effectuer des opérations sur la table bureaux créée précédemment.

Nous allons donc créer un fichier nommé Bureaux.php dans le répertoire models/DbTable/ de notre application.

Dans ce fichier, nous allons ajouter quelques lignes de code que je vais vous expliquer par la suite :

class Model_DbTable_Bureaux extends Zend_Db_Table
{
    protected $_name = 'bureaux'; // On donne le nom de le table à laquelle se connecter

}

Le composant Zend_Db_Table est utilisé pour manipuler des données.
Ici on peut voir une utilisation de l’héritage dans un langage orienté objet. En effet, en héritant de la classe Zend_Db_Table, le modèle va donc posséder toutes les actions de la classe parente pour modifier, supprimer, créer et lire les informations dans la table.

Ensuite pour tester si notre application fonctionne bien, nous allons nous rendre dans le dossier /application/modules/frontend/controllers et éditer le fichier IndexController et modifier notre action indexAction :

public function indexAction(){
		$bureaux = new Model_DbTable_Bureaux();
		var_dump($bureaux->fetchAll());
	}

Il vous suffit d’aller ensuite sur votre site locale et de voir ce qui apparait. Si la connexion c’est bien passée, vous devriez avoir un énorme tableaux de données mais sans aucun enregistrement (normal, la base de données est vide).

Conclusion

Dans cet épisode, nous avons vu comment mettre en place la base de donnée pour une application développée avec le Zend Framework. Cette initiation va nous permettre d’attaquer un peu plus fort la semaine prochaine en nous penchant sur les relations dans les bases de données.

Notes

  1. Les conventions dans la base de données sont les miennes, vous pouvez très bien utiliser les vôtres afin de vous y retrouver par la suite.
  2. Etant un article très descriptif sur le projet, il se peut que les articles sur Dator.fr et La Ferme du Web se ressemblent.

Vous trouverez la même partie de ce tutorial pour Symfony sur La Ferme Du Web.
Je vous dis à Lundi prochain, pour la mise en place du MVC dans le Zend Framework.