Vous êtes sur la page 1sur 38

Deboffles Jrme Shopmedia/Hibe

DUT informatique Matre de stage : Omar Lamrani


IUT A, Villeneuve dAscq Jrme Hennebert(Lille)
Montreal, Quebec Michel Pare(Montreal)

Rapport de stage :

Cration dun site de e-commerce,


ComicAge
2
Remerciements :

La ralisation de ce projet sest ralise grce la prsence de plusieurs personnes que jaimerai
remercier :

Je tiens tout dabord remerci mes deux tuteurs de stage savoir Michel Pare, professeur
dinformatique au Cegep de Saint-Jean-sur-Richelieu ainsi que Jrme Hennebert, professeur de
communication lIUT A de Lille 1 pour leur coute et leur disponibilit tout au long de ce stage.

Je remercie galement Omar Lamrani, mon matre de stage au sein de lentreprise pour
mavoir suivi et confi ce projet au cours de ces dix semaines de stage.

Pour mon dpart dans un pays tranger, je tiens remercier le bureau de relations
internationales notamment Valrie Buquet ainsi que Patrick Lebgue sans lesquels je naurais pas pu
faire mon stage au Qubec.

Enfin, au sein de lentreprise je remercie mes collgues de travail avec lesquels jai pu
apprendre de nouvelles choses en ralisant ce stage.

3
Rsum :

Pour finaliser ma formation en DUT informatique, par la dcouverte du monde professionnel, jai
effectu un stage de dix semaines chez Shopmedia/Hibe, une entreprise de dveloppement de site
internet situ Montral. Jai alors t accueillie au sein dune quipe de dveloppeurs o lon nous
a confi la ralisation dun site de e-commerce appel ComicAge . Ce dernier consiste vendre
en ligne des bandes dessines et au bout dun certain temps et par le bon vouloir de ladministrateur
dplacer directement les produits de la boutique sur ebay. Pour raliser cette mission jai d
dvelopper en PHP et utilis le javasript. Pour ce qui est de la base de donnes, nous avons utilis
mysql. Lobjectif principal tait de partir dune base dj faite, Zen-Cart , puis dadapter ce dernier
aux besoins du client.

Abstract :

To complete my training course in DUT computer sciences, by the discovery of the professional
world, I did a ten-week internship at Shopmedia / Hibe, a development company website located in
Montreal. I was then welcomed into a team of developers where we have been entrusted the
realization of an e-commerce site called "ComicAge. The latter is to sell online comics and after a
while and by the willingness of the administrator to move products directly from the shop on ebay.
To achieve this mission, I had to develop in PHP and used the JavaSript. Regarding the database, we
used mysql. The main objective was to start with a base already made, "Zen-Cart, and then adapt it
to customer needs.

4
Table des matires
Remerciements : ..................................................................................................................................... 3
Rsum : .................................................................................................................................................. 4
Abstract : ................................................................................................................................................. 4
Introduction............................................................................................................................................. 7
I Prsentation de lentreprise et du projet .............................................................................................. 8
1) Prsentation de Shopmedia/Hibe ............................................................................................... 8
1) Situation gographique ........................................................................................................... 8
2) Historique de Shopmdia et de Hibe ...................................................................................... 8
3) Rpartition des part de Shopmdia et de Hibe ....................................................................... 8
4) Activit de lentreprise ............................................................................................................ 8
5) Structure de lentreprise ......................................................................................................... 9
2) Prsentation et description du dpartement ............................................................................. 9
1) Organisation du dpartement des oprations ........................................................................ 9
2) Description des quipements .................................................................................................. 9
3) Liens administratif avec le dpartement ............................................................................... 10
Conclusion de la partie : .................................................................................................................... 10
II Les Missions ralises ......................................................................................................................... 11
1) Analyse et fonctionnement dune boutique de bande dessines............................................. 11
1) Similitudes et diffrences avec une boutique ordinaire ....................................................... 11
2) Etude de lexistant ................................................................................................................. 11
2) Prsentation gnrale et technique de zen-cart ................................................................. 12
1) Prsentation gnrale ........................................................................................................... 12
2) Les modules complmentaires.............................................................................................. 12
3) Ajouts et Modifications de fonctionnalits ............................................................................... 13
1) Gestion des tats des produits .............................................................................................. 13
2) Ajout dun produit ................................................................................................................. 14
3) Gestion des stocks et des quantits ...................................................................................... 16
4) Cration des artistes .............................................................................................................. 18
5) Ajout au panier de plusieurs produits avec tats .................................................................. 20
6) Gestions des promotions....................................................................................................... 21
4) Correction du calcul du prix entre promotion et attributs ....................................................... 22
5) Tests de la boutique et des fonctionnalits .............................................................................. 23
1) Rglement par Paypal............................................................................................................ 23

5
2) Le plug-in Canada-post .................................................................................................... 24
3) Le plug-in Ebay Exporter........................................................................................................ 24
4) Les autres tches et correction de bugs. ............................................................................... 25
5) Le script dimportation dans la base de donnes ................................................................. 25
Conclusion de la partie ...................................................................................................................... 26
III Bilan technique et humain ................................................................................................................ 27
1) Les apports techniques.............................................................................................................. 27
1) La base de donnes ............................................................................................................... 27
2) HTML et CSS .......................................................................................................................... 27
3) Le Php .................................................................................................................................... 27
4) Le JavaScript et lAjax ............................................................................................................ 27
2) Gestion et communication ........................................................................................................ 28
1) Les runions........................................................................................................................... 28
2) Le travail en quipe ............................................................................................................... 28
3) Les tests ................................................................................................................................. 29
4) Rdaction du manuel et suivit du projet ............................................................................... 29
Conclusion de la partie .................................................................................................................. 29
Conclusion ............................................................................................................................................. 30
Annexes ................................................................................................................................................. 31
Glossaire ................................................................................................................................................ 37
Rfrences ............................................................................................................................................. 38

6
Introduction

Etudiant lInstitut Universitaire de Technologie de Lille 1 en deuxime anne de DUT Informatique


