Conception du site

Après l'analyse des besoins, nous passons à la conception. Nous avons choisi de structurer le site avec une architecture modulaire qui lui permettra d'avoire des extensions ultérieures

1. Le Moteur graphique

Le moteur graphique génère automatiquement pour chaque page les onglets et les menus graphiques. Ils sont pour l'instant réalisés par un tableau colorés. On pourra aussi créer des images pour améliorer le rendu graphique et donner un aspect de 3D au site.

Pour activer le moteur graphique sur une page, on a besoin d'inclure quelques fichiers au début et à la fin de chaque page, comme le montre le script PHP qui suit:

fichier : home/actualite.php

<? $rubrique=home;<br> $page=actualite;<br> include ("../commun/conf.inc.php"); include ("../commun/connection.inc.php"); include ("../commun/structure.inc.php"); include ("../commun/entete.inc.php"); ?> <!-- Début du script html ici --> <p> Mettre ici l'actualité de l'association </p> <? include "../commun/fin.inc.php"; ?>

Les deux premières variables $rubrique et $page indiquent respectivement le nom de la rubrique et de la page. le nom de la rubrique doit être le nom du répertoire où se trouve la page, le nom de la page doit être le nom du fichier PHP privé de son extension .php, comme l'illustre l'exemple précédent.

Le fichier conf.inc.php contient toutes les informations nécessaires permettant d'accéder à la base de données. Le fichier structure.inc contient la structure des pages. Les pages sont classés dans une sructure de tableau à double entrée:

$rubriques = array( "home"=>new Rubrique ("Accueil", $BOTH, "actualite", "actualite", array( "actualite"=>new Page("Actualité", $BOTH), "assoce"=>new Page("Connaître l'assoce", $BOTH) )), "annuaire"=> new Rubrique ("Annuaire", $BOTH, "recherche", "recherche", array( "recherche"=>new Page("Rechercher", $BOTH), "apropos"=>new Page("A-propos", $BOTH) )), "membre"=> new Rubrique ("Membre", $BOTH, "login", "bienvenue", array( "login"=>new Page("Login", $PUBLIC), "logout"=>new Page("Logout", $PRIVATE), "inscription"=>new Page("S'inscrire", $PUBLIC), "modification"=>new Page("Modifier sa fiche", $PRIVATE), "password"=>new Page("Mot de passe", $PRIVATE) )), "forum"=>new Rubrique ("Forum", $BOTH, "index", "index", array( "apropos"=>new Page("A propos", $BOTH) )), "annonces"=>new Rubrique ("Annonces", $BOTH, "recherche", "recherche", array( "recherche"=>new Page("Rechercher", $BOTH), "enregistrement"=>new Page("Nouvelle annonce", $BOTH) )) );

On désigne tout d'abord par "home" une rubrique du site, qui sera affichée comme un onglet contenant "Accueil", cette rubrique sera disponible en accés public ou privé ($BOTH), la page par défaut en mode public et privé est "actualite". Cette rubrique se compose de deux pages: "actualite" et "assoce" qui sont disponibles en public et en privé, et qui sont affichées dans la barre des menus respectivement "Actulité" et "Connaître l'assoce". Il convient de changer les entrées de ce tableau pour adapter le site à une association particulière.

Pour créer une nouvelle page, il faut lui inclure les fihiers PHP comme dans l'exemple en présisant son nom et sa rubrique. Il faut aussi préciser cette page et sa rubrique dans la structure $rubrique pour que le moteur graphique tienne compte de cette page dans la génération du rendu HTML.

2. L'inscription et la modification des données personnelles

2.1 L'inscription :

L'interface d'inscription est gérée par le fichier inscription.php, ce fichier respecte l'architecture du site, sa structure est la suivante :

- Inclusion de l'entête propre à l'inscription.
- Inclusion du corps propre à l'inscription.
- Inclusion de la fin de page.

Le formulaire est posté par une méthode POST pour une transparence du traitement par rapport à l'utilisateur (en effet les paramètres seront transportés dans le corps de la requête sans être visible dans la barre d'adresse).

Le traitement de la requête se fait en appelant un fichier séparé : inscription_process.php. Ce fichier traite les points suivants :

- Vérification que tous les champs obligatoires ont été saisis. Dans le cas où une information manque, la page inscription.php est rappelée en renvoyant toutefois les champs déjà saisis par l'utilisateur (ceci assouplit grandement la navigation et évite ainsi à l'utilisateur de tout re-saisir à chaque erreur).
- Vérification du login. Cela se fait en envoyant une requête vers la base pour vérifier la non-existence du login choisi.
- Vérification de la saisie du mot de passe.

Si aucune erreur n'est rencontrée, les informations de l'utilisateur ainsi que l'audience choisie pour chaque paramètre sont insérées dans la base de donnée et un message de confirmation est affiché sur l'interface.

2.2 Modification du profil :

L'interface utilisateur de la modification de profil ainsi que son traitement sont similaires à ceux de l'inscription. Cependant, ces deux aspects (interface et traitement) sont unifiés dans un même fichier.

2.3 Structure de la table utilisateur :

Les informations de l'utilisateur sont stockées dans la table USER de la base de données ASSOCIATION. La structure de cette table est la suivante :

Nom de l'attribut
Type
Descritpion



USER_ID
Entier
La clé primaire de la table USER



USER_Login
Texte
Le login
USER_Login_D
Entier
L'audience pour l'identité courte (login, nom, prénom)
USER_Password
Texte
Le mot de passe
USER_Name
Texte
Le nom de famille
USER_FirstName
Texte
Le prénom



