Site Totem Pole

Ce site a été réalisé en local grâce à la plate-forme de développement Web EasyPHP (version 1.8).
EasyPHP regroupe un serveur Apache (version 1.3.33), une base de données MySQL (version 4.1.9), une interface graphique phpMyAdmin (version 2.6.1) pour la base de données et enfin le langage PHP (version 4.3.10).
J'ai donc en premier lieu analyser la façon dont allaient s'organiser la vente d'articles sur le site et la gestion des commandes afin de pouvoir concevoir la base de données sous MySQL qui s'organise de la façon suivante :


ORGANISATION DU SITE

Le site est divisée en balises appelées DIV de la façon suivante :

1 - Le menu permettant de naviguer sur le site
2 - Une arborescence permettant de faciliter la recherche d'articles
3 - Un cadre principal dans lequel s'afficheront toutes les pages du site.
4 - Un cadre comprenant des informations pratiques sur l'entreprise.
5 - Un rappel des droits d'auteur concernant le site et permettant de changer de skin.


L'ESPACE CLIENT

On utilise pour identifier le visiteur, le client connecté ou l'administrateur la variable $_SESSION qui permet d'accompagner l'internaute tout au long de sa présence sur le site.

VISITEUR
Il peut consulter les articles et services offerts par l'entreprise ou encore contacter cette dernière.
Le simple visiteur peut également gagner des points au quizz qui lui permettront de bénéficier de réductions, ajouter des articles a son panier, ou en retirer, mais il devra s'identifier pour finaliser sa commande.
Pour s'identifier, il devra auparavant s'être inscrit sur le site en communiquant ses coordonnées personnelles (nom, prénom, adresse, numéro de téléphone, e-mail, etc...).


CLIENT CONNECTE
Une fois connecté sur le site grâce à son login et son mot de passe, il pourra commander les articles qu'il aura ajouté à son panier.
La personne pourra à tout moment modifier son profil (nom, prénom, adresse, numéro de téléphone, e-mail, etc...).
Une fois sa commande passée, Le client en recevra une copie par mail qui sera également communiquée à l'administrateur.
En se connectant sur le site, le client aura la possibilité consulter l'évolution de ses commandes.
Il sera par la suite informé par mail lorsque sa commande sera prête en magasin.


ADMINISTRATEUR
Une fois connecté sur le site grâce à son login et son mot de passe administrateur, il aura accès à l'administration du site.
Il pourra également ajouter, modifier ou supprimer un administrateur, un article, une famille d'articles, un chapitre d'articles, un skin, une question au quizz ou encore une question à la F.A.Q.
L'administrateur a également accès à la gestion des commandes.



AJOUTER / MODIFIER / SUPPRIMER UN ARTICLE

Ces actions ne sont évidemment réservées qu'a l'administrateur.
Ce dernier peut intervenir sur l'ensemble des éléments de l'article (la référence, le nom, la photo, les caractéristiques, le prix, etc...) à l'aide d'un formulaire :
Afin de pouvoir gérer la mise en page de la désignation longue, à savoir faire ressortir certains éléments de l'article de différentes façons tels que l'italique ou encore l'utilisation de caractères en gras, j'ai du adapter un petit éditeur de texte à mon formulaire concernant l'administration des articles.


EFFECTUER UNE RECHERCHE

Etant donné la taille de la base de données, un système de recherche s'est vite avéré indispensable.
Le visiteur peut effectuer une recherche par mot-clé ou par chapitre.
Dans cet exemple, il s'agit d'une recherche par mot-clé.
Le site indique combien d'articles correspondent à cette recherche.
C'est à partir de cette page que le visiteur choisit ce qu'il voudra afficher en sélectionnant ou pas les chapitres et familles contenant les articles correspondants à cette recherche.
Cette partie nécessitait un affichage et une gestion des cases à cocher dynamiques pour une question de cohérence.
En effet, si le visiteur coche un chapitre, toutes les familles correspondantes à ce chapitre ce cochent automatiquement, et inversement, si on décoche une de ces familles, le chapitre se décoche.
Pour ce faire, l'utilisation du JavaScript m'a été très utile car il permet de gérer des évènements.
Je me suis également servit du JavaScript pour pouvoir développer le contenu d'une famille grâce au petit + .


