59
JUILLOT VINCENT AFPA de Pau R R a a p p p p o o r r t t d d e e s s t t a a g g e e Formation Développeur Logiciel Année 2011

Rapport de stage Développeur Logiciel

Embed Size (px)

DESCRIPTION

Stage effectué dans l'entreprise E.I. Christophe Hiribarren en tant que développeur web.

Citation preview

Page 1: Rapport de stage Développeur Logiciel

JUILLOT VINCENT

AFPA de Pau

RRaappppoorrtt ddee ssttaaggee

Formation Développeur Logiciel

Année 2011

Page 2: Rapport de stage Développeur Logiciel

1

REMERCIEMENTS

Mes remerciements s’adressent, tout d’abord, à Monsieur Christophe Hiribarren qui

m’a aidé et soutenu tout au long de ce stage.

Je remercie également les formateurs de l’AFPA, Mireille et François, pour leurs

conseils, leurs enseignements et leurs disponibilités.

Je tiens à remercier tous mes proches et amis pour leurs conseils et leur soutien. Enfin,

je remercie Aude pour son soutien et sa présence de tous les jours.

Page 3: Rapport de stage Développeur Logiciel

2

Sommaire

REMERCIEMENTS .................................................................................................................. 1

INTRODUCTION ...................................................................................................................... 3

I - Présentation de la structure .................................................................................................... 4

II - Déroulement du stage et des actions conduites .................................................................... 6

a) Le stage et ma relation avec l’entreprise ......................................................................... 6

b) Projets de refonte ............................................................................................................. 6

c) Projet de création d’un site web pour un « Ensemble scolaire » ..................................... 7

Cahier des charges .............................................................................................................. 8

L’arborescence du site ...................................................................................................... 11

Story-board et Scénarios .................................................................................................. 12

III - Bilans techniques et propositions d’actions ...................................................................... 16

a) Bilan de mes projets de refonte ..................................................................................... 16

Projet Camping Manex .......................................................................................... 16

Projet Locations Leiza ........................................................................................... 16

Projet Auberge de la Corniche ............................................................................... 16

Projet Hôtel Bellevue ............................................................................................. 16

Projet Hiribarren .................................................................................................... 16

b) Bilan du projet de l’école Saint Etienne d’Espelette ................................................. 16

CONCLUSION ........................................................................................................................ 18

ANNEXES ............................................................................................................................... 19

Voici le Javascript diaporama ....................................................................................... 19

Voici le script utilisé pour le formulaire de contact ...................................................... 38

Voici les actions d’interactions avec la base de données et la page « actualités » du site

de l’école Saint Etienne : ...................................................................................................... 46

INDEX ..................................................................................................................................... 58

Page 4: Rapport de stage Développeur Logiciel

3

INTRODUCTION

Après de nombreuses recherches d’entreprise pour effectuer mon stage de fin d’études

à l’AFPA, j’ai choisi de privilégier une petite entreprise locale. Je me suis donc adresser à

Monsieur Hiribarren, chef de l’entreprise EI Christophe Hiribarren à Espelette. J’ai constaté

que le pôle développement était délaissé depuis quelques années et ce au profit d’une forte

demande en maintenance. Par conséquent, j’ai vu l’opportunité de proposer mes compétences

dans le domaine du développement de site web. De fait, mon objectif premier est de relancer

l’activité création de site web. L’entreprise ayant beaucoup de demandes dans ce domaine,

elle pourrait envisager de créer un poste en réponse à ces dernières.

En intégrant ce stage, je souhaitais acquérir de l’expérience en vue d’une future

embauche. De plus, il me semblait important de me perfectionner. Enfin, un des mes autres

objectifs était d’avoir un référencement notamment en créant mes propres sites web.

Dès mon premier jour de stage, je me suis investi afin d’offrir l’opportunité à

l’entreprise de développer son activité de création de sites sur le territoire. L’enjeu fut donc de

créer ou remettre à jour différents types de sites web afin de repositionner la structure et

d’acquérir une nouvelle clientèle.

Le présent rapport se compose de trois parties distinctes reprenant le déroulement et le

contenu de mon stage. Je présenterai, tout d’abord, l’entreprise. Puis dans un deuxième temps,

j’aborderai le contenu de mon stage de manière détaillée afin de présenter les projets réalisés.

Enfin, j’effectuerai un bilan de ces sept semaines de stage.

Page 5: Rapport de stage Développeur Logiciel

4

I - Présentation de la structure

L’entreprise EI Christophe Hiribarren est une petite structure familiale qui comporte

un couple d’employés. Basée au petit village d’Espelette situé à 30kms de Bayonne dans le

Pays Basque, cette structure existe depuis janvier 2001.

Adresse :

E.I. Christophe HIRIBARREN

205, Merkatu Plaza

64250 ESPELETTE

Contact :

Tél : 05.59.93.90.04

Fax : 05.59.93.92.34

E-mail : [email protected]

Elle exerce plusieurs activités :

o L’installation réseau chez les professionnels

o L’installation des « box » chez les particuliers

o Vente et réparation de matériel informatique et bureautique

o Création de site web

Page 6: Rapport de stage Développeur Logiciel

5

Malheureusement, les locaux n’étaient pas assez grands pour m’accueillir cependant

Monsieur Hiribarren m’a pris en stage dans le cadre du télétravail.

C’est une structure plutôt fleurissante qui comme toutes les petites entreprises connaît

quelques aléas. Actuellement, le patron finalise l’obtention d’un permis de construire pour

pouvoir bâtir des locaux de 100m². Ce qui me permettra peut-être par la suite de travailler sur

place.

Comme vous venez de le comprendre, il y a du travail. Les clients sont aussi bien des

professionnels que des particuliers avec beaucoup de fidèles.

Après, cette présentation je vais vous expliquer le déroulement de ces sept semaines.

Page 7: Rapport de stage Développeur Logiciel

6

II - Déroulement du stage et des actions conduites

a) Le stage et ma relation avec l’entreprise

Tout d’abord, je travaillais trente cinq heures par semaine de 8H30 à 12H30 et de

13H30 à 17H30 du lundi au jeudi et de 9H à 12H le vendredi. Cependant, le risque du

télétravail est de ne pas ressentir la coupure entre le monde professionnel et personnel. Par

conséquent, le travail étant passionnant, ces horaires étaient souvent dépassés.

Cette expérience en télétravail m’a permis de travailler avec un nouveau mode

fonctionnement. Nous communiquions par le biais d’email et du téléphone. De plus, je

développais sur VPN (Virtual Private Network), ce qui me permettait d’avoir accès à toutes

leurs données de développement. Ils utilisent un serveur local pour stocker toutes leurs

informations (Comptabilité, Fiche de renseignement des clients, site web déjà créé, etc.)

Le contact avec Monsieur Hiribarren était régulier. En effet, nous nous appelions

souvent et j’envoyais plus de dix emails par jour pour le tenir au courant de mon travail. La

relation professionnelle était très respectueuse dans les deux sens. Au fil des semaines, notre

relation évoluait positivement.

b) Projets de refonte

Durant ces sept semaines, j’ai effectué de nombreuses tâches différentes. Tout

d’abord, j’ai refondu quatre sites vitrines qui avaient des problèmes d’affichage ou que le

client souhaitait plus moderne :

http://www.camping-manex.com/

Réalignement des pages et ajout d’un diaporama photo.

http://www.location-leiza.fr/

Refonte du menu et ajout d’un diaporama photo.

http://www.aubergedelacorniche.com/

Refonte totale du site avec nouvelle présentation, ajout d’un diaporama photo et

affichage d’un document PDF directement dans la page.