de gestion, jai t amen effectuer un stage de dix semaines en entreprise du 6 avril 2010 au 11
juin 2010. Comme mon IUT me propos de partir faire mon stage ltranger, jai dcid de partir
faire ce dernier au Qubec pour dcouvrir un nouveau continent et aussi une nouvelle culture. Mon
stage seskjt donc droul chez Shopmedia dans le service dveloppement et assurance qualit .
Jai alors eu pour mission de dvelopper un site de commerce lectronique de bandes dessines.

Une question sest alors immdiatement pos :

- Devons nous dmarrer de zro ou alors utiliser une plateforme existante ?

Dautres questions sont aussi survenues par la suite:

- Comment grer les stocks de produits ?


- Comment identifier une bande dessine parmi les autres ?
- Comment grer les promotions dans la boutique ?

Nous avons eu une rponse trs vite la premire question, la dure de notre stage ne nous
permettait pas de partir de rien, nous sommes donc partit dune base existante avec zen-cart qui
est une solution Open-source de boutique en ligne qui est dvelopp en PHP et qui peut utiliser la
plupart des bases de donnes. Mais comme nous le verrons tout au long de ce rapport, les
fonctionnalits de base de zen-car sont trop globales pour tre adapt une boutique de bandes
dessines.

Dans un premier temps, je procderai une prsentation de Shopmedia, le service dans lequel jai
effectu mon stage et enfin une description du projet que jai eu raliser. Dans une seconde
partie, jexpliquerai le cahier des charges qui a t ralis avec lquipe dans laquelle jai travaill
suite lanalyse et aux divers rendez-vous et runions ralis avec le client et notre matre de stage.
Enfin, dans la troisime partie jeffectuerai un bilan technique et humain qui dcrira les diffrentes
comptences et savoir-faire que jai d acqurir au cours de mon stage ainsi que les ressemblances
et diffrences avec lenseignement que jai reu avec les enseignements de lIUT.

7
I Prsentation de lentreprise et du projet
1) Prsentation de Shopmedia/Hibe
1) Situation gographique

Shopmedia est une entreprise de dveloppement de site internet qui se situe au Qubec.
Lentreprise se trouve plus prcisment au 432 rue Sainte Hlne Montral. Ce quartier de
Montral est appel la cit du multimdia car cest ici que se situe la plupart des entreprises
dinformatique et daudiovisuelle.

2) Historique de Shopmdia et de Hibe

Shopmedia est une entreprise dinformatique qui dveloppe principalement une application
de rseau social appel Hibe mais galement des applications pour dautres socits telles que la
cration de site e-commerce et divers programme bas sur une architecture web pour les
entreprises. Depuis larriv du rseau social dans lentreprise, cette dernire vise plus sappel
Hibe car cest maintenant lactivit principale de lentreprise.

En 2007 Hibe se cre aux Etats-Unis avec un apport de trois millions de dollars
dinvestissement priv provenant du crateur du concept et directeur de lentreprise : Jean Dobey.

Cest en 2009 que Hibe sort sur le web mais il est alors en phase de test et de
dveloppement. Ce nest que vraiment en 2010 que ce dernier est disponible au public mais encore
une fois ce nest quune beta. A lheure actuelle, Hibe est en version 0.4.

3) Rpartition des part de Shopmdia et de Hibe

La rpartition de lentreprise entre les diffrents actionnaires est trs ingale. En effet, on peut
apercevoir que lactionnaire principal qui est le prsident et le fondateur de lentreprise, compte
lui seul, 70% des parts de lentreprise. Aux cts du prsident, les Co-fondateurs possdent 24% des
parts, et enfin les investisseurs initiaux 6% des parts. On voit donc que la rpartition de lentreprise
est vraiment ingale et surtout que le prsident de lentreprise possde plus de 50% des parts et,
ce niveau l, il peut prendre les plus grandes dcisions.

4) Activit de lentreprise

Shopmedia dveloppe Hibe, un rseau social en concurrence avec Facebook et Twitter. Ce


rseau social gre la gestion didentit dans les profils dutilisateurs et permet ses membres de
crer des identits qui peuvent tre la fois profondes, nuances et sres. Cest aussi le premier

8
rseau social permettant ses membres de choisir de partager la totalit ou seulement une partie de
leur identit, en fonction de la relation avec les autres membres. Cela est possible grce aux profils
multi-facettes qui permettent de recrer lenvironnement social rel. Les membres de ce rseau
social peuvent donc protger leurs images entre les diffrents groupes damis, professeurs, parents
ou patrons.

En parallle au dveloppement de Hibe, Shopmedia cr diffrents projets tels que le service


aux abonns, la cration et la mise jour de diffrents sites web portant sur le e-commerce ou
encore des outils pour entreprises.

5) Structure de lentreprise

Lentreprise compte actuellement trente employs diviss en quatre dpartements principaux


savoir :

- Le dpartement des Finances qui va soccuper des investissements et de rpartir le


budget de lentreprise.
- Le dpartement Marketing qui lui va soccuper de trouver de potentiels investisseur dans
Hibe, mais aussi trouver dautre contrats tel que la cration de site internet.
- Le dpartement Opration
- Le dpartement des ressources humaines.

2) Prsentation et description du dpartement

1) Organisation du dpartement des oprations

Le dpartement des oprations possde deux groupes distincts. Dune part, la Support
Team qui est centralise sur la partie relation client et dautre part, l Operation Team qui est
centr sur le dveloppement. Cette dernire est spcialise dans quatre domaines :

- Le management
- Lopration
- Larchitecture
- Ladministration

Lentreprise ma confi un poste de Web Integrator , appartenant au domaine de larchitecture.


Selon le contrat tabli avec la socit, joccupe galement le poste de Quality assurance
appartenant la partie Management. (Voir annexe 1)

2) Description des quipements

9
Shopmedia est une entreprise moderne. Elle possde de nombreux quipements rcents.
Parmi eux, deux salles pour les dveloppeurs avec dans chacune, des boxes avec des ordinateurs
rcents dont le systme dexploitation est Windows XP Professional. Lentreprise possde aussi deux
pices de confrence contenant deux crans plats relis un ordinateur. Chaque membre de la
socit a sa propre session et peut avoir accs son poste depuis nimporte quel PC. En revanche,
malgr la mobilit des sessions, chaque dveloppeur a son propre ordinateur sur lequel il travaille
tous les jours. De plus, il peut travailler avec les outils quil dsire si ceux-ci sont gratuits. Dans le cas
o ils seraient payants, il faut lautorisation de ladministrateur rseau.

