TP2-3-4 : Modélisation et implémentation d’une base de données pour un site internet Les développeurs de l’entreprise « CodeAMoitié » doivent concevoir et mettre en ligne le site internet de leur nouveau client. Ce site est un forum qui réunit différentes communautés (professionnels, chercheurs, autodidactes, développeurs web, mobile, logiciel, etc.) autour d’un thème : les bases de données SQL, de leur conception jusqu’à leur usage. Pour se faire, l’entreprise a déjà entièrement conçu la vue du site et les actions que l’on peut réaliser dessus. Comme vous devez certainement le savoir, l’affichage d’un site dépend également de la manière dont il a été pensé et des données qu’il va y avoir. Cependant, n’ayant aucune connaissance dans ce domaine, l’entreprise a décidé de sous-traiter cette partie en faisant appel à des développeurs dévoués et dynamiques. L’objectif est donc de concevoir et développer la couche « modèle » du site web en suivant les recommandations de l’entreprise. Pour bien comprendre, le forum gère des membres qui peuvent rédiger des sujets (avec un titre, une description et une image) en lien avec le thème du site. Ils peuvent réagir sur les sujets proposés en répondant par messages directement. Si un utilisateur souhaite garder un sujet en mémoire, il a la possibilité de l’ajouter dans ses favoris. Afin de retrouver les sujets plus facilement, ils sont rangés par mots-clés, appelés des tags. Bien évidemment, les tags peuvent être réutilisés pour d’autres sujets qui traitent de la même chose. Lorsqu’un membre s’inscrit, il précise son login, son mot de passe, sa date de naissance, son niveau en SQL (débutant, intermédiaire, expert…), ses compétences (web, mobile, serveur…) et un message de description qui servira de présentation pour les autres. En parallèle de tout ce qui a été présenté, il peut également créer son propre groupe ou en intégrer d’autres. Le principe des groupes est de représenter les différentes communautés afin de favoriser les échanges entre les membres. Dans le cas où il souhaite faire partie d’un groupe, il ne peut que faire une demande via l’envoi d’une invitation et attendre la réponse. Dans l’autre cas, c’est lui qui gère le groupe et donc décide des membres qui rentrent en validant leur invitation. Ah oui ! Le client a précisé une chose importante pour lui à la fin de la réunion, c’est qu’à chaque fois que l’utilisateur effectue une action sur le site, il est récompensé (ou non) par des points. Le client souhaite implémenter plus tard un système de récompenses qui valorisent les membres impliqués. Etape 1 : Récupérer le projet Le serveur que nous utiliserons dans ce projet se trouve à cette adresse : os-vps418.infomaniak.ch. Pour se connecter en FTP (pour modifier les fichiers), référez-vous à l’encadrant qui vous donnera votre login et votre mot de passe. Gardez précieusement ces informations car elles pourraient bien vous servir lors des prochaines séances… Vous pouvez soit utiliser l’explorateur Windows, en ajoutant un emplacement réseau au niveau des disques C, D, E, etc., soit lancer un client FTP directement sur votre machine (ex : FileZilla, WinSCP…). N’oubliez pas que si vous devez préciser un port lors de la connexion FTP : c’est le port 1182. Votre site est maintenant accessible à cette url : os-vps418.infomaniak.ch:1180/<login>/. Si, complètement par hasard, vous avez besoin d’accéder à une base de données, vous la trouverez ici : os-vps418.infomaniak.ch:1180/phpmyadmin/, avec les mêmes login et mot de passe donnés par votre encadrant. Etape 2 : Modélisation & Compte rendu Le modèle relationnel du site et son compte rendu font partis des livrables du projet. Comme vous êtes habitués à travailler dans le domaine des bases de données, il est inutile de vous rappeler l’intérêt du compte rendu. Etape 3 : Développement du site Appuyez-vous sur la documentation du code pour développer le site. La découverte des fonctions attendues peut vous amener à revoir votre modèle relationnel. N’hésitez pas à le modifier ! Rappel : • • • Exclusivement en "PHP", vous coderez. La bibliothèque "mysqli", vous utiliserez (cf. « Cours 6 – Application Web »). Quelques astuces, - Créer un tableau, $tab = array(1, 2); - Ajouter une case dans un tableau, $tab[] = 3; // $tab vaut [1, 2, 3] - Créer un objet, $obj = array("cle1" => "valeur1", "cle2" => "valeur2"); - Pour l’utiliser, echo $obj["cle2"]; // écrit « valeur2 » - Pour afficher un tableau ou un objet (pour debugger), var_dump(array(1, 2)); // écrit « array(2){[0]=>int(1)[1]=>int(2)} » - Pour stopper l’exécution au milieu du code (pour debugger), exit; Vous trouverez un fichier .zip à la suite de l’énoncé de TP. Il contient les sources à compléter.