Introduction
Vous devez réaliser un site de bookmarks coopératifs comme le sont les sites blogmarks,
delicious ou encore magniolia. Le but de ces sites est de mettre en commun les sites favoris
des internautes. C'est une autre façon que google de faire de la recherche sur internet.
Ce site devra contenir l'ensemble de fonctionnalités suivants :
· login sur le site. Celui-ci n'est pas obligatoire. En n'étant pas inscrit, un utilisateur ne
peut faire que de la recherche et uniquement sur les sites définis comme public.
· Chaque site peut être taggé par plusieurs tags possibles (php, tutorial, sport...).
· Les sites peuvent être notés par l'utilisateur qui les a enregistrés, on peut également
noter le nombre de fois où l'utilisateur a cliqué sur un site donné.
· On pourra faire de la recherche de sites par mot clé, tags, note, nombre de clics,
dernier accès....
· Une partie optionnelle comprend les commentaires postés associés à un bookmark
d'un utilisateur.
Bien entendu, la mise en forme du site sera faite avec des feuilles de style.
Le modèle conceptuel de données et les tables
Voici le modèle conceptuel de cette application.
De ce modèle on en déduit les tables suivantes, dont les clés primaire sont soulignés et les clés
étrangères sont en italique :
· user(login:varchar(32), mdp : varchar(32), email : varchar(255), date : date). Cette
table correspond à un utilisateur inscrit le date. Les mots de passe seront encodés dans
la base de donnée grace à la fonction md5 de php
· url(id : int,url : varchar(255). Les urls sont inscrits une seule fois dans la base.
· link(id : int, desc : text, date : date, nbClic : int, note : int, public :
bool,userLogin:varchar(32),idUrl:int). Cette table correspond au lien idUrl d'un
utilisateur userLogin créé à la date. Le champ public sert à savoir si un utilisateur non
inscrit voit le lien lors d'une recherche.
· tag(id : int,name:varchar(100),date : date)
· isTagged(idLink:int,idTag:int) : table construite à partir d'une relation (0n,0n).
· Optionnel :
comments(userLogin:varchar(32),idLink:int,title:varchar(100),text:text,date:date,time:
time) : l'utilisateur userLogin à commenté le lien idLink à une date et heure donnée, en
écrivant un titre et un texte.
A récupérer
o Voici le script pour créer les tables. Enregistrer le, modifier ces droits pour
qu'il soit exécutable et exécuter le. Vérifier dans mysql que les tables ont bien
été créées (show tables;).
o Voici une ébauche de la classe s'occupant de la liaison avec la base de donnée.
Les fonctions d'insertions dans les tables sont écrites. A vous de rajouter les
autres.
o Voici un script PHP mettant quelques données dans les tables. Cela peut vous
servir au départ pour créer l'application. C'est de plus un exemple de
l'utilisation de la classe DB.class.php
Dates et autres choses.
Le projet est à faire par groupe de 2 ou 3. Les dernières séances de programmation
web y seront consacrées. Durant la semaine du 14 au 20 mai, 1 créneau par groupe de
TP sera mis dans l'emploi du temps afin de voir l'avancement de chaque groupe.
Durant la semaine du 11 au 15 juin, un créneau sera mis en place pour faire les
soutenances. Celles-ci dureront 10 minutes durant lesquelles vous présenterez votre
site. Un rapport de 10 pages maxi sera à rendre ce jour là. Il devra contenir
l'architecture de votre site, les différentes classes utilisées, les problèmes rencontrés....
Recommandations
Commencez par faire l'architecture de votre site. Prévoyez également la structuration
de vos pages pour que la réalisation de la feuille de style soit facile. Ensuite, vous
n'aurez plus qu'à vous partager le travail.