3) Liens administratif avec le dpartement

Le lien administratif avec le dpartement se fait par lintermdiaire du directeur des


oprations, Omar Lamrani. Chaque dpartement est reli aux autres par un serveur install dans
lentreprise. Il ny a pas vraiment de procdure suivre si un employ de lentreprise veut parler avec
un autre employ de la socit. Il ne doit pas forcment passer par le directeur des oprations. Un
dveloppeur peut ainsi sadresser directement ladministrateur rseau sans passer par le directeur
de son secteur.

Conclusion de la partie :

Shopmedia est une entreprise moderne de son environnent de travail qui est un espace open
source que part ses quipement et son dynamisme. Cette socit travaille surtout sur son projet
principal qui est Hibe, un rseau social en concurrence avec facebook et Twitter, mais la socit
prend aussi des contrats pour crer dautre site comme des sites de e-commerce. Etant une
entreprise dinformatique, Shopmedia a t pour moi un lieu trs enrichissant quotidiennement.

10
II Les Missions ralises

Le projet que lon nous a confi tait la ralisation dun site de e-commerce en utilisant
comme base zen-cart qui est un CMS. Cest donc sur cette base que notre projet sest ralis et
nous avons par la suite, adapt cette base pour quelle puisse convenir pour une boutique de bande
dessines.

1) Analyse et fonctionnement dune boutique de bande dessines

1) Similitudes et diffrences avec une boutique ordinaire

Les similitudes dune boutique de bandes dessines et dune boutique ordinaire sont que
chaque produit un prix, une description de lui. Une boutique ordinaire peut avoir aussi une gestion
des stocks, gestion des taxes, des clients et des commandes.

Les diffrences sont quant elles assez prononces :

- Un produit possde un issue qui est un volume dun titre


- Un produit possde des artistes
- Une bande dessine possde des attributs tels que
o Cover Date
o Cover price

Tous ces changements font que lon ne peut pas utiliser zen-cart dans sa version
dorigine. Des modifications doivent tre faites mais pour cela nous devons tudier lexistant

2) Etude de lexistant

Nous allons prsenter ici brivement ce que zen-cart permet de raliser, nous verrons
dans un point suivant les aspects plus techniques de cette plateforme.

Zen-cart est une plateforme de boutique de vente en ligne trs complte et qui possde
tous les outils ncessaires pour vendre facilement sur internet. Elle possde une trs grosse base de
donnes lorigine compose de 95 tables. Son MLD est trs complet mais avec toutes ces tables, il
est dur au dbut de sy retrouver. (Voir Annexe 1)

Cette plateforme est trs complte, car nous pouvons par ladministration :

- Configurer la boutique : Changer le nom de la boutique, configurer lenvoi de mails,


rgler les modes de paiement, etc.
- Grer le catalogue : Ajouter des produits, des catgories, des sous-catgories etc.

11
- Grer les commandes : Rgler les modes de livraison, les rductions pour les grosses
commandes etc.
- Grer les clients : Supprimer un client, traiter les commandes, etc.
- Voir les statistiques de la boutique : Observer les produits les plus vus, les plus vendus,
les meilleurs clients, etc.
- Grer les prix : Appliquer des promotions, grer les taxes, etc.

Du point de vue du client, ce dernier peut grer son compte notamment si ce dernier
plusieurs adresses, une adresse de facturation spcifique etc.

2) Prsentation gnrale et technique de zen-cart

1) Prsentation gnrale

Zen-cart est une solution Open Source pour crer une boutique en ligne, qui est lorigine issu du
dveloppement dOScommerce mais, qui a t par la suite la plus adapt que ce dernier sur les
fonctions de e-commerce et de scurit. Cette solution est entirement paramtrable et peut tre
install en plusieurs langues. A lorigine, elle intgre la gestion des stocks, mme si celle-ci nest pas
trs volue au dpart, la fonction mail, la gestion des catalogues, des modules de payement dont
Paypal, la gestion des taxes, la gestion des clients. Il est aussi possible dintgrer un forum phpBB
lintrieur du site.

2) Les modules complmentaires

Zen-cart est un CMS auquel on peut ajouter des modules complmentaires trs utiles comme par
exemple pour changer laffichage des images dans la boutique ou encore pour pouvoir grer les
stocks diffremment. Parmi tous ces modules, nous avons d en installer certains :

- Simple SEO URL : ce module sert gnrer des URL propre dans le navigateur du client.
De plus, ce module est aussi trs utile pour les moteurs de recherche, pour que le site
puisse avoir un bon rfrencement de ses produits et donc avoir beaucoup plus de visite.

- LigthBox Gallery : ce module quant lui sert avoir une meilleure galerie dimage pour
les produits de la boutique avec un effet sympathique. Il utilise principalement du
JavaScript.

12
Capture cran LightBox Gallery.

3) Ajouts et Modifications de fonctionnalits

Comme il a t dit plus haut dans le rapport, certaines fonctionnalits de la solution Open
source ne correspondaient pas ou bien tait trop gnral pour notre boutique. Cest pour cela que
quelques modifications ont t apportes et dans le cas o les modifications taient trop
consquentes ou inadaptables, on a alors dcid de refaire compltement la fonctionnalit.

1) Gestion des tats des produits

Un tat est une condition du produit, c'est--dire si le produit est en bon tat ou si au contraire il ne
lest pas. Le meilleur conditionnement prend le prix de dpart du produit. En revanche, les autres
tats prennent un pourcentage sur le prix de base (par exemple quand le produit sera dans un
mauvais tat, ce dernier prendra seulement 20% du prix de base).

La premire modification a t ralise pour que ladministrateur du site puisse ajouter des tats
facilement et non pas ajouter un tat par un tat et pour chaque produit mais, au contraire ajouter
un tat par le biais dun formulaire. Une fois que le nom de ltat et que sa valeur a t remplie, ce
dernier sajoute alors pour tous les produits prsents dans la base de donnes. Pour pouvoir raliser
cette fonction, on a dabord tudi comment les attributs des produits taient grs par zen-cart ,
puis on a par la suite adapte ce que lon voulait faire. Les tats sont donc grs comme des attributs
pour le produit. En revanche, lajout de ce dernier est bien plus rapide que les autres attributs, car les
requtes ne sappliquent pas sur un seul produit la fois comme ctait le cas dans le zen-cart
dorigine mais bien sur lensemble des bandes dessines.