USER_Address
Texte
L'adresse
USER_City
Texte
La ville
USER_ZipCode
Texte
La code postal
USER_Country
Texte
Le pays
USER_Address_D
Entier
L'audience de l'adresse



USER_Telephone
Texte
Le téléphone
USER_Telephone_D
Entier
L'audience du téléphone
USER_Mail
Texte
Le mail
USER_Mail_D
Entier
L'audience du mail
USER_Function
Texte
La profession
USER_Function_D
Entier
L'audience de la profession



USER_Session
Texte
Chaîne de caractères permettant de gérer la session de l'utilisateur
USER_DateSubscription
Date
La date de l'inscription
USER_Status
Entier
Le statut de l'utilsateur (0 : en attente d'inscription, 1 : inscrit, 2 : membre)

3. L'annuaire

Pour rechercher un utilisateur du site, on peut combiner plusieurs critères: nom, prénom, login, ville, code postal et pays. Sauf pour le code postal, on peut donner les premières lettres, par exemple il suffit de donner "pa" pour chercher des gens à Paris. Le formulaire est replit dans recherche.php, il est envoyé en suite à resultat.php qui combine les critèrs souhaités dans une requête SQL avec dans opération de ET (AND) logiques, les critères sont aussi filtrés suivant le degré de confidentialité de l'information recherchée.

Après l'interrogation de la base de données, un tableau est renvoyé avec Les login, nom, prénom, ville et pays des utilisateurs trouvés. Le login porte un lien vers la fiche de la personne en question.

Cette fiche est affichée par fiche.php . Encore une autre fois, on n'affiche que les données qui sont autorisées à être affichée.

4. Les annonces

Il existe sur notre site la possibilité pour un utilisateur qu'il soit public ou privé de poster des annonces. Suite aux besoins exprimés nous avons décidé de rendre les annonces accessibles à n'importe qui, il n'est donc pas nécessaire de s'authentifier pour pouvoir lire ou poster une annonce. C'est le webmaster qui sera chargé d'accepter ou non les annonces et de les rendre visibles aux utilisateurs.

Pour gérer les annonces, nous avons decidé de créer 3 tables MySQL indépendantes: la table annonces elle même et les tables types et categories. En effet, pour classer les annonces nous avons choisi une subdivision a deux niveaux. On choisit d'abord la catégorie (ex: Achat, Location, Concerts, Faire-Parts .. ). A chaque catégorie se voit attaché un ou plusieurs types, chaque type aura un identifiant unique et correspondra à une unique categorie.

Chaque annonce se voit affecter un type lors de l'enregistrement par l'utilisateur, il sera dans l'intérêt de l'utilisateur de mettre le type qui correspond le mieux à son annonce. Un type est prévu (le type autre) pour qu'un utilisateur y poste son annonce si aucun des types existants ne convient. Le webmaster sera alors chargé de créer le type et éventuellement la catégorie correspondant a l'annonce et d'y déplacer l'annonce.

Une annonce comporte plusieurs champs:

4.1 Interface utilisateur:

Un utilisateur pourra rechercher des annonces dans la base de données, poster de nouvelles annnonces et voir le détail d'une annonce sélectionnée au préalable.

L'ajout d'annonces est simple, l'utilisateur est d'abord convié à choisir une catégorie puis un type pour classer son annonce. Ensuite il entre ses données personnelles pour pouvoir etre contacté si quelqu'un est intéressé par son annonce. Enfin il n'a plus qu'à entrer la description et le texte de son annonce.

La recherche quand à elle se fait selon 3 critères principaux au choix sur les annonces validées:

Par défaut, toutes les annonces sont affichées. L'organisation des annonces lors de l'affichage des résultats de la recherche se fait d'abord par dates, puis par nom d'utilisateur. A coté de chaque annonce existe un lien view qui permet de voir le détail de l'annonce et éventuellement de contacter par email la personne qui a posté l'annonce.

4.2 Interface Administrateur:

Un administrateur pourra effectuer toutes les actions d'un utilisateur et bien plus encore, il pourra voir les annonces non validées et ajouter ou supprimer des types.

Pour la partie recherche d'annonces, l'interface est la même que pour l'utilisateur de base. Par contre lors de l'affichage des résultats, nous voyons quelques différences notables:

Cette approche a été adoptée pour permettre une administration simple et efficace des annonces, il est en effet possible de déplacer, supprimer et valider un grand nombre d'annonces en une seule opération. L'interface administrateur est de ce point de vue bien optimisee.

De plus l'administrateur peut créer des catégories et des types, comme il peut les supprimer a partir de la gestion des tables des annonces. Lors de la création d'un type, il faut spécifier la catégorie à laquelle le type est associé. Il n'est pas conseillé de laisser une catégorie vide de types.

Lors de la suppression d'un type ou d'une catégorie, la gestion des effets de bords sera automatique. Toutes les annonces correspondant à un type effacé seront effacées aussi. Toutes les annonces et tous les types correspondant a une categorie effacée seront effacés aussi.

Il faut donc bien faire attention lorsqu'on supprime une catégorie ou un type pour ne pas perdre toutes les annonces. Le plus simple est encore de déplacer les annonces au prealable dans un type temporaire.

5. Le forum

Le forum est une adaptation de PHORUM (http://www.phorum.org) au site de l'association. L'autentification dans PHORUM est remplacée par l'autentification du site.