Prog-Web1 MOD SDPK - 085908
Prog-Web1 MOD SDPK - 085908
Prog-Web1 MOD SDPK - 085908
IFATHEST/PANZI
Ass. PIERRE KIMVAMA
Ingénieur en Génie Informatique
Il s'agit d'un réseau international d'ordinateurs qui communiquent entre eux dans une toile dense
de relations et de connexions. Les différents ordinateurs branchés au réseau Internet peuvent
communiquer ensemble de façon transparente pour l'usager indépendamment des types
d'ordinateurs utilisés (Mac, PC, Unix ou autres), mais en utilisant cependant les logiciels
appropriés et surtout les protocoles standard.
Page 1
Notes de Cours de Langage de Programmation Web Ass. Ir. Pierre KIMVAMA
Contact + 243 835291539 ; 812 301 048 [email protected]
1.1. Historique
Internet est l’infrastructure de communication à l'échelle planétaire issue de
l'interconnexion de réseaux informatiques publiques et privés, il a été crée dans les années 70.
À l'origine, l’Internet relie les sites informatiques militaires des États-Unis.
• Tout au long des années 70, les laboratoires de recherche sont progressivement reliés au
réseau Arpanet.
• En 1970, le protocole NCP (Network Control Protocol) a été utilisé sur Arpanet afin de
pouvoir mettre en liaison des machines hétérogènes (Unix, IBM,...).
Page 2
1.1.3. Les années 80/90/2000 : d'Internet au WWW, une montée exponentielle
• En 1977, Internet devient une réalité car le TCP/IP est effectivement utilisé pour relier
divers réseaux à Arpanet. Le nombre d'ordinateurs connectés dépasse alors la centaine et
depuis, ce nombre ne cesse d'augmenter d'année en année.
• Le début des années 1990 marque la naissance d'Internet tel que nous le connaissons
aujourd'hui : le Web, un ensemble de pages en HTML (HyperText Markup Language)
mélangeant du texte, des liens et des images, accessibles à l'aide d'une URL (Uniform
Ressource Locator) en utilisant le protocole HTTP (HyperText Transfert Protocol).
• En 1992, le premier lien (on parle de lien hypertexte) vers le site Web du CERN est créé
sur le serveur de Fermilab aux États-Unis : la toile mondiale commence à se tisser. Les années
1990 ont vu le Net continuer à grossir à une vitesse exponentielle sous l'impulsion du Web.
• En 1993, Apparition du premier navigateur web (browser) par Netscape, supportant le
texte et les images. Cette même année, la NSF (National Science Foundation) crée une
compagnie pour enregistrer les noms de domaine.
• En 1993, on comptait 600 sites, ce chiffre dépasse 15 000 en 1995. Le WWW devient
le service le plus important sur Internet.
• En 2008, on compte 1,5 milliard d’internautes dans le monde, 1.3 milliard d’utilisateurs
d’email, 210 milliards d’emails envoyés par jour, 186,7 millions de site web, 133 millions de
blogs.
• Le chiffre d'affaires du commerce en ligne (e-commerce), qui a dépassé la barre des 20
milliards d'euros en 2008, devrait atteindre 30 milliards en 2010.
Page 3
Notes de Cours de Langage de Programmation Web Ass. Ir. Pierre KIMVAMA
Contact + 243 835291539 ; 812 301 048 [email protected]
Le service d'échange de fichiers permet de déposer des fichiers sur une machine distante,
mais aussi, et c'est le plus fréquent de télécharger des fichiers sur sa machine. La distribution
de logiciels gratuits, la diffusion d'images, de sons, de notes de cours pour les étudiants ou
d'articles scientifiques sont parmi les utilisations les plus courantes de ce service.
Telnet est plus ancien, et commence a être abandonné au profit de SSH pour des raisons
de sécurité : avec Telnet toutes les informations transmises transitent en clair sur le réseau, y
compris les mots de passe, ce qui permet à un éventuel pirate à l'écoute du réseau d'intercepter
Page 4
des données sensibles. À l'inverse, pour SSH toutes les données transmises sont cryptées et
donc illisibles par toute autre personne que le destinataire.
Un journal de bord personnel sur internet permettant de publier facilement des actualités (les
Articles ou Notes ou Billets ou Postes dans la langue des blogueurs) sur un sujet, de les illustrer
de façon multimédia (dessins, photos, vidéos, sons…) et de partager ses idées en recueillant des
commentaires sur ses articles.
Il s'agit d'un outil de recherche sur le Web constitué de Robots, (appelés encore bots, spiders,
crawlers ou agents) qui parcourent régulièrement les sites de façon automatique (sans
intervention humaine, ce qui les distingue des annuaires Web) pour découvrir de nouvelles
adresses (URL). Ils suivent les liens hypertextes (qui relient les pages les unes aux autres)
rencontrés sur chaque page atteinte.
• Baidu (le Google chinois) : 3,3 milliards de requêtes, soit 5,4% du total,
Page 5
Notes de Cours de Langage de Programmation Web Ass. Ir. Pierre KIMVAMA
Contact + 243 835291539 ; 812 301 048 [email protected]
Un annuaire Web (appelé également répertoire Web, annuaire Internet ou répertoire
Internet) est un site Web proposant une liste classée de sites Web. Le classement se fait dans
une arborescence de catégories, censée à couvrir tout ou une partie des centres d'intérêt des
visiteurs.
Les fichiers d'ordinateurs sont de deux types : ASCII ou binaires. Les premiers sont
constitués de caractères qui respectent les codes ASCII (American Standard Code for
Information
Interchange), donc lisibles à l’écran facilement. Les fichiers binaires contiennent des
informations codées directement en binaire (des 0 et des 1). Pour afficher ou exécuter un fichier
binaire, il faut utiliser un logiciel compatible avec celui qui l'a créé.
• PDF (Portable Document Format) [Type binaire]. Format du logiciel Acrobat d’Adobe.
• TXT [Type ASCII]. Par convention, on donne cette extension aux fichiers de texte
simple non formaté.
Page 6
• JPEG, JPG (Joint Photography Experts Group) [Type binaire]. Très fréquent sur
Internet, produit des fichiers très compacts grâce à son algorithme de compression
efficace mais qui provoque des pertes d'information. Utilisé pour produire des photos et
images texturées dans les pages Web.
• PNG (Portable Network Graphics) [Type binaire]. Appelé à remplacer les formats GIF
et JPEG.
• TIFF, TIF (Tagged Image File Format) [Type binaire]. Utilisé pour l'archivage d'images
de qualité. Utilise un algorithme de compression sans perte. Fichiers de grandes
dimensions.
• MIDI (Music Instrument Digital Interface) [Type binaire]. Norme pour transmettre des
informations musicales entre instruments électroniques et ordinateurs.
• MP3 (Moving Pictures Expert Group) [Type binaire]. Format public pour la
numérisation audio en haute-fidélité (bonne qualité).
• WMA, WAV (Waveform Audio File Format) [Type binaire]. Format utilisé par
Windows pour stocker des séquences sonores non compressées (WAV) ou multimédia
assez bien compressées (WMA).
Page 7
Notes de Cours de Langage de Programmation Web Ass. Ir. Pierre KIMVAMA
Contact + 243 835291539 ; 812 301 048 [email protected]
• MPEG, MPG (Moving Pictures Expert Group) [Type binaire]. Un standard de
compression vidéo et audio très répandu dans Internet.
• DivX [Type binaire], capable de compresser des fichiers vidéo volumineux en fichiers
plus légers.
• Un nom de domaine (une URL) accessible notamment par les moteurs de recherche
mais aussi par des sites partenaires et à travers différentes publications papier. C'est
pourquoi, l'adresse du type http://www.notresite.com doit être claire, courte et explicite.
• Un ensemble de pages statiques et/ou dynamiques reliées entre elles par des liens. Ces
pages seront développées dans une technologie dépendante de l'objectif et du contenu du
site.
• Quel est le public visé ? Est-ce un groupe d'amis, des personnes partageant les mêmes
idées ou de futurs clients ? Il faut donc ensuite cadrer le style : les informations
doiventelles être pointues ou vulgarisées ?
Page 8
• Que sera l'environnement cible des visiteurs : type de configuration (PC/Mac),
navigateur, outils disponibles (Pack office, décompresseur type Winzip, messagerie),
puissance des machines, performance et durée des connexions (l'accès à Internet se fait il
par modems ou via une ligne à haut débit ?).
A savoir qu’il existe des systèmes de gestion de contenu « CMS » : est une famille
de logiciels destinés à la conception et à la mise à jour dynamique de site web ou d'application
multimédia.
Compte rendu : menez une recherche sur les différents CMS du marché ainsi que leurs
fonctionnalités.
• Pages actives : il existe plusieurs technologies pour la création de pages actives (c'est à
dire capables de générer un contenu dynamique en fonction d'informations données par
le visiteur ou l'administrateur du site) : ASP, JSP, PHP et les CGIs avec PERL associées
à plusieurs SGBD (MYSQL, SQL Server, ACCESS, Oracle…).
Page 9
Notes de Cours de Langage de Programmation Web Ass. Ir. Pierre KIMVAMA
Contact + 243 835291539 ; 812 301 048 [email protected]
• Toute navigation doit être intuitive quel que soit le média. A ce titre, nous respecterons
les règles d'usage d'accès aux informations à savoir : maximum 3 clics et 7 grandes
rubriques d'informations par page. Le contenu et l'organisation des informations du site
devront donc s'y plier.
• De quelle façon peut-on rappeler les principaux éléments et sections du site ? Par une
bannière horizontale, verticale, un arbre de navigation ?
• Le référencement automatique assuré par des "spiders" programme qui scrute les pages
d'un site en s'appuyant sur les balises META situées dans la balise d'en-tête de page
<HEAD> et la description des liens et des images.
• Le référencement manuel, comme sur Yahoo, c’est le fait d’ajouter l’URL du site à la
liste d’URLs de ce moteur de recherche.
• De manière gratuite.
• De manière payante.
1.5.2. La gestion
Afin d'assurer la continuité du site, il est nécessaire de suivre son évolution, d'enrichir son
contenu et de corriger les éventuelles erreurs, c'est la tâche du webmaster.
Afin d'anticiper sur les modifications à apporter et de vérifier l'audience du site, nous
aurons recours à des outils statistiques. En effet, il est utile voir indispensable de quantifier et
qualifier le trafic du site. Ces outils sont soit fournis par l'hébergeur, ou bien disponibles (même
gratuitement) sur Internet, ils nous renseignent notamment sur :
• La provenance des visiteurs (pays, site référant, moteur de recherche).
• Les pages consultées, pendant combien de temps et à quelle heure.
• Le nombre de visites, visiteurs et pages vues.
Page 10
Chapitre II : Les bases du HTML
Le HTML (HyperText Markup Language) est le format de données conçus pour présenter des
pages web qui pouvant être lues par des navigateurs (Ex : Netscape, Internet Explorer, Mozilla Firefox,
Opera …).
C'est un langage de présentation de données, et non pas un langage de programmation. Il est figé,
c'est-à-dire qu'une fois le document chargé dans le navigateur, il ne répond à aucune action de
l'utilisateur sur le contenu de la page. Ce langage est pourvu d'un système de balisage (basé sur les
balises) qui va permettre de structurer les documents [4].
Une balise peut en plus comporter de zéro à plusieurs attributs. Les attributs sont des informations
complémentaires qui la caractérisent. Ils se présentent sous la forme
« nomattribut="valeur" ».
Chaque balise ouverte doit être fermée, cependant il existe des exceptions. On distingue deux
types de balises :
• Les balises simples.
• Les balises doubles.
La première ligne du document s'appelle le DOCTYPE. C'est une balise indispensable pour
conserver la compatibilité du rendu de votre page sur les différents navigateurs modernes.
2.5. Le DOCTYPE
Il sert d'une part à déclarer quel "langage", "grammaire", ou norme on applique à notre page.
Cette déclaration nous permet de soumettre nos pages au validateur du W3C (World Wide Web
Page 12
Consortium) qui vérifie que notre code HTML ne comporte aucune erreur de syntaxe (balises mal
Page 13
2.7.1.4. Modifier la couleur du texte
• En hexadécimal de type RVB et précédées d'un dièse (#) ; Exemples : #ff0000 =>
On a tendance à écrire des familles de polices plutôt qu'une seule police. En effet, il se peut que sur
un système, différent du notre, la police choisie ne soit pas installée. On sépare alors les différentes
polices par une virgule. Texte en verdana ou sans-serif
<font face="verdana,sans-serif">Ce texte sera en verdana ou en sans-serif si
verdana n'est pas installée.</font>
Page 14
2.8. Les images
Pour afficher une image en HTML, on utilise la balise « <img> ». Elle admet des différents
attributs, dont les plus importants sont « src » et « alt ».
L'attribut « src » permet de renseigner le chemin de l'image, qui peut être absolu ou relatif. L'attribut
« alt » affiche un texte alternatif à la place de l'image dans le cas où, pour une raison ou une autre, celle-
ci ne peut pas être chargée. Il aide de plus les moteurs de recherche à référencer l'image. Afficher une
image
<img src="adresse/de/l/image" alt="Description de l'image">
On distingue deux types de liens, les liens externes et les liens internes.
Un lien externe est un lien hypertexte qui renvoie vers une autre page. Cette autre page peut être
une page du même.
2.9.2. Les liens internes
Un lien interne est un lien qui renvoie vers la même page, mais pas forcément au même endroit de
la page.
Attention : A ne pas confondre "liens internes" avec "lien interne au site" !
Page 15
Un lien interne au site est en général un lien externe à la page.
Les ancres permettent de naviguer à l'intérieur d'une même page.
Pour faire une ancre, il faut utiliser le signe dièse (#) suivi d'un mot-clef. Ce mot-clef sera repris
dans l'attribut « id » d'une balise à laquelle on veut faire une ancre :
Exemple d'une ancre interne
<a href="#motClef">Texte de mon ancre</a>
<h2 id="motClef">Texte vers lequel l'ancre est renvoyée</h2>
Ou bien
<a name=" motClef "> Texte vers lequel l'ancre est renvoyée </a>
Si on veut faire une ancre vers une page externe, il suffit de rajouter l'adresse de destination dans la
balise de lien :
Exemple d'une ancre externe
<a href="adresse/de/destination.html#motClef">Texte de mon ancre</a>
Ce type de liens ouvre le logiciel de messagerie par défaut des visiteurs.
Exemple d'un lien vers une adresse e-mail avec un sujet par défaut
<a href="mailto:[email protected]?subject=Sujet du mail">Ecrivez_moi</a>
Exemple d'un lien vers une adresse e-mail avec un corps par défaut
<a href="mailto:[email protected]?body=Corps du mail">Ecrivez-moi</a>
Exemple d'un lien vers une adresse e-mail avec un sujet et un corps par défaut
<a href="mailto:[email protected]?subject=Sujet du mail&body=Corps du
mail">Ecrivez-moi</a>
Page 16
Les Protocoles
Un protocole est un ensemble de conventions nécessaires qui permet à deux entités distantes de
communiquer entre eux. Il diffère selon le type de données échangées. Il existe de nombreux protocoles
disponibles par lien hypertexte, en voici une liste non exhaustive :
Signification
Protocole Description Syntaxe utilisée
de l'acronyme
HyperText
Permet de transférer des données sur
HTTP Transfer <a href="http://...">..</a>
l'Internet.
Protocol
HyperText Permet de transférer des données sur
Transfer l'Internet en permettant de vérifier
HTTPs <a href="https://...">..</a>
Protocol l'identité du site grâce à un certificat
Secured d'authentification.
Simple Mail
SMTP Transfer Permet de transférer des e-mails. <a href="mailto:..">..</ a>
Protocol
File Transfer
FTP Permet de transférer des fichiers. <a href="ftp://...">...</a>
Protocol
Internet Relay Permet de se connecter à un serveur de
IRC <a href="irc://...">...</a>
Chat Chat.
• Pour éviter d'avoir le cadre bleu autour d'une image lorsqu'elle est dans un lien, il suffit de
renseigner l'attribut « border » à "0" :
• Si on veut avoir une info bulle qui s'affiche sur le lien lors du passage de la souris, on peut
renseigner l'attribut « title » :
Info bulle sur le lien
<a href="adresse/de/destination.html" title="Description de la page cible">Texte
du lien</a>
Elles sont démarquées par la balise « <ul> » et chacun des items est entouré de la balise «<li>» :
Exemple de liste non ordonnée
<p>Ma liste de courses :</p >
<ul>
<li>Champignons</li>
<li>Avocat</li>
<li>Dentifrice</li>
<li>Céréales</li>
</ul>
Exempledeliste
<p>Ma liste de courses :</p >
<ul type="square" >
<li>Champignons</li>
<li>Avocat</li>
<li>Dentifrice</li>
<li>Céréales</li>
</ul>
Page 18
Les puces en image
Pour avoir une puce sous forme d’image, il suffit d'utiliser cette image pour remplacer la puce
originale. Cependant cette méthode n'est possible qu'à l'aide de CSS et de la propriété list-styleimage
(Voir chapitre IV).
Exemple de liste non ordonnée
<p>Ma liste de courses :</p >
<ul>
<li>Champignons</li>
<li>Avocat</li>
<li>Dentifrice</li>
<li>Céréales</li>
</ul>
Elles sont introduites par la balise <ol> et chacun des items est encadré par la balise <li> :
Exemple de liste ordonnée
<p>Top 3 du tiercé :</p>
<ol>
<li>Jolly</li>
<li>Tonnerre</li>
<li>Tornade</li>
</ol>
Il existe cinq manières différentes de numéroter les listes ordonnées. On renseigne le type de
numérotation avec l'attribut type de la balise <ol>.
Les types sont :
• 1 : Numérotation par les chiffres arabes (par défaut).
• I : Numérotation par les chiffres romains.
• i : Numérotation par les chiffres romains minuscules.
• A : Numérotation par les lettres de l'alphabet.
• a : Numérotation par les lettres de l'alphabet minuscules.
Dans l'exemple précédent, nous avons donc vu une liste ordonnée avec une numérotation par les
chiffres arabes. Voici à quoi ressemblent les autres :
Page 19
Exempledelisteordonnée
<p>Top 3 du tiercé :</p>
<ol type="I" >
<li>Jolly</li>
<li>Tonnerre</li>
<li>Tornade</li>
</ol>
Exempledelisteordonnée
<p>Top 3 du tiercé :</p>
<ol type="i" >
<li>Jolly</li>
<li>Tonnerre</li>
<li>Tornade</li>
</ol>
Il est tout à fait possible, pour une raison ou une autre, de modifier le numéro de départ par lequel
va s'incrémenter la numérotation.
Pour cela, il suffit de préciser une valeur à l'attribut start de la balise <ol>. Cette valeur doit dans
tous les cas être numérique :
Exemple de liste ordonnée
<p>Top 3 inversé du tiercé :</p>
<ol type="1" start="8">
<li>Tortue</li>
<li>Escargot</li>
<li>Limace</li>
</ol>
L'imbrication des listes permet une présentation claire et détaillée d'un menu ou d'un sommaire
par exemple. On peut imbriquer les listes non ordonnées et ordonnées sans distinction et même les
mélanger :
Page 20
Exempledelistesimbriquées:
<ol type="I" >
<li>La genèse</li >
<li>La vie
<ol type="A" >
<li>L'enfance</li>
<li>L'adolescence</li>
<li>Le passage à l'âge adulte
<ul>
<li>Le jeune adulte</li >
<li>La crise de la quarantaine</li >
</ul>
</li>
<li>La vieillesse</li >
</ol>
</li>
<li>La mort</li>
</ol>
La principale utilisation des listes de nos jours, se fait par les listes non ordonnées pour la création
de divers menus. L'imbrication de ces listes non ordonnées couplée avec un soupçon de CSS permet
de faire des menus à multiples niveaux d'affichage, comme les menus déroulants.
D'autre part, on peut retrouver les listes ordonnées principalement pour la rédaction de sommaires.
Page 21
Chapitre III Les notions avancées du HTML
Un tableau est délimité par la balise « <table> ». Le contenu d'un tableau HTML est généré
horizontalement. C'est-à-dire qu'il n'est pas créé colonne par colonne mais ligne par ligne. Pour créer
un tableau, nous commençons par créer des lignes grâce aux balises « <tr> ». Puis nous insérons dans
ces lignes les cellules du tableau grâce aux balises « <td> ». Le contenu (textes, images, autres balises)
se trouve uniquement dans les balises « <td> » et ne doit se trouver en aucun cas en dehors.
Donc pour avoir un tableau d'une cellule, soit une ligne et une colonne, on obtient ce code :
Tableau d'une cellule
<table border="1">
<tr> <td>Contenu de la cellule</td> </tr>
</table>
Et pour un tableau de deux lignes et deux colonnes :
Page 22
Tableau de deux lignes et deux colonnes
<table border="1">
<tr>
<td>Cellule 1</td>
<td>Cellule 2</td>
</tr>
<tr>
<td>Cellule 3</td>
<td>Cellule 4</td>
</tr>
</table>
Par défaut, la bordure n'est pas visible. Dans les codes précédents on a rajouté l'attribut « border
» à la balise « <table> » pour la faire apparaître. On peut évidemment agrandir la bordure en
augmentant la valeur.
Il y a encore deux éléments (définis par défaut mais modifiables) :
L'espace entre les cellules ou l'épaisseur des lignes du quadrillage <TABLE cellspacing=?>
Exemple :
<TABLE border=2 cellspacing= 10>
<TR>
<TD>1</TD>
<TD>2</TD>
</TR>
<TR>
<TD>3</TD>
<TD>4</TD>
</TR>
</TABLE>
<TABLE border=2 cellpadding=10>
<TR>
<TD>1</TD>
<TD>2</TD>
</TR>
<TR>
<TD>3</TD>
<TD>4</TD>
</TR>
</TABLE>
Pour décrire le contenu d'un tableau, par exemple, pour expliquer dans notre premier
exemple de tableau qu'il s'agit des notes de la classe de TI20, il faut placer la balise «<caption>»
directement après l'ouverture du tableau. Cette balise prend l'attribut « align » qui accepte comme
Page 23
valeurs « top » (par défaut), « bottom », « left » et « right », en fonction de l'endroit où l'on veut
afficher cette légende.
Dans l'exemple des notes de la classe de TI20, on remarque que la première ligne peut faire
office d'en-tête. En effet, elle renseigne sur le contenu de chacune des colonnes et n'a donc pas le même
genre de contenu que tout le reste du tableau.
Pour préciser au navigateur qu'il s'agit donc de cellules spéciales, on va les modifier en remplaçant pour
cette ligne seulement les balises « <td> » par des balises « <th> » :
On distingue deux types de fusion : la fusion horizontale où sont mises en jeu deux (ou plus)
colonnes, la fusion verticale où sont mises en jeu deux (ou plus) lignes. Dans les deux cas, elle s'opère
sur les cellules, donc sur la balise «<td> ». Elle se traduit par l'utilisation de l'attribut « colspan » dans
le cas d'une fusion horizontale et par l'attribut « rowspan » dans le cas d'une fusion verticale.
Ces attributs prennent pour valeurs le nombre de cellules à fusionner.
Exemple d'utilisation de colspan
<table border="1" >
<tr>
<td colspan="5">Cellule qui se repend sur 5 colonnes</td >
</tr>
<tr>
<td>Colonne 1</td >
<td>Colonne 2</td >
<td>Colonne 3</td >
<td>Colonne 4</td >
<td>Colonne 5</td >
</tr>
</table>
La somme des « colspan » de chaque ligne doit être identique à toutes les autres lignes.
En ce qui concerne l'attribut « rowspan », on aurait un code tel que :
Exemple d'utilisation de rowspan
<table border="1" >
<tr>
<td rowspan="2">Cellule sur deux lignes</td >
<td>Ligne 1 - Colonne 2</td >
<td>Ligne 1 - Colonne 3</td >
<td>Ligne 1 - Colonne 4</td >
</tr>
<tr>
<td>Ligne 2 - Colonne 2</td >
<td>Ligne 2 - Colonne 3</td >
<td>Ligne 2 - Colonne 4</td >
</tr>
</table>
Page 24
On pourrait aller plus loin en combinant les deux techniques sur un seul et même tableau :
Exercice : réalisez le tableau suivant
Correction
<table border="1">
<tr>
<td colspan="3">Cellule 1</td>
<td>Cellule 2</td>
</tr>
<tr>
<td rowspan="3">Cellule 3</td>
<td>Cellule 4</td>
<td>Cellule 5</td>
<td>Cellule 6</td>
</tr>
<tr>
<td>Cellule 7</td>
<td colspan="2" rowspan="2">Cellule 8</td>
</tr>
<tr>
<td>Cellule 9</td>
</tr>
</table>
On remarque que le code est devenu extrêmement compliqué et que la moindre erreur de fusion de notre
part entraînerait une interprétation du tableau complètement fausse par les navigateurs.
3.2.3. L'utilité des tableaux
Grâce aux techniques de fusion vues précédemment, il y a quelques années, la tendance était de
profiter de ce système pour mettre en page assez rapidement l'ensemble de son site web. Cependant, si
cette méthode peut séduire, elle est fortement déconseillée.
En effet, les tableaux sont censés (et doivent) être utilisés uniquement pour l'affichage de données
tabulaires.
Dans le cas d'une mise en page, on conseille d’adopter la solution du couple "DIV + CSS". (Voir
chapitre 4).
On peut facilement voir dans notre dernier exemple où l'on combine les deux techniques de fusion,
que notre code sera difficilement maintenable dans le cas d'une retouche ou de l'ajout d'une nouvelle
cellule.
Page 25
Voici quelques raisons pour lesquelles il ne faut pas utiliser les tableaux pour la mise en page :
• Ils alourdissent les pages HTML : beaucoup de balises pour finalement y mettre peu de contenu.
• Ils sont très difficiles à maintenir dans le cas d'une retouche.
• Ils nuisent à l'accessibilité : problème d'interprétation des navigateurs spécialisés destinés aux
malvoyants par exemple.
• Ils sont mal gérés par les navigateurs à l'impression dans le cas de tableaux complexes.
Page 26
On renseignera aussi l'attribut « name » qui sera le nom du champ, celui qui va permettre de retrouver
la valeur lors de l'envoi du formulaire.
D'autres attributs sont disponibles, comme « value » qui permet d'attribuer une valeur par défaut au
champ, « size » qui permet de préciser la taille du champ en nombre de caractères, « maxlength » qui
sert à limiter le nombre de caractères possibles, « readonly » qui prend pour seule valeur « "readonly"
» et verrouille le champ, « disabled » qui prend pour seule valeur « "disabled" » et permet de
désactiver le champ.
Lorsqu'un champ est défini en "disabled", sa valeur n'est pas envoyée au serveur.
Voici quelques exemples de champs texte :
Exemples de champs texte
<input type="text" size="5" name="code_postal" maxlength="5"> <input type="text"
name="nom_champ" readonly="readonly" value="Champ vérouillé">
<input type="text" name="login" value="Entrez ici votre login" size="20">
<input type="password" name="mdp">
Contrairement au champ de texte monoligne, le textarea est une balise double et son contenu est
écrit entre les balises ouvrantes et fermantes et non dans un attribut value.
Deux attributs sont nécessaires au « <textarea> » : « rows » qui contient le nombre de lignes et « cols
» qui contient le nombre de colonnes.
Tout comme le champ de texte monoligne, on peut, rajouter les attributs « name », « readonly » et «
disabled ».
L'attribut « maxlength » n'existe pas pour cette balise, et pour en limiter le nombre de caractères il est
possible de passer par du JavaScript. Exemples de champs texte multilignes
<textarea name="commentaire" rows="5" cols="80"></textarea>
<textarea name="sujet" rows="6" cols="100">Texte par défaut</textarea>
Il nous arrivera souvent de vouloir envoyer des données au serveur de manière transparente pour le
visiteur. On utilisera alors un champ caché, qui ne sera pas affiché dans le navigateur du visiteur mais
dont les données seront envoyées. Attention, cette balise apparaît tout de même dans le code source de
la page.
Pour cela, on utilise la balise « <input> » avec « "hidden" » comme valeur de l'attribut « type ». Il est
aussi nécessaire de renseigner l'attribut « name » pour retrouver ces données cachées du côté du serveur
ainsi que l'attribut « value » qui va contenir ces données.
Page 27
Exemple de champ caché
<input type="hidden" name="clef" value="a182f7d8e844d956a65b18e84f">
Pour permettre à l’internaute, d'envoyer des fichiers par l'intermédiaire du formulaire, que ce soit
en pièce jointe d'un e-mail ou le chargement d'une image sur le serveur, on utilise la balise « <input>
» dont l'attribut « type » est renseigné à « "file" ».
Ceci fait, un champ avec un bouton « "Parcourir" » qui sera disponible.
Mais pour que le champ soit opérationnel, il faut impérativement renseigner l'attribut « enctype » de la
balise <form> à"multipart/form-data".
Il est aussi plus qu'utile de préciser l'attribut « name » du champ « "file" ». On peut aussi renseigner
l'attribut « size » qui affecte la taille du champ dans lequel sera écrit le nom du fichier.
Exemple de champ file
<input type="file" name="image">
Il est également possible de limiter le poids du fichier en rajoutant un champ caché dans le
formulaire contenant le champ "file". Ce champ caché doit avoir pour name la valeur
"MAX_FILE_SIZE" et pour value le poids maximum en octet.
Limitation du poids du champ file
<input type="hidden" name="MAX_FILE_SIZE" value="20000">
Cette limitation n’affranchit pas de faire la vérification côté serveur ! En effet, le code HTML
peut facilement être modifié par les visiteurs, donc cette valeur aussi.
Page 28
<p>
<input type="radio" name="civilité" value="mlle"> Mademoiselle
<input type="radio" name="civilité" value="mme"> Madame
<input type="radio" name="civilité" value="mr"> Monsieur
</p>
<p>
<input type="radio" name="genre" value="homme" checked="checked"> Homme
<input type="radio" name="genre" value="femme"> Femme
<input type="radio" name="genre" value="et"> Alien
<input type="radio" name="genre" value="indéfini"> Indéfini
</p>
Si on donne un nom différent aux boutons d'un groupe, le navigateur ne sait pas qu'ils
appartiennent au même groupe, donc plusieurs choix seront possibles et on perd toute l'utilité
des boutons radio
Page 29
Le bouton simple
Il est défini par l'attribut « type » des balises « <input> » et « <button> » ayant pour valeur «
"button" ».
Ce bouton n'est utile que lors d'appel de scripts JavaScript au moment du clic. Il n'a aucune autre
fonction particulière. Exemples de boutons simples :
Exemples de boutons simples
<input type="button" name="addition" value="Additionner" onclick="addition();">
<button type="button" name="multiplication"
onclick="multiplication();"><b>Multiplier</b></button>
Le bouton d'envoi
Le bouton d'envoi sert, comme son nom l'indique, à envoyer les données du formulaire au serveur.
C'est celui qui va permettre de valider le formulaire.
Il est caractérisé par la valeur "submit" de l'attribut type des balises <input> et <button>.
Exemples de boutons d'envoi
<input type="submit" name="envoyer" value="Valider">
<button type="submit" name="soumettre">Soumettre<br>les réponses</button>
Le bouton image
Le bouton image se comporte exactement comme un bouton d'envoi, c'est-à-dire qu'il sert à la
validation du formulaire. Il sert à personnaliser un bouton.
Il est défini par l'attribut « type » de la balise « <input> » ayant pour valeur « "image" » et l'on renseigne
l'adresse de l'image avec l'attribut « src ». C'est le seul bouton qui ne peut pas être géré par la balise «
<button> ».
Ce bouton sert à réinitialiser toutes les valeurs du formulaire. Il est caractérisé par la valeur «
"reset" » de l'attribut « type » des balises « <input> » et « <button> ».
Page 30
2.3. Les listes déroulantes
Les listes permettent de laisser un choix aux visiteurs, au même titre que les boutons radio ou les
cases à cocher, mais sont plus pratiques lorsqu'il s'agit de proposer un grand nombre de choix.
On distingue deux types de listes, les listes normales et les listes déroulantes.
Les deux sont introduites par la balise « <select> » qui comprend les différents choix sous forme de balise
« <option> » dont on renseigne la valeur qui sera envoyée au serveur grâce à son attribut « value ».
On peut même suggérer une proposition par défaut en précisant l'attribut «selected » de la balise
«<option> » de notre choix. Par défaut, une liste est déroulante.
On peut (doit) renseigner le nom de la liste avec l'attribut « name ».
Exemple de liste
<select name="couleur_yeux">
<option value="bleus">Bleus</option>
<option value="bruns" selected="selected">Bruns</option>
<option value="verts">Verts</option>
<option value="noisettes">Noisettes</option>
<option value="gris">Gris</option>
<option value="vairons">Vairons</option> </select>
Cette liste est donc une liste déroulante avec un seul choix possible parmi les six proposés.
On peut rendre cette liste non déroulante en rajoutant l'attribut « size » qui prend pour valeur le nom de
choix à afficher, par exemple "3".
Ce qui donne :
Exemple de liste
<select name="couleur_yeux" size="3">
<option value="bleus">Bleus</option>
<option value="bruns">Bruns</option>
<option value="verts" selected="selected">Verts</option>
<option value="noisettes">Noisettes</option>
<option value="gris">Gris</option>
<option value="vairons">Vairons</option>
</select>
Par défaut, un seul choix est possible. Pour pouvoir sélectionner plusieurs choix, comme dans le cas de
cases à cocher, il suffit de rajouter l'attribut « multiple » qui prend pour seule valeur « "multiple" ».
Page 31
Exemple de liste à choix multiple
<select name="matieres_preferees" size="5" multiple="multiple">
<option value="maths">Maths</option>
<option value="français">Français</option>
<option value="anglais">Anglais</option>
<option value="histoire">Histoire</option>
<option value="sport">Sport</option>
<option value="dessin">Dessin</option>
<option value="musique">Musique</option>
<option value="physique">Physique</option>
<option value="sciences naturelles">Sciences naturelles</option> </select>
Le choix multiple ne peut pas se faire sur une liste déroulante. L'attribut size doit être renseigné
pour que le multiple fonctionne.
3.4. Le XHTML
3.4.1. Définition
eXtensible HyperText Markup Language, dit XHTML, est un langage de balisage servant à écrire
des pages pour le World Wide Web. Il est conçu à l'origine comme le successeur d'HTML, XHTML se
fonde sur la syntaxe définie par XML, plus récente, mais plus exigeante que celle définie par SGML
(langage normalisé de balisage généralisé) sur laquelle repose HTML : il s'agit en effet de présenter un
contenu affichable non seulement par les ordinateurs classiques, mais également sans trop de
dégradation par des PDA (Personal Digital Assistant) [1].
3.4.2. Validation W3C
Le W3C, Worl Wide Web Consortium, est un organisme travaillant sur la mise en place de
standards Web.
Ce qui nous intéresse plus particulièrement, ici, est leur système de validation de code source.
Pour valider le code source, le système du W3C, va vérifier la syntaxe du code conformément aux règles
établies.
Ce n'est pas dénué de sens de valider sa page:
• Permet d'avoir un code portable, compatible avec la plupart des navigateurs.
• Permet d'avoir un code standardisé et connu de tout le monde.
• Permet une meilleure accessibilité.
Une des particularités des langages de la famille XML est de pouvoir définir ses propres balises
par l’intermédiaire d’un DTD (Document Type Definition). La référence à un DTD est indispensable
car il contient la liste et la définition des balises utilisées dans le document.
Page 32
Tout document XHTML devra donc commencer avec une balise qui indique à l’agent utilisateur (le
logiciel de navigation) comment interpréter les autres balises du document. Voici un exemple de
déclaration de DOCTYPE.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Espace de nommage (namespace)
La déclaration du type de document XHTML doit être suivie par la déclaration de l’espace de
nommage suivant, inséré dans l’élément html :
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
Le DTD se place au début de tout document XHTML. La déclaration du DOCTYPE peut parfois être
précédée du prologue XML inséré en tout début du document :
<?xml version="1.0" encoding="iso-8859-1"?>
Un des rôles du prologue XML est de spécifier le type d’encodage des caractères qui est utilisé à
l’intérieur du document. C’est l’encodage qui est spécifié lors de l’enregistrement du document. Si le
prologue est oublié, on peut tout aussi bien spécifier le type d’encodage en utilisant, à cet effet, un
élément « meta » :
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
3.5. Syntaxe
Le document DOIT comporter au minimum les éléments de structure html, head et body.
De plus, l’élément de titre title DOIT être présent dans l’élément head.
Le XML est très rigoureux quant à la structure du document. La structure de base d’un document
XHTML est :
<!DOCTYPE ...>
<html ... >
<head> ... <title> ... </title> ... </head>
<body>
...
</body>
</html>
XML étant sensible aux majuscules/minuscules (case sensitive), toutes les balises du XHTML
doivent être écrites en minuscules, tant pour les éléments que les attributs. Par contre, les valeurs
peuvent ne pas respecter cette règle.
XHTML HTML
<p>Bonjour</p> <P>Bonjour</P>
Page 33
<title>Le titre</title> <TITLE>Le titre</TITLE>
• La valeur des attributs doit toujours être écrites entre des guillemets (et ce même pour des
valeurs numériques).
XHTML HTML
<table colspan="4"> <table colspan=4>
<a href="test.HTM">Test</a> <A HREF=test.HTM>Test</A>
• Les balises d’images IMG doivent TOUJOURS comporter l’attribut alt pour le texte alternatif.
XHTML HTML
<img src="image.gif" alt="Mon image" /> <img src="image.gif">
• A toute balise d’ouverture doit correspondre une balise de fermeture.
XHTML HTML
<p>Bonjour</p> <p>Bonjour
<ul> <ul>
<li>1</li> <li>1
<li>2</li> <li>2
</ul> </ul>
L’utilisation d’une seconde balise fermante n’est pas en théorie erronée, par exemple
<br></br>,mais les navigateurs des anciennes générations peuvent
ne pas l’interpréter correctement,
c’est pourquoi <br /> (avec un espace avant la barre oblique /) est
conseillé. Il en est de même pour
les balises input, hr, meta et link :
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="styles.css" type="text/css" />
• Les balises doivent être correctement imbriquées.
XHTML HTML
<b><i>gras et italique</i></b> <b><i>gras et italique</b></i>
La règle générale est la suivante : la dernière balise
ouverte doit être la première refermée.
Page 34
• On ne doit pas utiliser de notations compactes ou raccourcies dans les attributs.
XHTML HTML
<hr noshade="noshade" /> <hr noshade>
<input checked="checked"> <input checked>
<option selected="selected"> <option selected>
<frame noresize="noresize"> <frame noresize>
Pour identifier un élément comme A, APPLET, FRAME, IFRAME, IMG, et MAP on utilise l’attribut
‘id’.
XHTML HTML
<a id="haut">Ancre</a> <a name="haut">Ancre</a>
Toutefois, on notera que pour garder une compatibilité avec les navigateurs des générations précédentes,
on peut garder à la fois name et id avec les mêmes attributs comme ceci
Mais cette méthode n’est valide que dans un document utilisant un DTD XHTML 1.0
« Transitional ».
Page 35
Chapitre IV : Les feuilles de style
4.1. Introduction
Le langage CSS (Cascading Style Sheets) est utilisé pour définir l’aspect futur des sites web,
comme par exemple la couleur du fond de la page ou le type de police.
Plus concrètement, le CSS (ou feuille de style) est un document numérique qui va pouvoir spécifier
toutes les caractéristiques de mise en forme du document lié à la balise à laquelle elle s'applique.
Exemple concret
Dans un document d'une certaine importance, il arrive fréquemment que l'on attribue à certains
éléments des caractéristiques de mise en forme identiques. Par exemple, les noms des chapitres seront
mis en police Arial, en gras et en couleur bleu.
On peut imaginer qu’on peut donner à cette définition de mise en forme un nom soit "titre" et qu'à
chaque nouveau chapitre, plutôt que d'écrire chaque fois le nom du titre et puis le mettre en Arial, gras,
bleu, on peut affecter au nom du chapitre cette mise en forme, déjà défini, sous le nom de "titre".
Cette définition de mise en forme particulière, on va l'appeler feuille de style.
<H1><B><FONT COLOR=blue>Titre1</FONT></B></H1> STYLE des titres
<H2><B><FONT COLOR="green">- A -</FONT></B></H2> STYLE sous-titres
<H3><B><FONT COLOR="red">...a....</FONT></B></H3> STYLE du texte
<H1><B><FONT COLOR=blue>Titre2</FONT></B></H1> STYLE des titres
<H2><B><FONT COLOR="green">- B-</FONT></B></H2> STYLE sous-titres
<H3><B><FONT COLOR="red">...b....</FONT></B></H3> STYLE du texte
On parle :
• de feuilles de style [style sheets ] car le but du jeu est d'en définir plusieurs.
• de feuilles de style en cascade [Cascading Style Sheets ou CSS] car en cas de styles
identiques, un ordre de priorité sera déterminé par le browser
Les apports des feuilles de style peuvent être résumés comme suit [2]. :
Page 36
• Réduction du temps de chargement des pages.
• Dépassement des certaines insuffisances du langage Html (contrôle des polices, contrôle de la
distance entre les lignes, contrôle des marges (sans devoir utiliser de tableaux ou de balise
<DD>...) et ainsi augmenter la créativité des écrivains du Web.
• Permettre le positionnement au pixel près du texte et/ou des images..
4.3. Définition
La syntaxe d'un style est toujours la même, elle précise la balise à laquelle le style va s'appliquer, et
les différents attributs du style. Les attributs sont enfermés entre deux accolades ou deux guillemets
(précédés de Style=) selon les cas, et chacun des attributs est séparé par un point virgule. On donne la
valeur de l'attribut par la syntaxe suivante "nom de l'attribut: valeur de l'attribut" balise {propriété de
style: valeur; propriété de style: valeur}
Exemple :
Donc ici, la balise H3 sera en Arial et en italique. Et dans le document en question, toutes les balises
<H3> auront comme style Arial et italique.
NB :
H3 {font-family: Arial;
font-style: italic; font-
color: green}
• On peut attribuer plusieurs valeurs à une même propriété. Dans ce cas, on séparera les différentes
valeurs par des virgules.
• On peut attribuer un même style à plusieurs balises (séparées par des virgules).
Page 37
4.5. CSS Globale
• L'attribut type="text/css" informe que ce qui suit est du texte et qu'il s'agit de cascading style
sheets (css).
• La balise Html de commentaires <!-- ... -->, empêche les browsers qui ne connaissent pas les
feuilles de style, d'interpréter ces instructions. Les informations à l'intérieur des tags de
commentaires seront ignorées par ces browsers.
• Pour les commentaires à propos des feuilles de style, on utilisera la convention désormais
classique /* commentaires */ de (C, C++, Javascript...).
Une feuille intra-ligne s'insère directement à côté de la balise qu'elle définit, elle ne constitue
donc pas véritablement une feuille, simplement elle permet localement de fixer des attributs à une partie
d'un document. Sa déclaration est un peu particulière, en voici une (notez la forme Style=" ") :
<HTML>
<BODY>
<H1 style="font-family: Arial; font-style: italic"> blabla </H1>
</BODY>
</HTML>
Signalons que:
Page 38
• Le style Arial, italique n'affectera que cette seule balise H1.
• La syntaxe est légèrement différente de la précédente.
• L'écriture : <STYLE type="text/css">H1 { "font-family: Arial; font-style: italic" }</STYLE>
fonctionne aussi.
Une feuille liée va se déclarer à part, dans un fichier avec une extension .css qui sera mis à côté
des autres documents dans le répertoire du site web. Cette feuille de style sera valable pour toutes les
pages du site qui l'appelleront dans les balises HEAD. C'est un outil très puissant pour uniformiser la
mise en pages d'un grand nombre de documents.
Principe :
On crée d'abord, dans le répertoire du site, un fichier avec l'extension .css soit styles.css qui contiendra
toutes les feuilles de style.
TD {font-family:Arial,Helvetica; font-size:10pt}
Ensuite, on crée une page soit page.htm avec dans la <HEAD> un lien vers ce fichier CSS :
<HTML>
<HEAD>
<LINK rel=stylesheet type="text/css" href="styles.css">
<HEAD>
Commentaires :
Page 39
Bibliographie & Webographie
[1] Christophe Porteneuve, Bien developers pour le Web 2.0, ©Groupe Eyrolles, 2007.