Nous devons faire aussi attention la mthode dinsertion de ces attributs spciaux, car ces derniers
sont utiliss dans plusieurs fichiers du site notamment celui de la gestion des stocks.

13
Ajout et suppression dun tat.

2) Ajout dun produit

Le fichier pour ajouter un produit a aussi tait modifi, car il ne rpondait plus aux exigences du
client. En effet une bande dessine comporte beaucoup plus dinformations quun simple produit de
base. Cette dernire comporte un issue , plusieurs artistes, un cover date etc Ce fichier est
compliqu modifier car non seulement cest dans celui que lon rentre les informations pour
ajouter un produit la boutique, mais cest aussi dans ce fichier que lon rentre pour modifier un
produit et donc les valeurs par dfauts doivent apparaitre pour ladministrateur.

Pour pouvoir mettre de nouvelles informations rentrer, on ne peut pas mettre de simples
formulaires comme dans des pages web classiques car elles ne seront pas pries en compte dans
linsertion. Pour remdier ce problme nous avons d tudier les fonctions de zen-cart pour
pouvoir comprendre comment ces dernires fonctionnent.

zen_draw_input_field('products_issue', $pInfo->issue,
'onKeyUp="updateGross()"')

14
Fonction de zen-cart pour afficher une zone de saisi.

Pour pouvoir faire linsertion dans la base de donnes on a ensuite une deuxime page. Dans cette
page les informations sont rentres de deux manires, pour la table products ont un tableau sql
et pour les autres tables on a des insertions basiques. Comme nous avons modifi la table
products , il fallait faire trs attention ce que lon rentrait dans cette table pour ne pas se
tromper de colonne ce qui peut avoir des consquences dramatiques dans notre cas, car cest un site
de vente en ligne.

$sql_data_array = array('products_type' =>


zen_db_prepare_input($_GET['product_type']),
'products_model' =>
zen_db_prepare_input($_POST['products_model']),
'products_price' => $products_price,

Tableau sql pour linsertion dans la table product.

Aprs linsertion du produit, on gnre alors les attributs du produit pour que lutilisateur puisse
ensuite rentrer les quantits dans une autre page prvue cet effet. Pour effectuer linsertion sur les
diffrents tats, nous avons cr une table avec les tats des produits par dfaut.

Petit point sur les requtes :

Pour pouvoir excuter des requtes, nous devons passer par une variable de zen-cart .

$req = $db->Execute($Requette);

Nous pouvons ensuite rcuprer les rsultats de la manire suivante :

$req->fields[colonne];

Sil y a plusieurs lignes dans notre requte nous pouvons alors faire une boucle While :

While( !$req->EOF)

{
Echo $req->fields[colonne] ;
}

15
Nous devons notamment utiliser cette manire de faire pour rcuprer les informations au cas o
lutilisateur voudrait changer les informations du produit par la suite, en effet il faut que les
informations prcdemment ajoutes soit visible lors de ldition du produit pour que
ladministrateur de la boutique puisse changer que ce qui ne va pas dans la description du produit.

3) Gestion des stocks et des quantits

Ce point a t lun des plus importants de notre projet, car cest le plus gros point que lon a d
grer. En effet les quantits de produit se font en fonction de la bande dessines mais aussi en
fonction de son tat. Pour ce faire nous avons d installer un module zen-cart qui sappelle
products with attributes stock . Malheureusement, ce module ne correspondait pas tout fait
ce quattendait le client et nous avons donc dt refaire une page complte, car les exigences du
client sloignait de trop de ce que propos ce module.

Nous sommes donc partis de cette base que nous avons bien tudie avant de nous lancer dans la
programmation.

A lorigine, pour modifier les quantits de produit dans zen-cart , il fallait rentrer la fiche de
chaque produit pour modifier cette valeur, cela prenait donc beaucoup de temps pour modifier
toutes les valeurs, on a donc d faire en sorte que la gestion des stocks se fasse rapidement.

Pour complter cette page, nous avons donc fait un tableau avec comme colonne le nom des tats et
en ligne lissue des produits, de plus une pagination a t faite pour limiter le nombre de bande
dessines affiches par page. De cette manire, une insertion de la quantit peut tre faite et faire
gagner beaucoup de temps. Le temps est une priorit pour notre client car ce dernier sous-traite
certaines tches, donc plus linsertion de la quantit pour un produit est rapide, moins le client
payera pour rentrer ces informations. De plus, pour chaque produit, nous devons rcuprer lissue du
produit et la quantit pour renseigner lutilisateur des stocks actuels.

Tableau de gestion des quantits

16
Code des requtes effectuer pour crer le tableau :

//Requette pour letat

$query_state = 'SELECT products_options_values_name FROM


products_options_values
WHERE language_id ='.$_SESSION['languages_id'].
' ORDER BY products_options_values_sort_order ASC';
$result_state = $db->Execute($query_state);

//Requette pour lissue

$query_issue = 'SELECT pd.products_id, pd.products_name FROM


products_description pd
WHERE pd.language_id ='.$_SESSION['languages_id'];

//Requette pour limage

$query_image = 'SELECT products_image FROM products


WHERE products_id = '.$result_issue-
>fields['products_id'];
$result_image = $db->Execute($query_image);

$query_qty = 'SELECT SUM(PWAS.quantity) AS "qty", PA.products_id,


POV.products_options_values_name, POV.products_options_values_id,
POV.products_options_values_sort_order
FROM products_with_attributes_stock PWAS JOIN
products_attributes PA on PWAS.stock_attributes =
PA.products_attributes_id JOIN products_options_values POV ON
PA.options_values_id = POV.products_options_values_id
WHERE PWAS.products_id ='.$result_issue-
>fields['products_id'].' and POV.language_id
='.$_SESSION['languages_id'].' GROUP BY PWAS.stock_attributes
ORDER BY POV.products_options_values_sort_order ASC';

Requte pour la quantit de produit dans le tableau dajout rapide.