http://www.hotel-bellevue64.fr/

Refonte totale du site avec nouvelle présentation, ajout de plusieurs diaporama photo

et affichage de plusieurs documents PDF directement dans les pages.

Page 8: Rapport de stage Développeur Logiciel

7

Ensuite et à la demande de Monsieur Hiribarren, j’ai entrepris la refonte totale du site de

l’entreprise elle-même (http://www.hiribarren.com/ ). Il avait plus de dix ans et n’était donc

plus dans le style actuel. Monsieur Hiribarren m’a laissé libre de la création de son site web.

J’ai donc créé un site moderne et graphique à l’image de l’entreprise. Afin de répondre à cette

demande, j’ai tout changé :

Mise en place d’un nouveau menu

Mise en place d’un diaporama images de site web avec liens directs

Mise en place d’affichage de documents PDF directement dans les pages

Mise en place d’un formulaire de contact

Mise en place d’un système de maintenance en ligne

Mise en place d’une nouvelle mise en page

c) Projet de création d’un site web pour un « Ensemble scolaire »

Ce dernier projet est le plus conséquent et passionnant. Monsieur Hiribarren m’a demandé

que l’on élabore ensemble un site pour un « Ensemble scolaire » dont il est le Président du

Conseil. Il m’a donné carte blanche et j’ai créé mon propre cahier des charges. Après

beaucoup de réflexion et de discussions, nous avons créé un site plutôt ludique et simple

d’utilisation à l’adresse suivante :

http://www.ecole-saint-etienne-espelette.fr/

Ce projet étant une demande récente d’un client, j’ai réalisé la totalité du site web. Par

conséquent, vous trouverez dans les pages suivantes la description du site de l’école Saint

Etienne d’Espelette :

Cahier des charges

Arborescence

Story-board et scénario

Page 9: Rapport de stage Développeur Logiciel

8

Cahier des charges

Synopsis

Le projet consiste en la création d’un site internet d’un ensemble scolaire privé catholique. Il

doit rassembler la présentation de l’école, son actualité et permettre aux internautes de

communiquer.

Objectifs

Présentation de l’établissement

Communication

Promotion

Informations

Public visé

Equipe pédagogique

Parents d’élèves

Élèves

Futurs élèves

Parents de futurs élèves potentiels

Message

Ecole catholique

Ecole Bilingue

Projet pédagogique

Perspectives

Développer une accessibilité spécifique aux enfants

Carnet de correspondance en ligne

Rattrapage en ligne pour les élèves absents

Page 10: Rapport de stage Développeur Logiciel

9

Interlocuteur

Hiribarren Christophe

05.59.93.90.04 [email protected]

Lien entre l’établissement et la conception

Langues

Français

Basque

Ressources apportées

Domaine : www.ecole-saint-etienne-espelette.fr

Hébergement sur AMEN.FR

Documents informatiques : Photos numérique, Plaquette de présentation, Textes

bilingues

Aspect et qualité du site

Simple

Elaboré

Ludique

Accès aux informations rapidement

Présentation

Colorée

Thématique scolaire

Claire

Intuitive

Spécifications Techniques

Diaporama photographique

Avoir un accès à l’administration du site sur chaque page

Avoir le nom du créateur et hébergeur sur chaque page

La page « Actualités » doit pouvoir être mise à jour par l’équipe pédagogique

Page 11: Rapport de stage Développeur Logiciel

10

Utilisation du PHP pour le dialogue avec la base de données

Utilisation de la technique Modèle Vue Contrôleur (MVC)

Contraintes

Planning à respecter pour la présentation à l’établissement

Le site doit être coloré

Libertés

Libre choix de la mise en page

Libre choix de la charte graphique

Libre choix des photos à afficher

Interactivité

Formulaire de contact

Forum

Délai pour la réalisation du site

Pas de délai de finalisation

Délai pour une présentation de deux pages

Budget

Aucun budget

Référencement

Aucun référencement à faire

Maintenance

Mise à jour forum effectuée par l’administrateur

Mise à jour page « actualité » par l’équipe pédagogique (MVC)

Formation pour l’équipe pédagogique

Page 12: Rapport de stage Développeur Logiciel

11

L’arborescence du site

Page 13: Rapport de stage Développeur Logiciel

12

Story-board et Scénarios

Impressions écran Médias Scénario Interactions

accueil.html - banniere.png

- fr.jpg

- basq.jpg

- logo-piment.png

- accueil.png

- couleurs

texte menu

changent

- lien admin.php

- lien vers page

basque

- On-clic bannière

lien vers

accueil.html

- liens des

menus vers les

autres pages

present.html

- banniere.png

- fr.jpg

- basq.jpg

- logo-piment.png

- prensent.png

- couleurs

texte menu

changent

- lien admin.php

- lien vers page

basque

- On-clic bannière

lien vers

accueil.html

- liens des

menus vers les

autres pages

fonction.html - banniere.png

- fr.jpg

- basq.jpg

- logo-piment.png

- ecole.png

- garderie.jpg

- soutien.png

- cantine.jpg

- couleurs

texte menu

changent

- lien admin.php

- lien vers page

basque

- On-clic bannière

lien vers

accueil.html

- liens des

menus vers les

autres pages

- lien vers

menu.pdf

Page 14: Rapport de stage Développeur Logiciel

13

Impressions écran Médias Scénario Interactions

actualite.php - banniere.png

- fr.jpg

- basq.jpg

- logo-piment.png

- couleurs

texte menu

changent

- lien admin.php

- lien vers page

basque

- On-clic bannière

lien vers

accueil.html

- liens des

menus vers les

autres pages

galerie.html - banniere.png

- fr.jpg

- basq.jpg

- logo-piment.png

- albums photos

- couleurs

texte menu

changent

- lien admin.php

- lien vers page

basque

- On-clic bannière

lien vers

accueil.html

- liens des

menus vers les

autres pages

plan.html - banniere.png

- fr.jpg

- basq.jpg

- logo-piment.png

- ecole-plan.png

- couleurs

texte menu

changent

- lien admin.php

- lien vers page

basque

- On-clic bannière

lien vers

accueil.html

- liens des

menus vers les

autres pages

- lien vers Google

Maps

Page 15: Rapport de stage Développeur Logiciel

14

Impressions écran Médias Scénario Interactions

contact.php - banniere.png

- fr.jpg

- basq.jpg

- logo-piment.png

- couleurs

texte menu

changent

- lien admin.php

- lien vers page

basque

- On-clic bannière

lien vers

accueil.html

- liens des

menus vers les

autres pages

appel.html - banniere.png

- fr.jpg

- basq.jpg

- logo-piment.png

- couleurs

texte menu

changent

- affichage

apel.pdf

- lien admin.php

- lien vers page

basque

- On-clic bannière

lien vers

accueil.html

- liens des

menus vers les

autres pages

- lien vers

apel.pdf

ogec.html - banniere.png

- fr.jpg

- basq.jpg

- logo-piment.png

- couleurs

texte menu

changent

- affichage

ogec.pdf

- lien admin.php

- lien vers page

basque

- On-clic bannière

lien vers

accueil.html

- liens des

menus vers les

autres pages

- lien vers

ogec.pdf

Page 16: Rapport de stage Développeur Logiciel

15

Impressions écran Médias Scénario Interactions

partenaire.html - banniere.png

- fr.jpg

- basq.jpg

- logo-piment.png

- parten.png

- couleurs

texte menu

changent

- lien admin.php

- lien vers page

basque

- On-clic bannière

lien vers

accueil.html

- liens des

menus vers les

autres pages

- liens vers les

sites des

partenaires

Page 17: Rapport de stage Développeur Logiciel

16