CONSULTER UN ARTICLE

Le visiteur a accès a la désignation de l'article.
La difficulté a été de créer une fonction qui parcourt cette désignation longue et recherche si chaque mot apparait ou non dans la base de données.
Si c'est le cas, le mot devient un lien vers une recherche par chapitre ou par mot-clé.
L'article peut également disposer de documentations aux formats .pdf ou .doc consultable en lignes, tout comme un schéma.
L'autre difficulté de cette fiche détaillée a été la gestion des articles liés.
Le problème a été de pouvoir lié des articles a un autre article, sans que la réciproque soit forcement vrai.
Par exemple dans cette fiche article, ce kit est lié à un fer à souder, mais ce fer à souder ne peut pas stipuler dans sa fiche détaillé tous les articles pour lequel il est utile, car il est la liste compterait plus de 10 000 articles.


AJOUTER / RETIRER UN ARTICLE DU PANIER

Avant de finaliser sa commande le visiteur ou le client connecté remplit son panier d'articles en vente sur le site, en ayant la possibilité de choisir la quantité désirée pour chacun d'entre eux.
Pour conserver ces informations tout au long de la navigation de l'internaute, on utilisera à nouveau la variable $_SESSION.
On se servira de la variable $_SESSION sous la forme de tableau dans lequel seront enregistrées la référence et la quantité de chaque article ajouté au panier.
Tant que la personne est sur le site sont panier est conservé en mémoire.
Le panier se videra dans plusieurs situations :
- Si la personne quitte le site.
- Si la personne clique sur " VIDER MON PANIER ".
- Si la personne clique sur " COMMANDER " en étant déjà identifiée, la commande est enregistrée et le panier est vidé.


LES COMMANDES

Une fois la commande validée, elle est enregistrée dans la base de données en reprenant les éléments du panier et en y ajoutant les coordonnées de l'entreprise et du client, ainsi qu'un numéro de bon de commande et une date.
Elle pourra être consultée par le client afin de suivre son évolution et par l'administrateur qui pourra indiquer l'avancement de chaque article commandé, à savoir si l'article a été commandé auprès du fournisseur, si il est prêt en magasin, etc...
Lorsque l'état général de la commande est " en magasin ", l'administrateur peut le signaler automatiquement par mail au client.


AJOUTER / MODIFIER / SUPPRIMER UN SKIN

Lors de la création d'un skin, les informations comme les couleurs, la police de caractères utilisées son enregistrées dans la base de données, et les images composants le skin sont stocker dans un nouveau dossier portant le nom du skin.
Ce formulaire permet également au client connecté de proposer des skins que l'administrateur choisira d'activer ou non.


CHANGER DE SKIN

Lors de l'arrivée sur le site, le skin est choisit de façon aléatoire.
Au cours de la navigation, la possibilité est offerte au visiteur de changer de skin par le biais d'une liste donnant de petits aperçus des skins disponible.
Un skin peut être activé de façon publique ou privée.
Si le skin est activé de façon publique, tout les internautes auront accès a ce dernier.
Mais l'administrateur peut aussi activer un skin de façon privée, c'est à dire autoriser uniquement l'accès à son auteur qui se sera identifié au préalable.
Cette activation permet en quelque sorte de pouvoir vraiment personnaliser son accès au site, chaque personne pouvant presque voir le site de façon totalement personnelle.


LE JEU

Le jeu se présente sous la forme de quizz.
Pour ne pas que le visiteur se souvienne de l'ordre de question ou y réponde à nouveau pour obtenir plus de points, les questions apparaissent dans un ordre complètement aléatoire, en excluant les questions auxquelles la personne a déjà répondu, ainsi que les questions pour lesquelles le visiteur a enregistré son score lors de connexions précédentes.
Dans la continuité de l'idée des skins, un petit compagnon différent pour chaque skin peut suivre le visiteur tout au long de sa navigation, en le conseillant, en lui posant les questions du quizz, encore en lui rappelant les recherches effectuées.
Ce petit personnage apparaissant de façon très régulière, il a été transformé en fonction.