Une fois les informations sur cette page complte, lutilisateur est alors redirig vers une autre page
o il peut voir toutes les quantits quil vient de rentrer et sil sest tromp il peut mme diter ces
derniers. Un SKU, qui est un numro de stock est alors automatiquement gnr pour chaque
quantit rentre, ce qui permet de bien grer les produits. Ce SKU est gnr par un code car ce
nest pas seulement une incrmentation de chiffre. Cest en effet une incrmentation de chiffres et
de lettres.

17
Explication gnration SKU :

Si le SKU_CHIFFRE < 99999 ALORS


SKU_CHIFFRE ++ ;
SINON
SKU_LETTRRE ++ ;

Pour incrmenter SKU_LETTRE, on passe cette valeur la lettre qui le suit dans lalphabet, si ce dernier
est arriv Z, alors le SKU_CHIFFRE prend deux lettres etc

De plus, ladministrateur possde aussi un calendrier pour voir les quantits rentres soit
pendant le mois, soit durant une journe pralablement slectionn. Il peut ainsi modifier la quantit
quil a ajoute une date prcise sil sest tromp.

Sku et calendrier.

4) Cration des artistes

Les artistes ne sont pas pris en compte dorigine dans zen-cart et il ny a pas non plus de plug-
in ajouter pour que cette fonction soit inne dans le site, cest pour cela que nous avons d nous
mme rajouts cette fonctionnalit. Une bande dessines peut avoir jusqu huit artistes diffrents,
et un artiste peut se retrouver dans plusieurs bandes dessines, cest pour cela que nous avons

18
rajout deux tables supplmentaires dans la base de donnes. La premire avec lid de lartiste et son
nom, la deuxime avec son id, id du produit et son rle.

Voici un MCD reprsentant la faon dont est gre les artistes et leurs rles par rapport aux
produits :

1,n 1,n
Produit Artiste
Est associ
___________
Id_Produit Nom_Rle Id_Artiste
Nom_Produit Nom_Artiste

Un artiste na pas un rle fixe, do lutilit de lassociation porteuse.

Pour pouvoir rajouter un artiste un produit, lutilisateur rentre dans la mme page
dinsertion / dition dun produit et peut donc rentrer le nom de ce dernier dans la case
correspondant son rle.

if($bool){
$infoart = '';
if($products_art->fields['lib_role']==3){$infoart =
$products_art->fields['artist_name'];}
if(!$products_art->EOF)
$products_art->MoveNext();

}
?>

<td class="main"><?php echo TEXT_PRODUCTS_COLORIST; ?></td>


<td class="main"><?php echo zen_draw_separator('pixel_trans.gif',
'24', '15') . '&nbsp;' . zen_draw_input_field('products_artist3',
($infoart), 'onKeyUp="updateGross()"'); ?></td>
</tr>

Zone de saisie permettant de rentrer un artiste

La premire partie du code sert lors de la modification dun produit dj existant et dafficher
lartiste qui a t rentr lors de lajout du produit.

Une fois les artistes rentrs dans la base de donnes, il faut que le visiteur du site puisse les
voir quand il regarde la fiche du produit, pour cela nous avons d modifier la page daffichage des

19
informations du produit : tpl_product_info_display.php. Pour cette page, nous rcuprons juste les
artistes grce lid du produit.

$query_artist = "SELECT artist_name, lib_role FROM artist, artist_role


WHERE artist_id = id_artist AND id_product = ".$_GET['products_id'];

$result_artist = $db->Execute($query_artist);

Requte pour rcuprer les artistes dun produit.

La partie la plus difficile dans la gestion des artistes a t lors de la modification de ceux-ci.
En effet pour les modifier il faut dabord vrifier sils existent, puis sil nexiste pas il faut les crer
dans la base de donnes.

5) Ajout au panier de plusieurs produits avec tats

Dorigine, quand on effectue une recherche, on se retrouve avec une liste de produits que
lon peut ajouter au panier. Malheureusement, dans notre cas, tous les produits ont des attributs :
les tats. Le problme qui sest prsent est que nous ne pouvons pas choisir dattribut pour un
produit dans cette page, et si nous ajoutons un produit au panier, nous avons donc un problme car
lobjet est sans tats et donc le prix est fauss mais aussi la quantit par attribut. Pour cela nous
avons donc dt modifier principalement trois fichiers :

- Product_listing.php qui est le fichier qui affiche les produits dans la page.
- Main_cart_action.php qui est le fichier de fonction qui permet lajout au panier.
- Shopping_cart.php qui est le panier.

Nous avons donc dt dabord bien tudier ces fichiers pour pouvoir ensuite les modifier. Aprs cette
phase danalyse, nous avons tout dabord affich les tats disponibles avec le prix et la quantit
restante. Pour le calcul du prix, ce fut un peu plus compliqu car il fallait prendre en compte sil y
avait une promotion ou non. Pour pouvoir ajouter le produit slectionn avec son tat, il nous a fallu
changer certaines fonctions de zen-cart pour pouvoir faire lajout au panier avec les attributs. Les
diffrentes requtes SQL faites pour rcuprer les informations sont faites partir de plusieurs tables
donc il faut tre trs vigilent dans ce que lon fait. Une fois les requtes sont effectues, on peut
afficher dans une liste de slection.

$chaine.= '<option value="'


.$req1->fields['products_options_values_id'] .'">'
. $req1->fields['pname']. ' (' .$prix . '$)'. QUANTITY
. $qua->fields['qua'] .'</option>';

Affichage des tats disponible dans une liste de slection

Une fois les tats affichs, il fallait que le visiteur puisse ajouter au panier ce quil avait choisi,
pour cela nous avons modifi la fonction actionMultipleAddProduct , pour que cette dernire

20
puisse prendre en compte ces derniers. Les fonctions de zen-cart sont trs difficiles modifier car
il faut vraiment faire attention que dans tous les autres cas o la fonction est appele, quelle revoit
le rsultat voulu.

Ajout de plusieurs produits au panier avec slection des tats.

6) Gestions des promotions

La gestion des promotions ont t lun des points de notre projet les plus longs mettre en
place. En effet, notre client naimait pas la gestion des promotions telles quelle ltait par dfaut.
Nous avons donc dt refaire la page nanmoins, nous navons pas chang la faon dont celle-ci tait
faite, c'est--dire que nous navons pas rajout de table la base de donnes, nanmoins nous avons
chang la table salemaker pour pouvoir y loger les artistes, era et autres attributs propre au
produit, car au dpart, la promotion ne se faisait que sur les catgories, on ne pouvait pas faire de
promotion sur un attribut du produit comme era , sa maison ddition ou encore les artistes.