III - Bilans techniques et propositions d’actions

a) Bilan de mes projets de refonte

Projet Camping Manex

Dans l’ensemble, ce projet s’est bien déroulé. J’avais proposé au client un menu « flottant » à

gauche de l’écran, cependant il a préféré un menu plus classique. A ce jour, le site est en ligne

et le client est satisfait du travail réalisé.

Projet Locations Leiza

Etant donné le peu de travail à réaliser pour cette refonte, je n’ai eu aucunes difficultés

particulières. Le client était ravi d’avoir un site plus attrayant.

Projet Auberge de la Corniche

Ce projet a été encore plus simple que le précédent. En effet, j’ai seulement dû reprendre

l’affichage des photos et du menu du restaurant en format PDF.

Projet Hôtel Bellevue

La réalisation de ce projet fût plus longue. Effectivement, il a fallu faire ce site en Français et

en Anglais, refaire totalement la mise en forme et faire un tri dans les photos du client. Ce

dernier a même demandé des modifications jusqu’à la dernière semaine.

Projet Hiribarren

La conception de ce projet refonte fût de loin la plus intéressante et enrichissante. J’ai fait de

nombreuses propositions, comme de réaliser une base de données de leurs produits en vente et

de les afficher dans une page, mais il s’avère que c’était trop compliqué pour l’entreprise

d’inventorier tous ses produits. Ce fût le seul point négatif puisque mon patron m’a laissé

carte blanche pour la charte graphique et le scénario du site.

Tous les sites sont, à ce jour, en ligne. Ces actualisations ont permis à l’entreprise

d’avoir de nouvelles demandes dans l’activité de création de site.

b) Bilan du projet de l’école Saint Etienne d’Espelette

J’ai débuté la création de ce site deux semaines avant la fin de mon stage. Par conséquent,

beaucoup d’éléments sont en attente de finalisation. Aujourd’hui, je suis satisfait du travail

réalisé tout comme l’école qui apprécie la charte graphique et la disposition du site web. Plus

de la moitié du site en français est finie, cependant, il reste quatre pages à terminer :

Page 18: Rapport de stage Développeur Logiciel

17

- « Actualités » : interaction avec la base de données,

- « OGEC » : il me manque le rédactionnel,

- « APPEL » : il me manque aussi le rédactionnel,

- « Partenaires » : je n’ai pas encore à disposition les fiches descriptives des partenaires

contenant notamment les logos

- La partie Basque doit encore être mise en place. Il me manque, en effet, la partie

rédactionnelle.

Concernant l’aspect technique de la réalisation de ce site, j’ai rencontré des soucis pour

accéder rapidement au contenu photographique dû à une connexion lente entre le VPN et mon

domicile. Actuellement, mon patron et la structure sont très satisfaits de cette ébauche de

projet. Je terminerai ce dernier au cours du mois de juin.

Page 19: Rapport de stage Développeur Logiciel

18

CONCLUSION

En conclusion, ce stage a été une expérience enrichissante et intéressante. Dès le

début, les relations avec mon patron ont été agréables et constructives. Lorsque j’ai su qu’il

me donnait ma chance, j’ai été enchanté de pouvoir l’aider à relancer son pôle développement

web à travers les actualisations et la création de site. Pendant la période de stage, la

communication fut facilitée par l’échange d’emails et de conversations téléphoniques. De

plus, notre réunion hebdomadaire du vendredi a permis d’échanger nos idées et de favoriser le

dialogue. Deux points négatifs sont cependant à noter. Tout d’abord, la connexion avec le

serveur était lente ce qui ralentissait mon rythme de travail. Puis, mon patron étant plus

spécialisé dans la maintenance, je me retrouvais seul face à mes problèmes et

questionnements. Heureusement, mes cours de l’AFPA ainsi que les forums sérieux d’aide au

développement de site web m’ont permis de résoudre tous ces obstacles et d’enrichir mes

connaissances.

Suite à cette expérience concluante, mon patron m’a proposé de prolonger le stage afin

de finaliser les projets en construction et éventuellement poursuivre cette collaboration dans le

cadre d’un contrat. Je serais satisfait d’intégrer l’entreprise dans le but de développer le pôle

développement web, sachant que Monsieur Hiribarren continue à avoir des demandes

intéressantes notamment dans la création de sites e-commerce.

Pour finir, ce stage est l’aboutissement de la formation de Développeur Logiciel. Ce

n’est que le début d’une expérience professionnelle passionnante.

Page 20: Rapport de stage Développeur Logiciel

19

ANNEXES

Voici le Javascript diaporama :

function preloadctrl(im){

if (typeof im=='string'){

var imo=new Image();

imo.src=im;

}

}

if(document.images&&typeof preload_ctrl_images!='undefined'&&preload_ctrl_images){

var ctrlimgs=[previmg, stopimg, playimg, nextimg]

for (var i_tem = 0; i_tem < ctrlimgs.length; i_tem++)

if (ctrlimgs[i_tem])

preloadctrl(ctrlimgs[i_tem])

}

var iss=[]; //tableau pour le cache inter_slide