Le principe de la promotion en lui-mme est assez simple, lutilisateur choisit lobjet sur
lequel il veut faire la promotion, il slectionne ensuite la date de dbut puis la date de fin et enfin un
pourcentage. Il peut choisir aussi de faire une promotion sur toutes les catgories ou bien de choisir
prcisment la catgorie, lartiste, lera ou encore la maison ddition. Une fois quil a fini, il ne lui
reste plus qu valider ses choix.

Information :
Pour choisir des attributs plus prcis lors de la prcision, la recherche a t faite en AJAX, c'est--dire
que lon nest pas oblig de recharger la page chaque recherche effectu.

21
Pour le nouveau calcul du prix, le produit met jour son prix automatiquement et affiche au
visiteur quune promotion est actuellement en cours sur lui. Malheureusement, une erreur
rpertorie sur le site de zen-cart France, nous a obligs nous concentrer davantage sur ce
calcul de prix pour rsoudre ce problme.

Ajout dune promotion.

4) Correction du calcul du prix entre promotion et attributs

Cest lun des plus gros problmes que nous avons eu rsoudre sur notre projet, pire encore, si ce
problme navait pas t rsolut, cest lensemble de notre projet qui scroulait. En effet comme
expliqu plus haut, nous avons un prix de dpart qui est le prix de ltat qui est le meilleur. Tous les
autres attributs ont un pourcentage sur ce prix. Mais lors de lajout de promotion sur les produits
ayant un prix qui se calcul avec lattribut, le prix final est mal calcul.

Pour rsoudre ce problme, nous avons d modifier des fichiers de zen-cart , savoir le
fichier o se trouve toutes les fonctions de calcul de prix, le fichier du panier.

La principale fonction que nous avons change est la fonction


zen_get_products_special_price qui dorigine se prsentait comme ceci :

function zen_get_products_special_price($product_id,
$specials_price_only=false)

Pour bien faire attention ce que le rsultat ne change pas lors de lappel de la fonction par
dautres fichiers, nous avons rajout deux attributs supplmentaires.

22
function zen_get_products_special_price($product_id,
$specials_price_only=false, $appel=0, $att=0)

Le premier attribut pour savoir si cest un appel la fonction fait par notre modification et le
deuxime pour savoir lattribut du produit et calculer justement la promotion en fonction de cet
attribut. Nous procdons ensuite au calcul du prix en fonction du prix de lattribut et non pas par le
prix gnral du produit qui correspond lattribut qui possde le meilleur tat.

Dans le fichier du panier, nous avons d rcuprer lattribut du produit par diverses requtes
dans la base de donnes pour ensuite passer lid de lattribut notre fonction.

Nous avons finalement russit par avoir le bon prix, mais comme dit prcdemment, sans la
rsolution de ce problme notre projet tait en pril, donc cest lun de nos plus gros dfit que nous
avons ralis lors de notre projet.

Prise en compte de la promotion sur les tats.

5) Tests de la boutique et des fonctionnalits

1) Rglement par Paypal

23
Pour tester si notre boutique fonctionne bien et pour rpondre aux exigences du client,
nous avons d simuler une commande et crer un compte de test sur Paypal pour pouvoir tester la
finalit de la commande. Nous avons aussi dt modifier la configuration de la boutique pour envoyer
la commande passe sur le compte test de Paypal et pour rediriger vers le site une fois la commande
effectue. Nous devions surtout regarder le prix final de chaque objet pour vrifier si le prix avec
promotion et attribut tait le bon.

Information sur le compte de test de Paypal:

Ce compte de test est en fait une plateforme fictive qui permet de faire des payements sans
pour autant dposer de largent sur son compte. Ce systme est trs bien fait et il permet de plus de
bien vrifier le prix avec les diffrents plug-ins comme celui de canada post qui est fait pour calculer
le prix pour envoyer le produit.

2) Le plug-in Canada-post

Pour pendre en compte le prix pour envoyer le produit au client, nous avons d installer le
plug-in Canada Post . Mais nous avons d faire trs attention lors de lajout de ce dernier, car il
modifiait certaines pages que nous avions pralablement chang comme la page dinsertion du
produit. Ce module modifie lui aussi la base de donnes pour rentrer des informations sur les
produits comme sa taille, sa longueur, sa hauteur et enfin son poids. Si la commande dpasse 50$,
lenvoi en coli standard est gratuit. Mais pour faire fonctionner ce plug-in correctement, nous avons
d appeler Canada post pour ouvrir un compte cyber vente et activer les calculs, car dorigine le
compte de base ne permettait pas ces fonctionnalits.

Choix denvoi de Canada Post.

3) Le plug-in Ebay Exporter

24
Ce plug-in sert exporter directement les produits sur ebay par lintermdiaire dun fichier
csv. On rcupre ensuite ce fichier par une application qui a t dveloppe par ebay qui est : Ebay
Turbo Lister . Ce programme ouvre alors le ficher csv et permet de mettre en vente sur le site de
vente aux enchres rapidement avec toutes les informations ncessaires.

Ebay exporter.

4) Les autres tches et correction de bugs.

Tout au long du projet nous avons eu des autres tches et des corrections faire sur le site mais ces
dernires ne prenaient pas beaucoup de temps par rapport aux autres tches qui sont prsentes
dans ce rapport. Notre phase de test la fin de notre projet nous a vraiment permis de remonter
quelques erreurs que nous avons pu corriger immdiatement aprs les avoirs remarques. Mais une
fois les problmes corrigs, nous devons refaire tous les tests en rapport avec le changement pour
vraiment voir si nous avons corrig le problme ou si cela fonctionne que dans un cas particulier.

5) Le script dimportation dans la base de donnes

Pour remplir notre boutique nous avons d crer un script dimportation. Nous devions
importer dans notre base de donnes plus de 450 000 produits. Nous avions deux tableaux excel que
nous avons regroup en un seul. Mais mysql ne prenait pas toutes ces insertions dans la base de
donnes car il y a normment de ligne insrer si on prend en compte tout ce qui tourne autour du
produit :

- Issue
- Les artistes
- Les attributs
- Les descriptions du produit
- Les catgories
- Lera
- Les maisons dditions

Au final nous avons d diviser le fichier en 91 fichiers pour que mysql puisse grer toutes les
insertions dans la base de donnes.

25
Ce script tait trs difficile raliser et optimiser. Dune part les images pour les produits
taient trs difficiles raliser car il fallait aller chercher le lien de cette image et bien vrifier son
existence. Pour loptimiser au maximum, les requtes ont t revues pour faire le moins possible de
SELECT et donc acclrer le script. De plus nous avons aussi fait des index pour loptimisation et la
rapidit, nous sommes ainsi arrivs une baisse de 75% de temps en moins.

Conclusion de la partie

Pendant mon stage, jai fait attention au fichier que je modifiais car quand une erreur
survient, il faut tre capable de revenir en arrire, cest pour cela quune sauvegarde des fichiers
modifi est toujours faite avant la modification de ceux-ci. De plus jai toujours essay doptimiser
mon code et surtout les requtes faites avec la base de donnes.

26
III Bilan technique et humain

Jespre avoir apport lentreprise qui a eu la gnrosit de maccueillir autant que jai moi-
mme appris en travaillant pour elle. Ce stage a t pour moi une source denrichissement du point
de vue professionnel mais aussi en termes de savoir-tre.

1) Les apports techniques

1) La base de donnes

Travailler sur une grande base de donnes est dur car il faut faire attention aux jointures que
lon effectue. De plus, plus une requte est longue et plus on risque de faire des erreurs sur celle-ci.
Finalement, travailler sur une grande base de donnes avec beaucoup de lignes ma permis de me
perfectionner dans les requtes que jai pu faire. De plus lors de limportation des produits dans la
base de donnes jai d faire attention ce que je faisais pour optimiser au maximum mes requtes.
Nous avons travaill sur une base de donnes mysql, mais zen-cart permet une installation ou
une migration sur nimporte quelle base de donnes telle quOracle et cest pour cela que nous
devions respecter la norme SQL au maximum sur nos requtes.

2) HTML et CSS

Nous avions trs peu utilis le html et le CSS lIUT et jai donc d mapprendre la syntaxe de
ces derniers en autodidacte au dbut du stage. Javais tout de mme quelques notions et finalement
ces deux langages vont relativement vite apprendre. Le plus compliqu a t de se retrouver dans
les fichiers de zen-cart .

3) Le Php

Je navais jamais travaill avec le langage php, mais avec lexprience du J2EE lors de ma
formation lIUT, ce langage mest apparu simple maitriser. De plus le php, contrairement au
langage J2EE peut tre directement plac dans les balises HTML et permet donc de gagner du temps.
En revanche, quand on ne connait pas le php et que lon tudie zen-cart , on est vite perdu car il y
a une multitude de fichiers. Ce stage ma au final permis de connatre un nouveau langage de
programmation qui sexcute du cot serveur. Je pense que ce langage est trs facile utiliser de
part sa syntaxe mais aussi par les possibilits quil offre au niveau de la base de donnes.

4) Le JavaScript et lAjax

27
Le JavaScript, contrairement au php est un langage qui sexcute du cot du client, cest un
langage qui est inspir du Java. Ce dernier est utilis en gnral pour obtenir une page web
dynamique car il permet de ragir avec le code HTML. Nous avons utilis le JavaScript dans la page
dajout de quantit pour vrifier que lutilisateur rentr bien des chiffres et pas dautres caractres.

LAjax, quant lui nest pas un langage de programmation ni une technologie. Il signifie
Asynchronous JavaScript ans XML* et prend en compte le php, le JavaScript le CSS et le HTML. Lajax
est trs utile si on veut rcuprer des informations venant de la base de donnes sans pour autant
recharger la page.

function afficheRes(callback, choix)


{
var xhr = getXMLHttpRequest();
getXMLHttpRequest()
var rech = document.getElementById("recherche").value;
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0))
{
callback(xhr.responseText);
}
}
xhr.open("GET", "recherche.php?rech="+rech+"&choix="+choix, true);
xhr.send(null);
}

Cette fonction va envoyer la variable choix au fichier recherche.php et ce fichier fait une
recherche dans la base de donnes pour afficher le rsultat de la recherche. Ce fichier va ensuite
retourner une variable une autre fonction.

2) Gestion et communication

1) Les runions

Nous avons eu souvent des runions lors de notre stage et cela surtout au dbut pour nous
briefer sur la manire de grer une boutique en ligne et plus prcisment sur la gestion des bandes
dessines. Lors de ces runions, on nous a expliqu la gestion des stocks, et comment insrer une
bande dessine dans notre boutique. Au dpart nous avions des runions avec le directeur de
shopmedia, puis nous avons eu ensuite des runions et des dmonstrations avec le vrai client. Nous
avons donc d faire trs attention notre langage et ne pas parler trop techniquement.

2) Le travail en quipe

28
Pour ce projet jai travaill avec deux collgues stagiaires sur la boutique et nous nous
sommes rparti les tches suivantes ce que chacun prfr faire. Si lun de nous avait un problme
alors il demandait de laide aux deux autres de manire ne pas perdre de temps lors du
dveloppement de la boutique. Nous avons d aussi faire attention au commentaire laiss dans le
code au cas o lun de nous reprenne le code pour le modifier. De plus au dbut de chaque semaine
nous avions une runion dquipe pour mettre au clair ce qui avait t fait durant la semaine et pour
se distribuer les tches de la semaine. (Voir diagramme de Gantt annexe 3)

Mais, chacun de nous tait indpendant et on prenait des initiatives. Nous ne devions pas
compter que sur laide de nos collgues et nous dbrouiller par nous mme.

3) Les tests

Le dveloppement dun projet comme celui-ci parait inconcevable sans la ralisation de tests.
Le dveloppement de chaque fonctionnalit tait suivi dune phase de test par un membre de
lquipe qui navait pas ralis cette dernire. Ces tests sont trs importants et permettent de
corriger rapidement les erreurs faites. Lorsquune erreur est releve puis corrige on procde alors
toute la batterie de tests pour vrifier si la correction na pas ajoute une erreur quelque part
ailleurs. Nous avions, pour raliser ces tests des fiches que nous avions pralablement faites. (Voir
annexe 4).