function inter_slide(){

if(!document.images||arguments.length==0)

return;

var imgs=arguments[0];

var width=null, height=null, delay=null;

if(arguments.length==2)

Page 21: Rapport de stage Développeur Logiciel

20

delay=arguments[1];

else if(arguments.length==3||arguments.length==4)

width=arguments[1], height=arguments[2], delay=arguments[3]? arguments[3] : null;

this.dom=(document.getElementById) //dom navigateurs modernes

this.da=document.all

this.delay=imgs.delay? imgs.delay : delay? delay : 3000+iss.length*750;

this.nextimgidx=0;

iss[this.issid=iss.length]=this;

this.imgs=imgs;

if (imgs.random)

this.imgs.sort(function() {return 0.5 - Math.random();})

this.imgborder=imgs.border? parseInt(imgs.border) : 0;

if (!this.dom){

this.postimgs=new Array() //préchargement des images

for (p=0;p<imgs.length;p++){

this.postimgs[p]=new Image()

this.postimgs[p].src=this.imgs[p][0]

}}

if (this.dom){ //si navigateurs modernes

this.faded=0;

this.loadimgidx=[];

this.fade=!imgs.nofade;

if(this.fade)

Page 22: Rapport de stage Développeur Logiciel

21

this.degree=10 //initialisation de l'opacité à 10%

this.pausecheck=imgs.pause;

this.mouseovercheck=0

this.canvasbase="canvas"+this.issid

this.curcanvas=this.canvasbase+"_0"

this.descriptions=!imgs.no_descriptions;

this.man_start=imgs.manual_start;

this.addbr=!imgs.no_added_linebreaks;

this.no_auto=imgs.no_auto;

this.onclick=imgs.onclick;

this.specs=imgs.specs;

this.counter=imgs.counter;

this.ics=imgs.image_controls;

this.jumpto=imgs.jumpto;

this.no_c=imgs.no_controls;

this.target=imgs.target;

this.ualt=imgs.use_alt;

this.utit=imgs.use_title;

this.fadecolor=imgs.fadecolor;

this.ibut_hc=imgs.button_highlight;

this.dp=imgs.desc_prefix? imgs.desc_prefix : ' ';

this.imbcolor=imgs.border_color;

this.imbstyle=imgs.border_style;

Page 23: Rapport de stage Développeur Logiciel

22

this.width=imgs.width? imgs.width : width? width : null

this.width=this.width? this.width+this.imgborder*2 : null;

this.height=imgs.height? imgs.height : height? height : null

this.height=this.height? this.height+this.imgborder*2 : null;

var ief='', dims='';

if(this.width||this.height)

dims=this.width&&this.height? 'width:'+this.width+'px;height:'+this.height+'px;' : this.width?

'width:'+this.width+'px;' : 'height:'+this.height+'px;';

if(this.fade&&document.body&&document.body.style)

ief=document.body.filters? 'filter:progid:DXImageTransform.Microsoft.alpha(opacity=0);' :

typeof document.body.style.opacity=='string'? 'opacity:0;' : 'opacity:0.10;-moz-opacity:0.10;-

khtml-opacity:0.10;';

var brs=this.addbr? '<br>' : '';

if (imgs.controls_top){

this.controls();

document.write(brs)

}

document.write('<div align="center"><div id="master'+this.issid+'"

style="position:relative;'+dims+'overflow:hidden;margin:0 auto;"><div

id="'+this.canvasbase+'_0" style="position:absolute;'+dims+'top:0;left:0;'+ief+'background-

color:'+(imgs.fadecolor? imgs.fadecolor : 'white')+'"><\/div><div id="'+this.canvasbase+'_1"

style="position:absolute;'+dims+'top:0;left:0;'+ief+'background-color:'+(imgs.fadecolor?

imgs.fadecolor : 'white')+'"><\/div><\/div><\/div>')

if(this.descriptions)

document.write(brs+'<div align="center">'+this.dp+'<span

id="imgdsc'+this.issid+'">&nbsp;<\/span></div>\n');

Page 24: Rapport de stage Développeur Logiciel

23

if(this.counter&&!this.descriptions)

document.write(brs);

if(this.counter)

this.cntrl()

if (!imgs.controls_top){

document.write(this.ics? '' : brs);

this.controls();

}}

else

document.write('<div align="center"><img name="defaultslide'+this.issid+'"

src="'+this.postimgs[0].src+'"><\/div>')

if (this.dom) //si navigateurs modernes comme Firefox, IE5+

this.startit()

else{

this.nextimgidx++

setInterval("iss["+this.issid+"].rotateimg()", this.delay)

}}

inter_slide.prototype.cntrl=function(){

this.cpad=this.imgs.length.toString().length;

document.write('<div align="center">Viewing Image: <b><span

id="thecnt'+this.issid+'"><\/span><\/b> of<span style="font-

size:1ex;">&nbsp;</span>&nbsp;<b>'+this.imgs.length+'<\/b><\/div>');

}

inter_slide.prototype.controls=function(){

Page 25: Rapport de stage Développeur Logiciel

24

var brs=this.addbr? '<br>' : ' &nbsp;';

if(!this.ics&&!this.no_c)

document.write('<div align="center"><input id="prev'+this.issid+'" disabled type="button"

value=" << " onclick="iss['+this.issid+'].changeimg(false, \'nav\');">\n'+

(this.no_auto? '&nbsp;&nbsp;&nbsp;' : ' <input id="gostp'+this.issid+'" type="button"

value=" Stop " onclick="iss['+this.issid+'].gostop(this);">\n')+

' <input id="next'+this.issid+'" disabled type="button" value=" >> "

onclick="iss['+this.issid+'].changeimg(true, \'nav\');">'+(this.jumpto? brs+'Jump to: <input

disabled type="text" size="'+this.imgs.length.toString().length+'" id="goto'+this.issid+'"

onkeydown="iss['+this.issid+'].jumper(event);"><input id="go'+this.issid+'" disabled

type="button" onclick="iss['+this.issid+'].jumper();" value="GO">' : '')+'<\/div>')

else if(this.ics&&!this.no_c){

var op=document.body.filters? ' style="filter:alpha(opacity=100);"' : '

style="opacity:'+(this.man_start? 0.99 : 0.45)+';"';

document.write('<table align="center" cellpadding="0" cellspacing="10"><tr><td

valign="middle" align="center" style="padding:2px 2px 1px 2px;"><input'+op+'

onmouseover="iss['+this.issid+'].ibute(this,1);" onmouseout="iss['+this.issid+'].ibute(this,2);"

onmousedown="iss['+this.issid+'].ibute(this,3);" onmouseup="iss['+this.issid+'].ibute(this,4);"

type="image" title="Previous" id="prev'+this.issid+'" src="'+previmg+'"

onclick="iss['+this.issid+'].changeimg(false, \'nav\');"><\/td>'+(this.no_auto?

'<td>&nbsp;<\/td>' : '<td valign="middle" align="center" style="padding:2px 2px 1px

2px;"><input onmouseover="iss['+this.issid+'].ibute(this,1);"

onmouseout="iss['+this.issid+'].ibute(this,2);"

onmousedown="iss['+this.issid+'].ibute(this,3);" onmouseup="iss['+this.issid+'].ibute(this,4);"

title="Stop" type="image" id="gostp'+this.issid+'" src="'+(this.g_fPlayMode? playimg :

stopimg)+'" onclick="iss['+this.issid+'].gostop(this);"><\/td>')+'<td valign="middle"

align="center" style="padding:2px 2px 1px 2px;"><input'+op+'

onmouseover="iss['+this.issid+'].ibute(this,1);" onmouseout="iss['+this.issid+'].ibute(this,2);"

onmousedown="iss['+this.issid+'].ibute(this,3);" onmouseup="iss['+this.issid+'].ibute(this,4);"

Page 26: Rapport de stage Développeur Logiciel

25

type="image" title="Next" id="next'+this.issid+'" src="'+nextimg+'"

onclick="iss['+this.issid+'].changeimg(true, \'nav\');"><\/td><\/tr><\/table>\n');

}else

this.no_c=1;

}

inter_slide.prototype.jumper=function(e){

var key;

if(typeof e=='object')

key=e.keyCode? e.keyCode : e.which? e.which : 1;

if(key&&key!==13)

return;

var num=typeof e=='number'? e : parseInt(this.go('goto'+this.issid).value);

if(num<=this.imgs.length&&num>0){

this.nextimgidx=num-2;

this.changeimg(true, 'jump');

}}

inter_slide.prototype.ibute=function(obj, i){

if(!obj.parentNode)

return;

if(i==1)

obj.parentNode.style.backgroundColor=this.ibut_hc? this.ibut_hc : 'yellow';

else if(i==2)

obj.parentNode.style.backgroundColor='transparent';

Page 27: Rapport de stage Développeur Logiciel

26

else if(i==3){

obj.parentNode.style.borderTop=obj.parentNode.style.borderLeft='1px solid gray';

obj.parentNode.style.paddingRight='1px';obj.parentNode.style.paddingBottom=0;

}

if (i==2||i==4){

obj.parentNode.style.borderTop=obj.parentNode.style.borderLeft='none';

obj.parentNode.style.paddingRight='2px';obj.parentNode.style.paddingBottom='1px';

}}

inter_slide.prototype.fadepic=function(){

if (this.fade&&this.degree<100){

this.faded=0

this.degree+=10

if (this.tempobj.filters&&this.tempobj.filters[0]){

if (typeof this.tempobj.filters[0].opacity=="number") //si IE6+

this.tempobj.filters[0].opacity=this.degree

else //sinon IE5.5-

this.tempobj.style.filter="alpha(opacity="+this.degree+")"

}

else if (this.tempobj.style.MozOpacity)

this.tempobj.style.MozOpacity=this.degree/101

else if (this.tempobj.style.KhtmlOpacity)

this.tempobj.style.KhtmlOpacity=this.degree/100

else if (this.tempobj.style.opacity&&!this.tempobj.filters)

Page 28: Rapport de stage Développeur Logiciel

27

this.tempobj.style.opacity=this.degree/101

}

else{

this.faded=1

clearInterval(this.fadeclear)

this.nextcanvas=(this.curcanvas==this.canvasbase+"_0")? this.canvasbase+"_0" :

this.canvasbase+"_1"

this.tempobj=this.go(this.nextcanvas)

if(this.playing)

this.changeimg()

}}

inter_slide.prototype.populateslide=function(picobj, picidx){

if(document.getElementsByTagName){

if(picobj.getElementsByTagName('a')[0]&&picobj.getElementsByTagName('a')[0].onclick)

picobj.getElementsByTagName('a')[0].onclick=null;

if(picobj.getElementsByTagName('img')[0]&&picobj.getElementsByTagName('img')[0].onlo

ad)

picobj.getElementsByTagName('img')[0].onload=null;

}

picobj.style.backgroundColor=this.imgs[picidx].fadecolor? this.imgs[picidx].fadecolor :

this.fadecolor? this.fadecolor : 'white';

var slideHTML='<table border="0" cellpadding="0" cellspacing="0" width="100%"

height="100%"><tr><td width="100%" height="100%" align="center" valign="middle"

style="background:transparent none;">'

Page 29: Rapport de stage Développeur Logiciel

28

if (this.imgs[picidx][2]){ //si il existe des liens associés aux images

var specs=this.imgs[picidx][4]? ", '"+this.imgs[picidx][4]+"'" : this.specs? ", '"+this.specs+"'"

: '';

slideHTML+='<a href="'+this.imgs[picidx][2]+'"'+(this.imgs[picidx][3]? '

target="'+this.imgs[picidx][3]+'"' : this.target? ' target="'+this.target+'"' : '')+'

onclick="'+(this.onclick? this.onclick : 'window.open(this.href, (this.target? this.target :

\'_self\')'+specs+');return false;')+'">'

}

slideHTML+='<img id="theimg'+picidx+'_'+this.issid+'"

src="'+(this.loadimgidx[picidx]&&typeof

this.loadimgidx[picidx].complete=='boolean'&&this.loadimgidx[picidx].complete?

this.loadimgidx[picidx].src : this.imgs[picidx][0])+'" alt="'+(this.ualt? this.imgs[picidx][1] :

'Slide Show Image')+'" title="'+(this.utit? this.imgs[picidx][1] : '')+'"

'+(this.imbcolor&&!this.imgs[picidx].noborder? 'style="border:'+this.imgborder+'px

'+(this.imbstyle? this.imbstyle : 'solid')+' '+this.imbcolor+';"' :

'border="'+(this.imgs[picidx].noborder? '0' : this.imgborder)+'"')+(!this.width||!this.height? '

onload="iss['+this.issid+'].imgload(this);"' : '')+'>'

if (this.imgs[picidx][2]) //si il existe des liens associés aux images

slideHTML+='<\/a>'

slideHTML+='<\/td><\/tr><\/table>'

picobj.innerHTML=slideHTML

}

inter_slide.prototype.buttons=function(bool){

if(this.no_c)

return;

var next=this.go('next'+this.issid), prev=this.go('prev'+this.issid);

next.disabled=prev.disabled=!bool;

Page 30: Rapport de stage Développeur Logiciel

29

next.title=bool? 'next' : '';

prev.title=bool? 'previous' : '';

if(this.jumpto&&!this.ics)

this.go('go'+this.issid).disabled=this.go('goto'+this.issid).disabled=!bool;

if(this.ics){

if(!this.no_auto){

var go=this.go('gostp'+this.issid)

go.title=bool? 'Play' : 'Stop';

go.src=bool? playimg : stopimg;

}

if(prev.filters&&prev.parentNode)

prev.parentNode.style.filter=next.parentNode.style.filter='alpha(opacity='+(bool? 100 :

45)+')';

else if(prev.style.opacity&&!prev.filters)

prev.style.opacity=next.style.opacity=bool? 0.99 : 0.45;

}}

inter_slide.prototype.imgload=function(el){

if(!el&&!this.imgel)

return;

var el=el? el : this.imgel;

if(el.width==0||el.height==0){

this.imgel=el;

var cacheobj=this;

Page 31: Rapport de stage Développeur Logiciel

30

clearTimeout(this.getdim)

this.getdim=setTimeout(function(){cacheobj.imgload()}, 300)

return;

}

var m=this.go('master'+this.issid).style, c0=this.go(this.canvasbase+'_0').style,

c1=this.go(this.canvasbase+'_1').style;

if(!this.width){

this.width=el.width+this.imgborder*2;

m.width = c0.width = c1.width = this.width+'px';

}

if(!this.height){

this.height=el.height+this.imgborder*2;

m.height = c0.height = c1.height = this.height+'px';

}}

inter_slide.prototype.changeimg=function(bool,nav){

if(this.playing){

this.buttons(false)

this.nextimgidx=(this.keeptrack()<this.imgs.length-1)? this.keeptrack()+1 : 0

this.populateslide(this.tempobj, this.nextimgidx)

if(bool)

this.rotateimg()

else{

clearTimeout(this.inprocess)

Page 32: Rapport de stage Développeur Logiciel

31

this.inprocess=setTimeout("iss["+this.issid+"].rotateimg()", this.delay)

}}else {

if(!this.faded){

if(nav&&nav=='nav')

return;

this.nextimgidx=this.keeptrack()+(bool? 1 : -1)

this.nextimgidx=(this.nextimgidx<this.imgs.length)? this.nextimgidx : this.nextimgidx-

this.imgs.length

this.nextimgidx=(this.nextimgidx>-1)? this.nextimgidx : this.imgs.length+this.nextimgidx

return;

}

if(this.fadeclear)

clearInterval(this.fadeclear);

if(bool){

var loadidx=this.nextimgidx+2

loadidx=(loadidx<this.imgs.length)? loadidx : loadidx-this.imgs.length;

loadidx=(loadidx>-1)? loadidx : this.imgs.length+loadidx;

this.loadimgidx[loadidx]=new Image();

this.loadimgidx[loadidx].src=this.imgs[loadidx][0];

}

else{

var loadidx=this.nextimgidx-2

loadidx=(loadidx<this.imgs.length)? loadidx : loadidx-this.imgs.length

Page 33: Rapport de stage Développeur Logiciel

32

loadidx=(loadidx>-1)? loadidx : this.imgs.length+loadidx

this.loadimgidx[loadidx]=new Image();

this.loadimgidx[loadidx].src=this.imgs[loadidx][0];

}

if(nav&&nav=='jump')

this.nextimgidx++;

else

this.nextimgidx=this.keeptrack()+(bool? 1 : -1)

this.nextimgidx=(this.nextimgidx<this.imgs.length)? this.nextimgidx : this.nextimgidx-

this.imgs.length

this.nextimgidx=(this.nextimgidx>-1)? this.nextimgidx : this.imgs.length+this.nextimgidx

this.populateslide(this.tempobj, this.nextimgidx)

this.rotateimg()

}}

inter_slide.prototype.go=function(id){

return this.da? this.da[id] : document.getElementById(id);

}

inter_slide.prototype.rotateimg=function(){

if(this.dom){

var cimg=this.go('theimg'+this.nextimgidx+'_'+this.issid)?

this.go('theimg'+this.nextimgidx+'_'+this.issid) : null;

if(cimg&&typeof cimg.complete=='boolean'&&!cimg.complete){

var cacheobj=this

clearTimeout(this.loading)

Page 34: Rapport de stage Développeur Logiciel

33

this.loading=setTimeout(function(){cacheobj.rotateimg()}, 300)

return;

}

if (this.mouseovercheck==1){

var cacheobj=this

clearTimeout(this.mousep)

this.mousep=setTimeout(function(){cacheobj.rotateimg()}, 100)

return;

}

if(this.fade)

this.resetit()

var crossobj=this.tempobj=this.go(this.curcanvas)

crossobj.style.zIndex++

var othercanvas=this.curcanvas==this.canvasbase+"_0"? this.go(this.canvasbase+"_1") :

this.go(this.canvasbase+"_0");

othercanvas.style.zIndex=0;

if(this.descriptions)

this.go('imgdsc'+this.issid).innerHTML = this.imgs[this.keeptrack()][1];

if(this.counter){

var padit='';

for (var p=0; p<this.cpad-(this.nextimgidx+1).toString().length; p++)

padit+='<span style="visibility:hidden;">0</span>';

this.go('thecnt'+this.issid).innerHTML = padit+(this.keeptrack()<this.imgs.length?

this.keeptrack()+1 : 1);

Page 35: Rapport de stage Développeur Logiciel

34

}

if (this.jumpto)

this.go('goto'+this.issid).value=this.keeptrack()<this.imgs.length? this.keeptrack()+1 : 1;

this.jumperidx=this.keeptrack()<this.imgs.length? this.keeptrack()+1 : 1;

var fadeobj=this

clearInterval(this.fadeclear)

this.fadeclear=setInterval(function(){fadeobj.fadepic()},50)

this.curcanvas=(this.curcanvas==this.canvasbase+"_0")? this.canvasbase+"_1" :

this.canvasbase+"_0"

}else{

var v4imgobj=document.images['defaultslide'+this.issid]

v4imgobj.src=this.postimgs[this.nextimgidx].src

this.nextimgidx=(this.nextimgidx<this.imgs.length-1)? this.nextimgidx+1 : 0

}}

inter_slide.prototype.resetit=function(){

this.degree=10

var crossobj=this.go(this.curcanvas)

if (crossobj.filters&&crossobj.filters[0]){

if (typeof crossobj.filters[0].opacity=="number") //si IE6+

crossobj.filters(0).opacity=this.degree

else //sinon IE5.5-

crossobj.style.filter="alpha(opacity="+this.degree+")"

}

Page 36: Rapport de stage Développeur Logiciel

35

else if (crossobj.style.MozOpacity)

crossobj.style.MozOpacity=this.degree/101

else if (crossobj.style.KhtmlOpacity)

crossobj.style.KhtmlOpacity=this.degree/100

else if (crossobj.style.opacity&&!crossobj.filters)

crossobj.style.opacity=this.degree/101

}

inter_slide.prototype.startit=function(){

this.playing=1

var crossobj=this.go(this.curcanvas)

this.populateslide(crossobj, this.nextimgidx)

if (this.pausecheck==1){ //si diaporama doit faire une pause avec mouseover

var cacheobj=this

var crossobjcontainer=this.go("master"+this.issid)

crossobjcontainer.onmouseover=function(){cacheobj.mouseovercheck=1}

crossobjcontainer.onmouseout=function(){cacheobj.mouseovercheck=0}

}

this.rotateimg()

if(this.no_auto)

this.gostop();

else if(this.man_start)

this.gostop(this.go('gostp'+this.issid));

else if(this.ics&&document.body.filters){ //correction pour un bug IE5.5

Page 37: Rapport de stage Développeur Logiciel

36

this.buttons(false);

}}

inter_slide.prototype.gostop=function(el){

if(el)

el.value=el.value==' Stop '? ' Play ' : ' Stop ';

if(this.inprocess&&this.playing){

clearTimeout(this.inprocess);

this.nextimgidx-=this.faded;

}

this.playing=!this.playing;

if(this.playing){

clearInterval(this.fadeclear)

this.faded=1

this.changeimg(true);

}

else{

var loadidx=(this.keeptrack()<this.imgs.length-1)? this.keeptrack()+1 : 0

this.loadimgidx[loadidx]=new Image();

this.loadimgidx[loadidx].src=this.imgs[loadidx][0];

this.jumper(this.jumperidx? this.jumperidx : 0)

this.buttons(true);

}}

inter_slide.prototype.keeptrack=function(){

Page 38: Rapport de stage Développeur Logiciel

37

if(!document.getElementsByTagName)

return this.nextimgidx;

var canvases=[this.go('canvas'+this.issid+'_0'), this.go('canvas'+this.issid+'_1')]

if(canvases[0].style.zIndex>canvases[1].style.zIndex&&canvases[0].getElementsByTagName

("img")[0])

return parseInt(canvases[0].getElementsByTagName('img')[0].id.replace(/theimg/, ''))

else if(canvases[1].getElementsByTagName("img")[0])

return parseInt(canvases[1].getElementsByTagName('img')[0].id.replace(/theimg/, ''))

else

return this.nextimgidx;

}

Page 39: Rapport de stage Développeur Logiciel

38

Voici le script utilisé pour le formulaire de contact :

<?php

if (isset($_POST["envoyer"])){

$etat = "erreur";

if (isset($_POST["son_nom"])) $_POST["son_nom"]=trim(stripslashes

($_POST["son_nom"]));

if (isset($_POST["son_email"])) $_POST["son_email"]=trim(stripslashes

($_POST["son_email"]));

if (isset($_POST["son_url"])) $_POST["son_url"]=trim(stripslashes(

$_POST["son_url"]));

if (isset($_POST["son_objet"])) $_POST["son_objet"]=trim(stripslashes

($_POST["son_objet"]));

if (isset($_POST["son_message"])) $_POST["son_message"]=trim(stripslashes

($_POST["son_message"]));

if (empty($_POST["son_nom"])) {

$erreur="Vous n'avez pas entr&eacute; votre nom...";

Page 40: Rapport de stage Développeur Logiciel

39

}

elseif (empty($_POST["son_email"])) {

$erreur="Nous avons besoin de votre e-mail pour vous r&eacute;pondre...";

}

elseif (mb_ereg("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.

[a-z]{2,4}$",$_POST["son_email"])){

$erreur="Votre adresse e-mail n'est pas valide...";

}

elseif (empty($_POST["son_objet"])) {

$erreur="Vous devez entrer l'objet de votre message...";

}

elseif (empty($_POST["son_message"])) {

$erreur="Merci de saisir un message...";

}

else {

$etat="ok";

}

}

else {

$etat="attente";

}

Page 41: Rapport de stage Développeur Logiciel

40

if ($etat!="ok"){

if ($etat=="erreur"){

echo "<span style=\"color:red\">".$erreur."</span><br /><br />\n";

}

?>

<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">

<h2 style="text-decoration: underline">Formulaire de contact</h2>

<p>(*) Champ Obligatoires</p>

<p style="text-align:left">

<label for="son_nom">Nom *</label><br /> <!-- Intitul&eacute; du champ pseudo -->

<input type="text" size="40" name="son_nom" id="son_nom" value="<?php

if (!empty($_POST["son_nom"])) {

echo htmlspecialchars($_POST["son_nom"],ENT_QUOTES);

}

?>" />

<br />

Page 42: Rapport de stage Développeur Logiciel

41

<label for="son_email">E-mail *</label><br />

<input type="text" size="40" name="son_email" id="son_email" value="<?php

if (!empty($_POST["son_email"])) {

echo htmlspecialchars($_POST["son_email"],ENT_QUOTES);

}

?>" />

<br />

<label for="son_url">URL de votre site</label><br />

<input type="text" size="40" name="son_url" id="son_url" value="<?php

if (!empty($_POST["son_url"])) {

echo htmlspecialchars($_POST["son_url"],ENT_QUOTES);

}

?>" />

<br />

<label for="son_objet">Objet *</label><br />

<input type="text" size="40" name="son_objet" id="son_objet" value="<?php

Page 43: Rapport de stage Développeur Logiciel

42

if (!empty($_POST["son_objet"])) {

echo htmlspecialchars($_POST["son_objet"],ENT_QUOTES);

}

?>" />

<br />

<label for="son_message">Message *</label><br />

<textarea name="son_message" id="son_message" cols="60" rows="25"><?php

if (isset($_POST["son_message"])) {

echo htmlspecialchars($_POST["son_message"],ENT_QUOTES);

}

?>

</textarea>

<br />

<input type="submit" name="envoyer" value="Envoyer" /><input type="reset"

name="reset" value="Effacer" />

</p>

</form>

Page 44: Rapport de stage Développeur Logiciel

43

<?php

}

else {

$son_nom = $_POST["son_nom"];

$son_email = $_POST["son_email"];

$son_url = $_POST["son_url"];

$son_objet = $_POST["son_objet"];

$son_message = $_POST["son_message"];

$mon_email2 = "[email protected]";

$mon_email = "[email protected]";

$mon_nom = "Formulaire du Site Hiribarren";

$mon_url = "http://www.hiribarren.fr/";

$msg_pour_moi = "- Son nom : $son_nom \n

- Son E-mail : $son_email \n

- Son site : $son_url \n

- Objet du message : $son_objet \n

- Message : \n $son_message \n\n";

Page 45: Rapport de stage Développeur Logiciel

44

$accuse_pour_lui = "Bonjour $son_nom,\n

Votre message nous a bien été envoyé et nous tâcherons de vous répondre le plus

rapidement possible.\n\n

- Votre E-mail : $son_email \n

- Votre site : $son_url \n

- L'objet de votre message : $son_objet \n

- Votre message : \n $son_message \n\n

Merci et à bientôt sur http://www.hiribarren.fr !";

$entete = "From: " . $mon_nom . " <" . $mon_email2 . ">\n"; // On pr&eacute;pare

$entete .= "MIME-Version : 1.0";

if (@mail($mon_email,$son_objet,$msg_pour_moi,$entete) &&

@mail($son_email,$son_objet,$accuse_pour_lui,$entete)){

echo "<p style=\"text-align:center\">Votre message a &eacute;t&eacute;

envoy&eacute;, vous recevrez une confirmation par mail.<br /><br />\n";

echo "<a href=\"" . $mon_url . "\">Retour</a></p>\n";

}

else {

Page 46: Rapport de stage Développeur Logiciel

45

echo "<p style=\"text-align:center\">Un probl&egrave;me s'est produit lors de

l'envoi du message.\n";

echo "<a href=\"".$_SERVER["PHP_SELF"]."\">R&eacute;essayez...</a></p>\n";

}

}

?>

Page 47: Rapport de stage Développeur Logiciel

46

Voici les actions d’interactions avec la base de données et la page « actualités » du

site de l’école Saint Etienne :

- ajout.php

<?

echo '<div align="center">';

include ("config.php");

$table=$_GET['table'];

$fields = mysql_list_fields($db, $table, $link);

$columns = mysql_num_fields($fields);

for ($i = 0; $i < $columns; $i++) {

$champs[$i]=mysql_field_name($fields, $i);

$valeur[$i]=$_POST[$champs[$i]];

}

$query="insert into ".$table." values ('".$valeur[0]."'";

$req="";

for ($i=1;$i<$columns;$i++) {

$req=$req.",'".$valeur[$i]."'";

}

$query=$query.$req.')';

mysql_query($query);

echo 'La requête suivante a bien été exécutée :<br>'.$query;

echo '<br>Le nouvel enregistrement a été inséré dans la table '.$table;

echo '<br><a href="edit.php?id='.$table.'">retour</a>';

echo '</div>';

?>

Page 48: Rapport de stage Développeur Logiciel

47

- exec.php

<?

$table=$_GET['table'];

$id=$_GET['id'];

include ("config.php");

$fields = mysql_list_fields($db, $table, $link);

$columns = mysql_num_fields($fields);

for ($i = 0; $i < $columns; $i++) {

if ($i==0) {

$cle=mysql_field_name($fields, $i);}

$champs[$i]=mysql_field_name($fields, $i); //initialise le tableau champs au nom des

champs de la table

$valeur[$i]=addslashes($_POST[$champs[$i]]);

if ($i!=0) {

$query="update ".$table." set ".$champs[$i]."='".$valeur[$i]."' where ".$cle."=".$id;

mysql_query($query);

}

}

?>

<script language="javascript">

alert('Modifications effectuées')

window.location="edit.php?id=<? echo $table ?>"

</script>

Page 49: Rapport de stage Développeur Logiciel

48

- modify.php

<?

$table=$_GET['table'];

$action=$_POST['action'];

?>

<?

include("config.php");

if (!isset($_POST['id']) and ($action!="Ajouter")) {

?>

<script language="javascript">

alert('Vous devez choisir un enregistrement')

window.location="edit.php?id=<? echo $table ?>" //renvoi à la page précédente si aucun

enregistrement n'a été choisi

</script>

<?

} else {

echo '<div align="center">';

/***************************************************************************

****

*************************Modification de l'enregistrement***********************

***************************************************************************

****/

if (isset($_POST['id']) and ($action=="Modifier")) {

$id=$_POST['id'];

echo '<U><b>Modification de la table '.strtoupper($table).'</B></u>';

$fields = mysql_list_fields($db, $table, $link);

$columns = mysql_num_fields($fields);

echo '<form action="exec.php?table='.$table.'&id='.$id.'" method="POST">';

Page 50: Rapport de stage Développeur Logiciel

49

echo '<table border=2 cellpadding=5><tr>';

for ($i = 0; $i < $columns; $i++) { //affiche les entêtes des colonnes dans le tableau

echo '<td><p align="center">'.mysql_field_name($fields, $i) .'</p></td>';

if ($i==0) {

$cle=mysql_field_name($fields, $i);}

$champs[$i]=mysql_field_name($fields, $i);

}

echo '</tr>';

$query="select * from ".$table." where ".$cle."=".$id;

$result=mysql_query($query);

while ($row=mysql_fetch_array($result)) {

echo '<tr>';

for ($i = 0; $i < $columns; $i++) {

if ($row[$i]=="") { //permet d'afficher les cases du tableau même si elles sont vides

$row[$i]="&nbsp;"; }

$long=strlen($row[$i]);

if ($long>30) {

echo '<td><p align="center">';

echo '<textarea rows="3" name="'.$champs[$i].'"

cols="30">'.$row[$i].'</textarea>';

echo '</p></td>';

}else{

$long=$long+10;

echo '<td><p align="center"><input type="text" name="'.$champs[$i].'"

size="'.$long.'" value="'.$row[$i].'"></p></td>';

}

}

echo '</tr>';

Page 51: Rapport de stage Développeur Logiciel

50

}

echo '</table>';

echo '<input type="submit" value="Modifier"></form>';

/***************************************************************************

****

*************************Suppression de l'enregistrement************************

***************************************************************************

****/

} else {

if (isset($_POST['id']) and ($action=="Supprimer")) {

$id=$_POST['id'];

$fields = mysql_list_fields($db, $table, $link);

$cle=mysql_field_name($fields, 0);

$query="delete from ".$table." where ".$cle."=".$id;

echo 'Souhaitez vous continuer et exécuter cette requête ?<br>';

echo $query;

echo '<br><a href="suppr.php?req='.$query.'">oui</a>&nbsp;&nbsp;<a

href="edit.php?id='.$table.'">non</a>';

/***************************************************************************

***************************** Ajout d’'un enregistrement

***************************************************************************

**********************************/

} else {

echo '<U><b>Ajout d\'un enregistrement dans la table '.strtoupper($table).'</B></u><br>';

echo 'Le premier champs n\'a pas besoin d\'être complété s\'il s\'agit d\'un numéro';

$fields = mysql_list_fields($db, $table, $link);

$columns = mysql_num_fields($fields);

echo '<form action="ajout.php?table='.$table.'" method="POST">';

echo '<table border=2 cellpadding=5><tr>';

Page 52: Rapport de stage Développeur Logiciel

51

for ($i = 0; $i < $columns; $i++) { //affiche les entêtes des colonnes dans le tableau

echo '<td><p align="center">'.mysql_field_name($fields, $i) .'</p></td>';

if ($i==0) {

$cle=mysql_field_name($fields, $i);}

$champs[$i]=mysql_field_name($fields, $i);

}

echo '</tr><tr>';

for ($i = 0; $i < $columns; $i++) { //affiche les entêtes des colonnes dans le tableau

echo '<td><p align="center"><input type="text" name="'.$champs[$i].'"

size="30"></p></td>';

}

echo '</tr></table><br><input type="submit" value="Ajouter"></form>';

}}}

echo '</div>';

?>

- sql.php

<?

session_start();

if (!isset($_SESSION['thabaoul'])) {

exit();

}

?>

<?

echo '<div align="center">';

include ("config.php");

if (!isset($_POST['req'])) {

Page 53: Rapport de stage Développeur Logiciel

52

echo '<div align="center">Saisissez votre requête ici<br>';

echo '<form method="POST" action=sql.php>';

echo '<textarea rows="6" name="req" cols="30">votre requête ici</textarea>';

echo '<br><input type="submit" value="valider">';

} else {

$query=$_POST['req'];

//$query=strtoupper($query); //convertit la chaine "query" en majuscules

if (ereg("SELECT",$query) or ereg("Select",$query) or ereg("select",$query)) { //recherche si

"SELECT" existe dans la requete

$req=mysql_query($query);

$a=mysql_num_fields($req); //compte le nombre de champs concernés par la requête

echo '<table border="2" cellpadding="3">';

while ($row=mysql_fetch_array($req)) {

echo '<tr>';

for ($i=0;$i<$a;$i++) {

if ($row[$i]==""){

$row[$i]="&nbsp;"; }

echo '<td>'.$row[$i].'</td>';

}

echo '</tr>';

}

} elseif (ereg("INSERT",$query) or ereg("insert",$query) or ereg("Insert",$query)) { // ajout

d'enregistrement

echo 'Pour insérer un enregistrement dans une table, sélectionnez la table et choisissez

"Ajouter"';

} elseif (ereg("DELETE",$query) or ereg("Delete",$query) or ereg("delete",$query)) {

//suppression d'enregistrement(s)

echo 'Pour supprimer un enregistrement d\'une table, sélectionnez la table, l\'enregistrement

désiré et choisissez "Supprimer"';

Page 54: Rapport de stage Développeur Logiciel

53

} elseif (ereg("UPDATE",$query) or ereg("update",$query) or ereg("Update",$query)) {

//mise à jour d'enregistrement(s)

echo 'Pour mettre à jour un enregistrement dans une table, sélectionnez la table,

l\'enregistrement désiré et choisissez "Modifier"';

} elseif (ereg("CREATE",$query) or ereg("create",$query) or ereg("Create",$query)) {

//création d'une table

echo 'La création de table est pour l\'instant interdite, contactez un administrateur.';

} elseif (ereg("DROP",$query) or ereg("drop",$query) or ereg("Drop",$query)) {

//suppression d'une table

echo 'La suppression de table est pour l\'instant interdite, contactez un administrateur.';

} elseif (ereg("ALTER",$query) or ereg("Alter",$query) or ereg("alter",$query)) {

//modification de la structure d'une table

echo 'La modification de table est pour l\'instant interdite, contactez un administrateur.';

} else {

echo 'Requête non valide';

}

}

echo '</div>';

?>

- suppr.php

<?

include ("config.php");

$query=$_GET['req'];

mysql_query($query);

?>

<script language="javascript">

alert("Suppression effectuée")

Page 55: Rapport de stage Développeur Logiciel

54

window.location='edit.php'

</script>

- table.php

<?

include ("config.php");

echo '<div align="justify">';

echo '<u><p align="center"><b>Liste des tables</b></p></u><br>';

$query="show tables";

$result=mysql_query($query);

$i=0;

while ($row=mysql_fetch_array($result)) {

$table[$i]=$row[0];

$i++;

}

$query="select count(*) from admin where aut=0";

$result=mysql_query($query);

while ($row=mysql_fetch_array($result)) {

$t=$row[0];

}

echo $i.' tables dont '.($t+1).' cachée(s)<br><br><br>';

for ($a=0;$a<$i;$a++) {

$query="select count(*) from ".$table[$a];

$result=mysql_query($query);

$$req="select aut from admin where nom_table='".$table[$a]."'";

$res=mysql_query($$req);

Page 56: Rapport de stage Développeur Logiciel

55

while ($row=mysql_fetch_array($res)) {

$aut[$a]=$row[0]; }

while ($row=mysql_fetch_array($result)) {

$title=$row[0].' enregistrement(s)'; }

if ($aut[$a]==1) {

echo '<li><a href="edit.php?id='.$table[$a].'" target="main"

title="'.$title.'">'.$table[$a].'</a>';

}}

echo '<br><br>';

echo '<p align="center"><a href="sql.php" target="_blank">Fenêtre SQL</a></p>';

echo '</div>';

?>

- edit.php

<?

include("config.php");

if (isset($_GET['id'])) {

$table=$_GET['id'];

$fields = mysql_list_fields($db, $table, $link);

$columns = mysql_num_fields($fields);

echo '<form action="modify.php?table='.$table.'" method="POST">';

echo '<div align="center"><u><b>'.strtoupper($table).'</b></u><br><br>';

echo '<table border=2 cellpadding=5><tr><td>Sélection</td>';

for ($i = 0; $i < $columns; $i++) { //affiche les entêtes des colonnes dans le tableau

echo '<td><p align="center">'.mysql_field_name($fields, $i) .'</p></td>';

}

Page 57: Rapport de stage Développeur Logiciel

56

echo '</tr>';

$query="select * from ".$table; //sélection de tous les champs de la table

$result=mysql_query($query);

while($row=mysql_fetch_array($result)) {

echo '<tr><td><p align="center"><input type="radio" value="'.$row[0].'"

name="id"></P></td>';

for ($i = 0; $i < $columns; $i++) {

if ($row[$i]=="") { //permet d'afficher les cases du tableau même si elles sont

vides

$row[$i]="&nbsp;"; }

echo '<td><p align="center">'.stripslashes($row[$i]).'</p></td>';

}

echo '</tr>'; }

echo '</table>';

echo '<p>Sélectionnez l\'action à effectuer</p>';

echo '<select size="1" name="action">

<option>Modifier</option>

<option>Supprimer</option>

<option>Ajouter</option>

</select>';

echo '<input type="submit" value="Valider"></form>';

echo '</div>';

} else {

echo 'Sélectionnez une table'; }

?>

Page 58: Rapport de stage Développeur Logiciel

57

- config.php

<?

$link=mysql_connect("localhost","ecolesaintetienne");

$db='admin';

mysql_select_db($db);

?>

Page 59: Rapport de stage Développeur Logiciel

58

INDEX

Liste des sites créés :

http://www.ecole-saint-etienne-espelette.fr/

http://www.hiribarren.com/

http://www.camping-manex.com/

http://www.location-leiza.com/

http://www.aubergedelacorniche.com/

http://www.hotel-bellevue64.fr/