4) Rdaction du manuel et suivit du projet

Tout au long du projet, nous avons rdig le manuel de suivi des modifications que nous
avons effectues pour savoir quels fichiers nous avions modifi mais aussi pour les futurs
dveloppeurs qui vont reprendre le projet derrire nous (Voir annexe 5). Nous avons aussi rdig le
manuel pour faciliter la prise en main de la plateforme notre client. (Voir annexe 6)

Conclusion de la partie
Les dix semaines de stage que jai effectues ont t pour moi trs enrichissantes du point de vue
technique mais aussi du point de vue humain. Jai aim dans cette entreprise lambiance au
quotidien et la bonne humeur. Jai aussi apprci les relations entre les employs o le niveau
hirarchique ne paraissait pas.

29
Conclusion

Ce stage a t pour moi une dcouverte du milieu professionnel, de plus tant dans un pays
tranger jai pu dcouvrir en mme temps que de raliser mon stage une autre culture, cest pour
cela que ce stage a t pour moi une exprience trs riche du ct technique mais il ma
normment appris sur le ct relationnel. Ce qui ma plu aussi cest le contact avec le client qui va
tre le futur utilisateur du site et donc comprendre ses besoins pour lui programmer une boutique
qui lui fera gagner du temps tout au long de son utilisation. Pour finir, ce stage a t pour moi une
faon de murir et de regarder le milieu professionnel dun autre regard.

30
Annexes

Annexe 1 : Diagramme hirarchique de Shopmdia.

31
Annexe 2 : MLD de Zen-Cart

32
Annexe 3 : Diagramme de Gantt.

33
Annexe 4 : Feuille de Test

PROCESSUS DACHAT
Feuille de Tests

CALCUL DU PRIX
Nom Description Validation
Promo1 Promotion sur tout le catalogue
Promo2 Promotion sur un manufacturer
Promo3 Promotion sur un artiste
Promo4 Promotion sur une era
Promo1+3 Promotion sur tout le catalogue +
Promotion sur un artiste
Promo1+2 Promotion sur tout le catalogue +
Promotion sur un manufacturer
Promo1+4 Promotion sur tout le catalogue +
Promotion sur une era

Vrification que le prix en fonction de ltat choisis est bien calcul.


Vrification que les produits affects sont cens ltre.
Vrification du prix affich, dans le panier, envoy Paypal et dans la confirmation de commande.
Vrification de la promotion choisis sil y en a plusieurs.

34
Annexe 5 : Exemple de fichier de suivi

Raison t Explication Page(s) Date v


Gestion de M Possibilit de faire une admin/salemaker.php 18/05/1 1
promotion promotion en choisissant 0
la caractristique.
Calcul du M Suite de la gestion de Includes/function/function_price.php 18/05/1 1
prix promotion. Choix de la 0
promotion la plus
avantageuse.
Choix du A Lecture des SKU et choix includes\templates\OUR_TEMP\templates\ 13/05/1 1
SKU du plus petit. tpl_checkout_success_default.php 0
envoyer
Affichage A Affichage des SKU admin/packingslip.php 05/05/1 1
des SKU correspondant la 0
dans la commande
facture
Gestion A Ajout de la notion admin/artist.php 05/05/1 1
dartiste dartiste copi sur la admin\includes\modules\product\collect_info. 0
notion de manufacturer php
admin\includes\modules\update_product.php
includes/templates/OUR_TEMP/tpl_product_in
fo_display.php
Modificatio M Voir plugin 1
n de la
recherche
Gestion M Pouvoir diter la quantit Admin/products_with_attributes_stock.php 19/05/1 1
quantit des produits 0
products_w
hith_attrib
utes_stock
Ajout du M Ajouter aux produits un admin/includes/stylesheet.css 01/05/1 1
module de attribut tat admin/orders.php 0
products_w includes/classes/order.php
ith_attribut includes/functions/functions_lookups.php
es_stock includes/modules/pages/checkout_shipping/he
ader_php.php
includes/modules/pages/shopping_cart/header
_php
Epuration M Enlever les champs date Includes/templates/template_default/template 11/05/1 1
de la page de naissance et tlphone s/tpl_module_create_account.php 0
dinscriptio
n
Epuration A Enlever les vrifications Includes/modules/create_account.php 11/05/1 1
de la page des champs de date de 0
dinscriptio naissance et de tlphone
n

35
Annexe 6 : Exemple du manuel de ladministrateur.

36
Glossaire

Attribut : Information contenue dans une balise HTML et qui en complte la signification.

Balise : Marque utilise dans un texte pour identifier la description ou la mise en forme dun
lment. En HTML, une balise est compose au minimum dun mot-cl entour des
signes < et > .

Base de donnes : Ensemble structur dinformations conues afin de faciliter leur consultation et
modification rapide et sre, ralises par plusieurs utilisateurs.
Champ : Dans une base de donnes, colonne qui contient un certain type dinformation.

Fonction : Sous-programme compos dune suite dinstructions effectuant une tche prcise.
HTML : langage simpliste utilis pour la cration de pages web.

HTTP (HyperText Transfer Protocole) : protocole de transfert des pages HTML sur le web.

Requte : Expression d'une demande soumise un service, par exemple une base de donnes,
gnralement pour dclencher un traitement.

Table : Dans une base de donnes, tableau deux dimensions donc chaque ligne correspond un
enregistrement et chaque colonne un champ.

URL (Uniform Resource Locator) : Adresse codifie d'une page internet utilise par les navigateurs

XML (Extensible Markup Language) : Langage standardisant la structure du contenu d'une page qui
sert de base pour la cration d'un langage balis.

37
Rfrences

Comicage
Le site de Comicage.
http://www.comicage.com/

Php :
Le site du zro un site dynamique avec php... partir de zro
http://www.siteduzero.com/tutoriel-3-14668-un-site-dynamique-avec-php.html

XHTML / CSS
Le site du zro XHTML/CSS
http://www.siteduzero.com/tutoriel-3-13666-apprenez-a-creer-votre-site-web.html

Zen-Cart
Zen-cart francophone et son forum
http://www.zencart-france.com/
http://www.zencart-france.com/forum/

38

Vous aimerez peut-être aussi