Cours Internet
Cours Internet
D .Mailliet
MIAGE 2 ème année
Cours Internet...................................................................................................................................................................................1
Cours Internet...................................................................................................................................................................................7
I. Introduction..............................................................................................................................................................................7
A. Logiciels utilisés..............................................................................................................................................................7
1. Editeur de Textes.............................................................................................................................................................7
2. Navigateur........................................................................................................................................................................7
3. Serveur http......................................................................................................................................................................7
4. Interprète Php ..................................................................................................................................................................7
5. Serveur de base de données MySQL .............................................................................................................................7
6. Installation des logiciels..................................................................................................................................................7
a) Sous Windows.............................................................................................................................................................7
b) Sous Linux...............................................................................................................................................................7
B. Objectifs du cours : quelques « langages » pour Internet .............................................................................................7
1. Seul le client est utile ......................................................................................................................................................8
L’ HyperText Markup Language .......................................................................................................................................8
a) Les feuilles de style.....................................................................................................................................................8
b) Le javascript ............................................................................................................................................................8
c) Les applets java ...........................................................................................................................................................8
2. serveur(s) nécessaire(s) ...................................................................................................................................................8
a) Le Php ..........................................................................................................................................................................8
b) Php - MySql ............................................................................................................................................................8
C. But de l’enseignement.....................................................................................................................................................8
D. Clients et Serveurs...........................................................................................................................................................8
1. Exemple ...........................................................................................................................................................................8
2. Client seul. .......................................................................................................................................................................9
3. Client et serveur...............................................................................................................................................................9
Bonjour......................................................................................................................................................................................... 10
4. Fonctionnement Résultat ............................................................................................................................................. 11
E. Javascript ou Php ?....................................................................................................................................................... 11
1. Exemple 1 ..................................................................................................................................................................... 11
2. Exemple 2 ..................................................................................................................................................................... 11
3. Exemple 3 ..................................................................................................................................................................... 11
II. Attention à la casse........................................................................................................................................................... 12
III. Html................................................................................................................................................................................... 13
A. Structure d'un document HTML.................................................................................................................................. 13
B. Le laxisme du HTML................................................................................................................................................... 14
C. Présentation d’un document HTML............................................................................................................................ 14
D. Indentation ou pas ........................................................................................................................................................ 15
E. Liste des balises et des attributs................................................................................................................................... 15
F. Du style dans le texte ................................................................................................................................................... 33
1. Les titres........................................................................................................................................................................ 33
Mon titre en H1 ....................................................................................................................................................................... 33
Mon titre en H2................................................................................................................................................................... 33
Mon titre en H3............................................................................................................................................................... 33
Mon titre en H4........................................................................................................................................................... 33
2. Les différents styles de caractères ............................................................................................................................... 33
Voici du gras............................................................................................................................................................................ 33
Voici de l'italique.................................................................................................................................................................. 33
voici du texte en police monospace ...................................................................................................... 33
voici du texte souligné ................................................................................................................................................. 33
Voici un exemple de texte partiellement en italique, en gras et souligné ............................................................................. 33
3. Styles logiques.............................................................................................................................................................. 33
Mise en évidence simple............................................................................................................................................... 34
Plus d'emphase............................................................................................................................................................ 34
Pour faire une citation ................................................................................................................................................. 34
Le résultat d'un programme .......................................................................................................................... 34
C. Commentaires............................................................................................................................................................... 49
D. Constantes, Variables, types ........................................................................................................................................ 49
1. Variables ....................................................................................................................................................................... 50
Le nom des variables est sensible à la casse (ie : x != X)....................................................................................................... 50
2. Constantes..................................................................................................................................................................... 50
3. La valeur sans valeur.................................................................................................................................................... 50
4. opérateurs divers........................................................................................................................................................... 50
a) Opérateurs d’assignement : ..................................................................................................................................... 50
b) Opérateurs de comparaison : ............................................................................................................................... 51
c) Opérateurs ‘affectation conditionnelle.................................................................................................................... 51
E. Types ............................................................................................................................................................................. 51
1. Généralités .................................................................................................................................................................... 51
a) Syntaxe objet ............................................................................................................................................................ 51
b) Syntaxe Classe ..................................................................................................................................................... 51
c) Syntaxe impérative................................................................................................................................................... 51
2. Booléens........................................................................................................................................................................ 51
a) Opérateurs logiques : ............................................................................................................................................... 52
3. Les nombres.................................................................................................................................................................. 52
a) Les entiers:................................................................................................................................................................ 52
b) Les nombres décimaux: ....................................................................................................................................... 52
c) Les opérateurs........................................................................................................................................................... 52
d) Les constantes mathématiques ............................................................................................................................ 52
e) Les fonctions ............................................................................................................................................................ 52
4. Les chaines: .................................................................................................................................................................. 52
a) L’opérateur de Concaténation ................................................................................................................................. 53
b) Les fonctions ........................................................................................................................................................ 53
5. Les tableaux: ................................................................................................................................................................. 53
a) Tableaux simples...................................................................................................................................................... 53
b) Tableaux associatifs............................................................................................................................................. 54
c) Tableaux multidimentionnels .................................................................................................................................. 54
d) fonctions ............................................................................................................................................................... 54
6. Les dates: ...................................................................................................................................................................... 56
a) Fonctions................................................................................................................................................................... 56
F. Les structures de contrôle ............................................................................................................................................ 56
1. Conditionnelle .............................................................................................................................................................. 56
a) Le Si .......................................................................................................................................................................... 56
b) Le Cas ................................................................................................................................................................... 57
2. Boucles.......................................................................................................................................................................... 57
a) Boucle pour............................................................................................................................................................... 57
b) Pour dans .............................................................................................................................................................. 58
c) Boucle tant que......................................................................................................................................................... 58
3. Rupture et continuitéde boucle.................................................................................................................................... 58
G. Les fonctions................................................................................................................................................................. 59
1. Passage des arguments par valeur ............................................................................................................................... 59
2. Passage des arguments par adresse (par variable)...................................................................................................... 59
3. Arité variable ................................................................................................................................................................ 59
H. Les procédures.............................................................................................................................................................. 60
I. Portée des variables.......................................................................................................................................................... 60
J. Classes et Objets............................................................................................................................................................... 61
K. Entrées/Sorties.............................................................................................................................................................. 61
1. sorties ............................................................................................................................................................................ 61
2. entrées ........................................................................................................................................................................... 62
L. Fichiers.......................................................................................................................................................................... 62
M. Inclusion de fichiers ..................................................................................................................................................... 62
N. Evénements : traitement............................................................................................................................................... 62
O. Evénements : simulation.............................................................................................................................................. 63
Blur() ; focus() ; click(); submit(); etc... .................................................................................................................................... 63
Dans l’exemple suivant on simule l’action de l’utilisateur qui consiste à placer le focus sur le champ mdp.........................63
Dans les 2 exemples suivants on envoie automatiquement le formulaire ci-dessus .................................................................64
P. Objets prédéfinis ...........................................................................................................................................................64
1. Exemple très important :...............................................................................................................................................64
2. Les tableaux prédéfinis .................................................................................................................................................65
3. Exemple : communication entre frames ......................................................................................................................66
4. Exercice : .......................................................................................................................................................................67
V. Feuilles de style .................................................................................................................................................................69
A. La création de style .......................................................................................................................................................69
B. Les feuilles de style externes........................................................................................................................................70
1. Le fichier externe ..........................................................................................................................................................70
2. L'intégration du fichier externe ....................................................................................................................................70
C. Les propriétés de style ..................................................................................................................................................70
1. Les propriétés de police ................................................................................................................................................70
2. Les propriétés de texte ..................................................................................................................................................71
3. Les propriétés d'arrière-plan .........................................................................................................................................71
4. Les propriétés de positionnement.................................................................................................................................71
5. Les propriétés d'encadrement .......................................................................................................................................71
6. Exemples........................................................................................................................................................................72
VI. Applet java.........................................................................................................................................................................74
A. Généralités .....................................................................................................................................................................74
B. Syntaxe...........................................................................................................................................................................74
C. Passage de paramètres...................................................................................................................................................75
VII. Php......................................................................................................................................................................................76
A. Généralités .....................................................................................................................................................................76
B. Commentaires................................................................................................................................................................77
C. Constantes, Variables, types.........................................................................................................................................77
1. variables .........................................................................................................................................................................77
Le nom des variables est sensible à la casse (ie : $x != $X)...................................................................................................77
2. Nommage dynamique des variables ............................................................................................................................78
3. Constantes......................................................................................................................................................................79
4. Références .....................................................................................................................................................................79
5. La valeur sans valeur ....................................................................................................................................................79
6. opérateurs divers ...........................................................................................................................................................79
a) Opérateurs d’assignement : ......................................................................................................................................79
b) Opérateurs de comparaison :................................................................................................................................79
c) Opérateurs ‘affectation conditionnelle ....................................................................................................................79
7. Variables prédéfinies ....................................................................................................................................................80
D. Types..............................................................................................................................................................................80
1. Booléens ........................................................................................................................................................................80
a) Opérateurs logiques : ................................................................................................................................................80
2. Les nombres...................................................................................................................................................................80
a) Les entiers: ................................................................................................................................................................80
b) Les nombres décimaux: ........................................................................................................................................81
c) Les opérateurs ...........................................................................................................................................................81
d) Les constantes mathématiques.............................................................................................................................81
e) Les fonctions .............................................................................................................................................................81
3. Les chaines: ...................................................................................................................................................................83
a) L’opérateur de Concaténation..................................................................................................................................83
b) Les fonctions .........................................................................................................................................................83
4. Les tableaux:..................................................................................................................................................................86
a) Tableaux simples.......................................................................................................................................................86
b) Tableaux associatifs..............................................................................................................................................86
c) Tableaux multidimentionnels...................................................................................................................................86
d) fonctions................................................................................................................................................................87
e) Exemple .....................................................................................................................................................................88
E. Les structures de contrôle.............................................................................................................................................89
1. Conditionnelle .............................................................................................................................................................. 89
a) Le Si .......................................................................................................................................................................... 89
b) Le Cas ................................................................................................................................................................... 90
2. Boucles.......................................................................................................................................................................... 90
a) Boucle pour............................................................................................................................................................... 90
b) Boucle pour chaque ............................................................................................................................................. 91
c) Boucle tant que......................................................................................................................................................... 92
d) Boucle Faire tant que........................................................................................................................................... 92
3. Rupture et continuité de boucle................................................................................................................................... 93
F. Les fonctions................................................................................................................................................................. 93
1. Passage des arguments se fait par valeur .................................................................................................................... 93
2. Passage des arguments se fait par adresse (par variable)........................................................................................... 93
G. Les procédures.............................................................................................................................................................. 94
H. Portée des variables...................................................................................................................................................... 94
I. Classes et Objets............................................................................................................................................................... 94
J. Entrées/Sorties.................................................................................................................................................................. 95
1. sorties ............................................................................................................................................................................ 95
2. entrées ........................................................................................................................................................................... 95
K. Fichiers.......................................................................................................................................................................... 96
Et pour la lecture........................................................................................................................................................................... 96
L. Inclusion de fichiers ..................................................................................................................................................... 97
VIII. PhpMyAdmin ............................................................................................................................................................... 98
On voit ci-dessus les différentes bases que l’on peut développer en cliquant sur le + et découvrir les tables qui la compose
........................................................................................................................................................................................................ 98
CREATE DATABASE `calrep`; ............................................................................................................................................... 101
Soit par un copier/coller des lignes de ess.sql........................................................................................................................... 101
IX. Interfaçage PhP/MySql .................................................................................................................................................. 102
Cours Internet
I. Introduction
A. Logiciels utilisés
1. Editeur de Textes
Votre éditeur de textes (ASCII) préféré fera l’affaire. Il est possible d’utiliser Notepad sous Windows, VI ou Kedit sous
Linux. Mais les Editeurs plus évolués comme (X)Emacs ou Pfe ou scriptEdit ou encore EditPlus faciliteront la tache. Les
éditeurs intégrés aux navigateurs seront aussi utilisés sans en abuser. Il permettra d’écrire les codes dans les différents
langages
2. Navigateur
Internet Explorer, Netscape, Mozilla sont les plus utilisés. Ils ne réagissent pas tous exactement de la même façon. Internet
Explorer n’existe que sous windows. Netscape et mozilla existent sous Windows et linux, Ils ne réagissent pas non plus
exactement de la même façon sous ces 2 systèmes d’exploitation. Il conviendra donc de tester les pages créées sous les 2
systèmes d’exploitation et avec les différents navigateurs.
3. Serveur http
C’est lui qui va fournir les pages html demandées. Nous utiliserons Apache. Le rôle essentiel du serveur Http va être de
fournir une arborescence pour Internet différente de l’arborescence « physique ». Par exemple sous Windows, avec
easyphp installé en standard les pages http et php se trouvent en « C:\Program Files\EasyPHP\www »
A gauche : sans utiliser le serveur http. A droite : en utilisant le serveur http sur la machine locale (127.0.0.1 est l’adresse
IP de la machine locale, mais cette IP peut être remplacée par celle d’une machine distante équipée d’un serveur http).
On remarque que la racine pour le serveur correspond physiquement à « C:\Program Files\EasyPHP\www » pour la
machine. Et qu’il est possible de descendre dans l’arborescence sous WWW, mais qu’il n’est pas possible d’y remonter.
4. Interprète Php
Il fonctionne en collaboration avec le serveur http pour traduire le code Php en Html
5. Serveur de base de données MySQL
Il travaille en collaboration avec l’interprète Php et fournit les données extraites des tables.
b) Php - MySql
Des requêtes SQL sont interprétés par Php, envoyé au serveur de SGBD pour recevoir les données correspondantes,
traduites en HTML et envoyées au navigateur.
C. But de l’enseignement
L’objet de cet enseignement n’est pas de faire de vous des experts mais de vous donner les bases pour le devenir. Nous ne
verrons que les principales caractéristiques des différents langages et certainement pas toutes leurs finesses. Mais
principalement l’utilité et le fonctionnement de chacun d’entre eux. Internet regorge de documentations sur le sujet. Ce
polycopié est insuffisant pour traiter tous les TP et projets mais les différents sites Internet préconisés et d’autre que vous
pourrez trouver pourront vous y aider.
D. Clients et Serveurs
Le fonctionnement normal nécessite n+2 machines : Les n clients, le serveur http et le serveur MySql. Bien entendu, les
systèmes d’exploitation étant multi-tâches, pour les tests, une seule machine peut faire fonctionner les 2 serveurs et le(s)
client(s)
1. Exemple
On veut écrire un programme simple qui demande à l’utilisateur son prénom et qui affiche « bonjour » suivi du prénom
donné : Il s’agit donc d’un programme interactif, Le Html seul ne suffit pas : nous avons le choix entre javascript et php
nous allons voir les différences entre ces 2 possibilités. Voici donc le déroulement du fonctionnement
2. Client seul.
Seul le navigateur est primordial, le serveur est facultatif
xxx et yyy représentent soit : C:\Program Files\EasyPHP\www\pedago\ess1\tstjs.htm
soit : http://localhost/pedago/ess1/tstjs.htm (sous Windows localhost est équivalent à 127.0.0.1 – A vérifier sous Linux). Le
source de « tstjs.htm » est écrit en javascript (texte en gras) et Html (le reste non gras) :
<html>
<head>
<TITLE>Question/réponse</TITLE>
</head>
<body>
<form name="maforme">
Votre prénom : <INPUT type="text" name="leprenom" value="">
<INPUT type="submit" value="Valider" onclick="javascript:document.write('bonjour'
+document.maforme.leprenom.value);return true;">
</form>
</body>
</html>
3. Client et serveur
Le navigateur et le serveur Http/Php sont nécessaires
xxx représente http://localhost/pedago/ess1/tstjs.php et
yyy : http://localhost/pedago/ess1/suite.php?leprenom=didier
Il y a ici 2 fichiers différents: tstjs.php
<html>
<head>
<TITLE> Question/réponse </TITLE>
</head>
<body>
<form name="maforme" methode="post" action="suite.php" target="_self">
Votre prénom : <INPUT type="text" name="leprenom" value="">
<INPUT type="submit" value="Valider" >
</form>
</body>
</html>
Et suite.php :
<html>
<head>
<TITLE> Question/réponse TITLE>
</head>
<body>
Bonjour
<?php
echo $leprenom
?>
</body>
</html>
Remarquons que si l’on demande l’affichage du source de « suite.php »
Nous ne verrons pas l’original (tel qu’il a été écrit –ci-dessus -) mais son interprétation par php :
<html>
<head>
<TITLE>Titre de la page</TITLE>
</head>
<body>
Bonjour
didier
</body>
</html>
où la variable « $leprenom » a été remplacé par sa valeur « didier »
Remarquons aussi:
Que tstjs.php aurait pu s’appeler tstjs.htm(l) car aucun code php n’y est contenu
La nécessité de 2 « programmes » : le premier est envoyé au navigateur par le serveur, il est chargé de « poser la
question » à l’utilisateur et le second est chargé de mettre en forme la réponse (stockée dans leprenom) de
l’utilisateur, et qui transite ici par l’URL.
Que si l’on met comme adresse C:\Program Files\EasyPHP\www\pedago\ess1\tstjs.php, c'est-à-dire que l’on ne
passe pas par le serveur, les programmes fonctionneront (mal) mais n’interpréteront pas la « réponse » en mettant
simplement « Bonjour » non suivi du prénom puisque c’est le serveur qui est chargé de l’interprétation de la
variable leprenom.
4. Fonctionnement Résultat
Du point de vue de l’utilisateur, le fonctionnement de tstjs.htm et de tstjs.php/ suite .php semble identique et le résultat est
le même. Il constatera une différence s’il s’en va examiner les sources. Cependant le fonctionnement est radicalement
différent :
Dans le premier cas : le client demande au serveur la page tstjs.htm (c’est l’utilisateur qui tape l’URL :
http://.../tstjs.htm) lorsque l’utilisateur appuie sur le bouton valider , c’est le navigateur qui récupère le texte tapé
par l’utilisateur et affiche le résultat traité. Dans ce cas, il nous faut un navigateur évolué (capable de traiter des
données et pas seulement de la mise en forme) et un serveur http minimal. Il y a une demande et une réponse.
Dans le deuxième cas : le client demande au serveur la page tstjs.php (c’est l’utilisateur qui tape l’URL :
http://.../tstjs.hphp) lorsque l’utilisateur appuie sur le bouton valider , le navigateur demande une nouvelle page
au serveur suite .php en adjoignant à l’URL la donnée tapée par l’utilisateur et c’est le serveur qui la traite pour
fournir une page Html. . Dans ce cas, il nous faut un navigateur minimal (capable de traiter de la mise en forme)
et un serveur http évolué. Il y a 2 demandes et 2 réponses.
E. Javascript ou Php ?
Qui fait le travail « intelligent » : le client ou le serveur ?
Si c’est le serveur, il faut en général dissocier les parties puisqu’il y a un aller entre le client (navigateur) qui reçoit les
instructions de l’utilisateur et le serveur qui les traite et un retour vers le client qui les affiche et selon la complexité des
échanges, cette « navette » peut se reproduire. Alors que si c’est le client, toutes les informations lui sont envoyées et c’est
lui qui « choisit » de les afficher (selon les demandes).
Imaginons 3 exemples pour clarifier les choses (on ne parlera que de javascript et php, bien entendu, il comporteront tous
du Html qui est l’essence même du fonctionnement http et pourquoi pas des feuilles de style) :
1. Exemple 1
On demande à l’utilisateur de remplir un formulaire (comme celui ci-dessus, mais plus long que d’entrer le seul prénom) et
on veut obliger celui-ci à remplir certains champs obligatoires, que la date de naissance est bien valide, que le code postal
con tient bien 5 chiffres, etc.
Il est possible de faire ces vérifications avant que ce formulaire soit envoyé ; donc par le navigateur (en javascript par
exemple) évitant ainsi d’envoyer un formulaire incorrect au serveur qui ferait la vérification, constaterait l’incorrection et
le renverrait au client pour correction et ainsi de suite.
Dans ce cas on choisi javascript pour des questions de rapidité et d’encombrement des échanges
2. Exemple 2
On veut réaliser un programme qui donne accès à certaines informations à l’utilisateur que s’il connaît un certain mot de
passe. Si la réalisation est faite en javascript, et que l’utilisateur ne connaît pas ce mot de passe, des tests adaptés
permettront de ne pas afficher dans le navigateur, mais il suffira d’examiner le source pour accéder aux informations
puisque toutes auront été envoyées par le serveur le choix de les afficher incombant au client (navigateur). Dans ce cas, on
choisira Php pour des raisons de sécurité.
3. Exemple 3
On veut réaliser un programme qui permette à l’utilisateur d’entrer un code postal et d’obtenir le n om de la commune
correspondante. Comme il y a en France 36 000 communes, si l’on choisit de coder en javascript, le serveur va devoir
envoyer les 36 000 noms et codes postaux afin que le client puisse effectuer la sélection. Dans ce cas, on choisira Php pour
des raisons de volumes de données (d’encombrement); il sera même intéressant de faire appel à une requête Sql pour
faciliter la recherche.
III. Html
Le langage HTML (Hyper Text Markup Language) est un langage de balisage, c'est à dire qu'il est composé de ce qu'on
appelle des balises, balises qui sont ensuite interprétées par le navigateur, celui-ci produit la mise en forme du document.
C'est-à-dire, par exemple,Gras, italique, centré, formulaires, images, etc...
Voici un exemple de balise :
<head> xxxxx</ head >
Les balises sont écrites entre < et >. Elles vont généralement par paire, d'abord la balise ouvrante, marquant le début de
l'action, et la balise fermante, marquant la fin de l'action. Celle ci est reconnaissable par le / placé juste après le <.
Certaines balises n’ont pas de balise de fermeture par exemple <br> qui permet le passage à la ligne, n’a aucune raison
d’avoir une fermeture. Une bonne idée concite à adopter la syntaxe de XML, c'est-à-dire à mettre un antislash à la fin :
<br />
Les balises peuvent avoir des attributs qui se place également à l'intérieur des < >, comme ceci :
<balise attribut1=" " attribut2=" "> xxx </ balise >
La valeur des attributs peut être avec ou sans guillemets simple ou double. On mettera toujours les valeurs entre
guillemets, même si ça n’et pas obligatoire. De même, il est une habitude de mettre le nom des balises en majuscule. Si
l’on veut une compatibilité XML, c’est à éviter. (à vérifier)
Attribbut signification
BGCOLOR=une couleur définit la couleur de fond du document, en RGB
BACKGROUND = l'URL d'une image définit l'image de fond du document
TEXT = une couleur définit la couleur du texte du document
LINK = une couleur définit la couleur des liens du document
VLINK = une couleur définit la couleur des liens visités du document
<html>
<head>
<title>...</ title>
< meta name ="author" content ="..." />
< meta name ="keywords" content ="..." />
< meta name ="lang" content ="..." />
<meta name="description" content="..." />
...
</head>
<body bgcolor="#FFFFFF" link="#FF3300" alink="#FFFFFF" vlink="#660099">
...
</body>
</html>
B. Le laxisme du HTML
Le balisage ouvrant/fermant en html correspond au parenthésage mathématique et aux structures de contrôle des langages
informatique. Autrement dit , il ne faut pas croiser les balises. Il faut éviter d’oublier de fermer une balise ou de les fermer
dans le désordre. Cependant une page mal construite peut très bien s’afficher correctement,
Mais la maintenance (mise à jour) peut s’avérer périlleuse. Il faut éviter à tout prix d’écrire par (contre-)exemple
<html>
<head>
<title>Maivais exemple
<body bgcolor="#FFFFFF" link="#FF3300" alink="#FFFFFF" vlink="#660099">
</head></ title>
Il ne faut surtout pas suivre cet exemple
</body>
</html>
D. Indentation ou pas
Remarque : Si l’indentation procure incontestablement une facilité de lecture du code, les multiples espaces
« inutiles » prennent du temps de transmission sur le réseau.
Il n’est donc pas inutile de disposer de 2 versions des pages html une pour le développement et une pour l’utilisation du
site. Il est facile d’écrire une « moulinette » dans un langage de programmation quelconque qui suprime les espaces,
tabulation et sauts de ligne non obligatoires.
class Nom d'une Attache une classe à la balise (un style "titre1"
classe défini dans une feuille de style)
style Un style Attache un style spécifique à la balise "font-size: 12 pt"
on,,,() une fonction voir Balise de script simple onClick="fonction()"
<CODE> N O Texte sous forme de code source HTML 2.0
title Texte Une description du texte lorsque l'on "Description"
pointe le curseur dessus
id Nom d'une ID Attache une ID à la balise (un style défini "pargr1"
dans une feuille de style)
class Nom d'une Attache une classe à la balise (un style "titre1"
classe défini dans une feuille de style)
style Un style Attache un style spécifique à la balise "font-size: 12 pt"
on,,,() une fonction voir Balise de script simple onClick="fonction()"
<COL> O N Déf d'une colonne d'un tableau * I.E 3.0
Width Largeur Largeur des colonnes définie pas la "100" | "10%"
balise col
Span Nombre Indique le nombre de colonnes sur "2"
lesquelles s'appliqueront les propriétés
de la balise col
Align Alignement Définit l'alignement de la colonne "left" | "center" |
(respectivement "right" | "justify" |
: à gauche, "char"
centré, à droite,
justifié, aligné
sur un caractère
spécifique)
char Texte Caractère sur lequel le texte s'alignera "a"
(si char est utilisé dans align)
CharOff Nombre Nombre de pixels de retrait du texte "10"
VAlign Alignement Définit l'alignement vertical de la colonne "top" | "middle" |
vertical "bottom" | "baseline"
(respectivement
en haut, au
milieu, en bas,
ligne de base)
title Texte Une description du texte lorsque l'on "Description"
pointe le curseur dessus
id Nom d'une ID Attache une ID à la balise (un style défini "pargr1"
dans une feuille de style)
class Nom d'une Attache une classe à la balise (un style "titre1"
classe défini dans une feuille de style)
style Un style Attache un style spécifique à la balise "font-size: 12 pt"
<COLGROUP> N F Regroupement de colonnes (tableau) * I.E 3.0
Width Largeur Largeur des colonnes définie pas la "100" | "10%"
balise col
Span Nombre Indique le nombre de colonnes sur "2"
lesquelles s'appliqueront les propriétés
de la balise col
Align Alignement Définit l'alignement de la colonne "left" | "center" |
(respectivement "right" | "justify" |
: à gauche, "char"
centré, à droite,
justifié, aligné
sur un caractère
spécifique)
char Texte Caractère sur lequel le texte s'alignera "a"
(si char est utilisé dans align)
CharOff Nombre Nombre de pixels de retrait du texte "10"
bordures
horizontale entre
tous les groupes
de tableaux,
bordures
horizontale entre
toutes les rangées
du tableau,
bordures partout
Name Nom Nom du tableau "nom"
Frame Respectivement : Spécifie quel côté de la bordure "above" | "below" |
Pas de bordure extérieur du tableau doit être affiché "hsides" | "vsides" |
externe, en haut, "LHS" | "RHS" |
en bas, en haut et "box" | "border"
en bas, du côté
gauche, du côté
droit, côtés
gauche et droit,
encadrant le
tableau, autour du
tableau
CellSpacing Nombre (en Marge entre le bord de la cellule et son "2"
pixels) contenu
CellPadding Nombre (en Marge entre les bords extérieurs du "2"
pixels) tableau et les cellules qu'il contient
Border Nombre (en Définit la largeur de la bordure du "2"
pixels) tableau
BorderColor Couleur Couleur de la bordure du tableau "#FFFFFF"
hexadécimale
RRVVBB ou nom
de la couleur
BorderColorD Couleur Couleur de la bordure foncée du tableau "#FFFFFF"
ark hexadécimale
RRVVBB ou nom
de la couleur
BorderColorLi Couleur Couleur de la bordure claire du tableau "#FFFFFF"
ght hexadécimale
RRVVBB ou nom
de la couleur
background Image Image d'arrière plan du tableau "fond.jpg"
bgcolor Couleur Couleur de fond du tableau "#FFFFFF"
hexadécimale
RRVVBB ou nom
de la couleur
Cols Nombre Définit le nombre de colonnes du tableau "3"
Height Hauteur (en pixel Hauteur du tableau "100" | "10%"
ou %)
Width Largeur (en pixel Largeur du tableau "100" | "10%"
ou %)
Align Alignement Définit l'alignement du tableau "left" | "center" |
(respectivement : "right"
à gauche, centré,
à droite)
onAfterUpdate Appel une fonction Balise de script "fonction()"
onBeforeUpda Appel une fonction Balise de script "fonction()"
te
onKeyDown Appel une fonction Balise de script (se produit lorsqu'une "fonction()"
touche du clavier est enfoncée)
onKeyPress Appel une fonction Balise de script (se produit lorsqu'on "fonction()"
tape une touche du clavier)
onKeyUp Appel une fonction Balise de script (se produit lorsqu'une "fonction()"
touche du clavier est levée)
title Texte Une description du texte lorsque l'on "Description"
pointe le curseur dessus
id Nom d'une ID Attache une ID à la balise (un style défini "pargr1"
dans une feuille de style)
class Nom d'une classe Attache une classe à la balise (un style "titre1"
défini dans une feuille de style)
style Un style Attache un style spécifique à la balise "font-size: 12 pt"
on,,,() une fonction voir Balise de script simple onClick="fonction()"
<TBODY> N F Regroupement de tableaux I.E 3.0
BGColor Couleur Couleur de fond du tableau "#FF0000"
hexadécimale
RRVVBB ou nom
de la couleur
Align Alignement Définit l'alignement du tableau "top" | "bottom" |
(respectivement : "left" | "center" |
haut, bas, à "right"
gauche, centré, à
droite)
VAlign Alignement Définit l'alignement vertical du tableau "top" | "bottom"
vertical (haut ou
bas)
title Texte Une description du texte lorsque l'on "Description"
pointe le curseur dessus
id Nom d'une ID Attache une ID à la balise (un style défini "pargr1"
dans une feuille de style)
class Nom d'une classe Attache une classe à la balise (un style "titre1"
défini dans une feuille de style)
style Un style Attache un style spécifique à la balise "font-size: 12 pt"
onKeyDown Appel une fonction Balise de script (se produit lorsqu'une "fonction()"
touche du clavier est enfoncée)
onKeyPress Appel une fonction Balise de script (se produit lorsqu'on "fonction()"
tape une touche du clavier)
onKeyUp Appel une fonction Balise de script (se produit lorsqu'une "fonction()"
touche du clavier est levée)
on,,,() une fonction voir Balise de script simple onClick="fonction()"
<TD> N F Cellule d'un tableau HTML 3.0
ColSpan Nombre Spécifie le nombre de colonnes "2"
recouvertes par une cellule
NoWrap Nombre "2"
RowSpan Nombre Spécifie le nombre de lignes recouvertes "2"
par une cellule
VAlign Alignement Alignement vertical du texte dans la "top" | "middle" |
(respectivement : cellule "bottom" | "baseline"
en haut, au milieu,
en bas, sur la
ligne de base)
BorderColor Couleur Couleur de la bordure du tableau "#FFFFFF"
hexadécimale
RRVVBB ou nom
de la couleur
BorderColorD Couleur Couleur de la bordure foncée du tableau "#FFFFFF"
ark hexadécimale
RRVVBB ou nom
de la couleur
BorderColorLi Couleur Couleur de la bordure claire du tableau "#FFFFFF"
ght hexadécimale
RRVVBB ou nom
de la couleur
background Image Image d'arrière plan du tableau "fond.jpg"
bgcolor Couleur Couleur de fond du tableau "#FFFFFF"
hexadécimale
RRVVBB ou nom
de la couleur
Height Hauteur (en pixel Hauteur du tableau "100" | "10%"
ou %)
Width Largeur (en pixel Largeur du tableau "100" | "10%"
ou %)
Align Alignement Définit l'alignement du tableau "left" | "center" |
(respectivement : "right"
à gauche, centré,
à droite)
onAfterUpdate Appel une fonction Balise de script "fonction()"
onBeforeUpda Appel une fonction Balise de script "fonction()"
te
onKeyDown Appel une fonction Balise de script (se produit lorsqu'une "fonction()"
touche du clavier est enfoncée)
onKeyPress Appel une fonction Balise de script (se produit lorsqu'on "fonction()"
tape une touche du clavier)
onKeyUp Appel une fonction Balise de script (se produit lorsqu'une "fonction()"
touche du clavier est levée)
title Texte Une description du texte lorsque l'on "Description"
pointe le curseur dessus
id Nom d'une ID Attache une ID à la balise (un style défini "pargr1"
dans une feuille de style)
class Nom d'une classe Attache une classe à la balise (un style "titre1"
défini dans une feuille de style)
style Un style Attache un style spécifique à la balise "font-size: 12 pt"
on,,,() une fonction voir Balise de script simple onClick="fonction()"
<TEXTAREA> N O Zone de saisie à plusieurs lignes HTML 3.0
<TFOOT> N F Regroupement de tableaux I.E 3.0
BGColor Couleur Couleur de fond du tableau "#FF0000"
hexadécimale
RRVVBB ou nom
de la couleur
Align Alignement Définit l'alignement du tableau "top" | "bottom" |
(respectivement : "left" | "center" |
haut, bas, à "right"
gauche, centré, à
droite)
VAlign Alignement Définit l'alignement vertical du tableau "top" | "bottom"
vertical (haut ou
bas)
title Texte Une description du texte lorsque l'on "Description"
pointe le curseur dessus
id Nom d'une ID Attache une ID à la balise (un style défini "pargr1"
dans une feuille de style)
class Nom d'une classe Attache une classe à la balise (un style "titre1"
défini dans une feuille de style)
style Un style Attache un style spécifique à la balise "font-size: 12 pt"
onKeyDown Appel une fonction Balise de script (se produit lorsqu'une "fonction()"
touche du clavier est enfoncée)
onKeyPress Appel une fonction Balise de script (se produit lorsqu'on "fonction()"
tape une touche du clavier)
onKeyUp Appel une fonction Balise de script (se produit lorsqu'une "fonction()"
touche du clavier est levée)
on,,,() une fonction voir Balise de script simple onClick="fonction()"
Pour mêler les style, il vous suffit d'ajouter les balises les unes à la suite des autres, sans oublier qu'il faudra toutes les
fermer :
G. Formater le texte
1. Les retours à la ligne : <br> ou <p>
Le HTML est insensible aux espaces multiples ainsi qu’aux passages à la ligne.
2. Aligner le texte
En HTML, vous pouvez choisir d'aligner vos paragraphes de texte à gauche (par défaut), au centre ou à droite. Il existe
trois solutions, aucune ne permettant cependant de justifier le texte.
- <P align=left / center / right>Texte</P> : Oui, il s'agit bien de la même balise que pour l'ajout d'un retour à la ligne, à
laquelle on adjoint un attribut, celui de l'alignement (respectivement gauche / centre / droite). A noter aussi, dans cette
utilisation de la balise <P>, il vous faut utiliser la balise de fermeture pour signaler la fin de l'alignement.
Ex. : <P align=center>Votre paragraphe est au centre</P>
s'affiche ainsi :
Votre paragraphe est au centre
- <CENTER>Texte</CENTER> : C'est une balise Nestcape, aujourd'hui reconnue par la majorité des navigateurs Internet.
Elle centre le paragraphe entre ces balises.
Ex. : <CENTER>Votree paragraphe est au centre</CENTER>
s'affiche :
Votre paragraphe est au centre
- <DIV align=left / center / right>Texte, image, tableau</DIV> : cette balise permet d'aligner en même temps plusieurs
type de données, qu'il s'agisse de texte, d'images ou encore de tableaux. Son fonctionnement est similaire a celui de
<P align =...>
3. Mettre du texte en retrait :
<BLOCKQUOTE>...</BLOCKQUOTE>
A l'origine, cet élément devait permettre de différencier un paragraphe de citation du reste du texte, en affichant un retrait à
gauche. Mais la majorité des gens utilisent simplement cette balise pour le retrait, sans que le contenu soit forcément une
citation. Pour augmenter le retrait, multipliez les blockquote.
Ex. : <BLOCKQUOTE><BLOCKQUOTE>Texte avec deux retraits</BLOCKQUOTE></BLOCKQUOTE>
s'affiche ainsi :
Texte avec deux retraits
4. Le texte préformaté :
<PRE>.....</PRE>
Le texte que vous saisissez entre ces balises sera affiché tel que vous l'avez entré, c'est-à-dire avec les espaces et les retours
à la lignes.
Ex. : <PRE> Voici un texte pre -
formate</PRE>
s'affiche ainsi :
Voici un texte pre-
formate
Attribbut signification
align = left / center (défaut) / stipule l'alignement du trait.
right
width = pixels / pourcentage spécifie la largeur du trait, soit en pixels, soit en pourcentage de la taille de la
fenêtre.
height = pixels hauteur ou épaisseur du trait en pixels.
noshade efface l'effet d'ombrage affiché par défaut dans le navigateur.
Lettre Code Lettre Code Lettre Code Lettre Code Lettre Code Lettre Code
à à ñ ñ À À Ñ Ñ < <
á á ò ò Á Á Ò Ò > >
â â ó ó Â Â Ó Ó " "
ä ä ô ô Ä Ä Ô Ô „ „ ™ ™
ã ã õ õ Ã Ã Õ Õ « « ° °
å å ö ö Å Å Ö Ö » » § §
æ æ ø ø Æ &Aelig; Ø Ø © © ¶ ¶
ç ç œ œ Ç Ç Œ Œ ® ® ± ±
è è ù ù È È Ù Ù & & ¹ ¹
é é ú ú É É Ú Ú ¥ ¥ ² ²
ê ê û û Ê Ê Û Û ¢ ¢ ³ ³
ë ë ü ü Ë Ë Ü Ü £ £ ½ ½
ì ì ý ý Ì Ì Ý Ý ß ß ¼ ¼
í í Ÿ ÿ Í Í Ÿ Ÿ € € ¾ ¾
î î Ð ð Î Î Ð Ð ƒ ƒ · ·
ï ï Þ þ Ï Ï Þ Þ ‰ ‰
8. Indice et exposant
Dans vos formules mathématiques ou chimiques, il se peut que vous ayez besoin de mettre des caractères en indice ou en
exposant.
<BODY background="fichier.jpg">
N'oubliez pas de fournir le chemin du fichier si celui-ci ne se trouve pas dans le même dossier/répertoire que le fichier
HTML.
J. Les Listes
Il est parfois utile de faire appel à une liste dont la présentation sera plus parlante qu'une longue énumération. Le HTML a
prévu un certain nombre de type de listes.
<UL type="square">
<LI>Mon premier élément de liste
<LI>Mon deuxième élément de liste
</UL>
b) Les listes numérotées - <OL>
Elles se construisent de la même manière que les listes à puces, si ce n'est que les puces sont remplacées par de nombres.
<OL type="I">
<LI>Les débuts de la poésie
<UL>
<LI>Le Moyen-Age
<LI>La Renaissance
</UL>
<LI>Les poètes les plus connus
<UL>
<LI>Baudelaire
<LI>Verlaine
</UL>
</OL>
K. Couleurs et Polices
1. Définition des couleurs en HMTL
Il y a deux possibilités en HTML pour définir une couleur :
l'utilisation des 16 couleurs standards (héritage des premiers écrans VGA sous Windows)
l'utilisation de codes hexadécimaux
a) Les couleurs standard
Elles sont donc au nombre de 16, et sont reconnues par tous les systèmes. En voici la liste :
attribut signification
bgcolor= "couleur / code hexadécimal" spécifie la couleur du fond de page.
text="couleur / code hexadécimal" spécifie la couleur par défaut pour tout le texte du document.
link= "couleur / code hexadécimal" spécifie la couleur des liens hypertextes et du cadre des images agissant
comme des liens hypertextes.
vlink= "couleur / code hexadécimal" spécifie la couleur des liens visités dans le document.
alink= "couleur / code hexadécimal" spécifie la couleur du lien au moment où il est cliqué (bouton de la souris en
bas).
Voici un exemple de code :
Note : Lorsque vous spécifiez une couleur par son code hexadécimal, n'oubliez pas le signe dièse (#), sans lequel
votre code ne sera pas reconnu.
3. Les polices de caractères : La balise <FONT>
attribut signification
face="nom de la police1, spécifie une liste de polices de caractère par ordre de préférence. Si la police n'est pas
nom de la police2, etc" présente dans le système de votre visiteur, le navigateur cherche la suivante et ainsi de
suite. Si aucune n'est présente, il affiche le texte dans la police de caractère par défaut.
size=valeur absolue / spécifie la taille des caractères. Deux méthodes coéxistent : - la valeur absolue : les tailles
valeur relative vont de 1 à 7, 3 étant la taille normale par défaut. On spécifie alors la taille par size=5, ce
qui a pour effet d'agrandir de deux tailles les caractères ainsi encodés. - la valeur relative : 3
étant la taille standard, on spécifie alors size=+2, ce qui a le même effet que dans l'exemple
précédent.
color="couleur standard / spécifie la couleur du texte encodés.
code hexadécimal"
Voici un exemple de code :
<BASEFONT size=+2>
Le texte qui suit cette balise verra sa taille augmentée de deux niveaux.
L. Les Tableaux
.
Attributs signification
bgcolor="couleur standard / code hexadécimal" spécifie la couleur de fond du tableau.
background="fichier graphique" spécifie un fichier image en guise de fond pour le tableau. Les
formats GIF et JPG sont reconnus universellement.
border="pixel" spécifie l'épaisseur en pixels du cadre et des bordures intérieures
du tableau ("0" signifie qu'il n'y a pas de bordure, et 1 est la valeur
par défaut).
bordercolor="couleur standard / code hexadécimal" spécifie la couleur du cadre et des bordures intérieures du tableau.
height="pixels" spécifie la hauteur en pixels du tableau.
width="pixels / %" spécifie la largeur du tableau, soit en pixels, soit en pourcentage
par rapport à la taille de la fenêtre.
cellpadding="pixels" spécifie l'épaisseur des bordures intérieures du tableau
cellspacing="pixels" spécifie l'espace en pixels entre le contenu des cellules et le bord
de la cellule.
Exemple de code :
Attributs signification
align="left (défaut) / center / right" spécifie l'alignement des données à l'intérieur de la cellule (gauche, centre ou
droite).
valign="top / middle (défaut) /bottom" spécifie l'alignement vertical des données à l'intérieur de la cellule (en haut,
au milieu ou en bas).
bgcolor="couleur standard / code spécifie la couleur de fond de la cellule.
hexadécimal"
background="fichier graphique" spécifie un fichier image en guise de fond pour la cellule. Les formats GIF et
JPG sont reconnus universellement.
height="pixels" spécifie la hauteur de la cellule de titre.
width="pixels / %" spécifie la largeur de la cellule de titre (% par rapport à la largeur totale du
tableau).
b) Les cellules
+ Pour créer une nouvelle ligne dans le tableau (y compris pour les titres de colonnes utilisant les balises <TH>) :
<TR>vos cellules</TR>
Attributs de <TR> :
Attributs signification
align="left (défaut) / center / right" spécifie l'alignement des données à l'intérieur des cellules
de la rangée (gauche, centre ou droite).
valign="top / middle (défaut) /bottom" spécifie l'alignement vertical des données à l'intérieur des
cellules de la ligne (en haut, au milieu ou en bas).
bgcolor="couleur standard / code hexadécimal" spécifie la couleur de fond des cellules de la ligne.
background="fichier graphique" spécifie un fichier image en guise de fond pour les cellules
de la ligne. Les formats GIF et JPG sont reconnus
universellement.
height="pixels" spécifie la hauteur de la ligne.
+ Pour créer une cellule : <TD>Le contenu de la cellule (texte, images,...)</TD>
Attributs de <TD> :
Attributs signification
align="left (défaut) / center / right" spécifie l'alignement des données à l'intérieur de la cellule (gauche,
centre ou droite).
valign="top / middle (défaut) /bottom" spécifie l'alignement vertical des données à l'intérieur de la cellule
(en haut, au milieu ou en bas).
bgcolor="couleur standard / code hexadécimal" spécifie la couleur de fond de la cellule.
background="fichier graphique" spécifie un fichier image en guise de fond pour la cellule. Les
formats GIF et JPG sont reconnus universellement.
height="pixels" spécifie la hauteur de la cellule.
width="pixels" spécifie la largeur de la cellule.
colspan="nombre de colonnes" spécifie que la cellule occupe plusieurs colonnes (vers la droite).
rowspan="nombre de lignes" spécifie le nombre de lignes occupées par la cellule (vers le bas).
cellule 1 de la ligne 3
cellule 2 des lignes 3 et 4
cellule 1 de la ligne 4
M. Les frames
Les frames sont les cadres créés dans la fenêtre du navigateur. Chaque cadre reçoit un fichier HTML (différent). Ce
principe est surtout utilisé pour des barres de navigations, des hauts de
La tendance actuelle veut qu’on évite de mettre des frames, car la maintenance du site est plus délicate et les moteurs de
recherche accorde des pénalités à ces sites.
Dans le cas où nous construisons une page contenant n frames, il nous faut au moins n+1 fichiers
• le fichier <FRAMESET>, celui qui répartit les cadres dans la fenêtre
• 1 fichiers HTML pour le contenu de chaque cadre
1. Le fichier <FRAMESET>
Comme un tableau, un fichier frameset se construit en lisant les cadres de haut en bas, et de gauche à droite. Mais
commençons par un exemple de code simple :
<HTML>
<HEAD>
<TITLE>Mon site</TITLE>
</HEAD>
<FRAMESET cols="20, *">
<FRAME SRC="fichier1.html" name="colGauche">
<FRAME SRC="fichier2.html" name="colDroite">
<NOFRAMES>
Ce site a ete construit avec des frames. Il semble que votre navigateur ne supporte pas ces balises.
Voici un lien pour visiter notre site sans frames : <A HREF="fichier2.html">Site sans frames</A>
</NOFRAMES>
</FRAMESET>
</HTML>
Le fichier <FRAMESET> est le fichier qui crée et répartit dans la fenêtre les différents cadres (frames) de notre page. Les
balises <FRAMESET> et </FRAMESET> remplacent les balises traditionnelles <BODY> et </BODY>.
Ici, nous avons créé deux colonnes, la première fait 20 pixels de large et la seconde occupe le reste disponible de la fenêtre
du navigateur. Dans le colonne de gauche de 20 pixels de large - son nom étant "colGauche" -, nous chargeons le fichier
"fichier1.html" et dans la colonne de gauche - "colGauche" -, nous chargeons le fichier "fichier2.html".
Au cas où le navigateur de notre visiteur ne supporterait pas les balises de frames, nous fournissons un contenu alternatif
via les balises <NOFRAMES>. Ici, un lien vers fichier2.html.
2. Les attributs pour le fichier <FRAMESET>
Les attributs de la balise <FRAMESET> :
Attributs signification
cols="pixels / %, pixels / %" crée des colonnes dont la largeur peut être spécifiée en pixels ou en
pourcentage de la fenêtre totale. Les dimensions pour chaque colonne sont
séparées par des virgules. (on note aussi qu'il est possible d'indiquer le signe "*"
pour indiquer que la colonne occupe l'espace restant).
rows="pixels / %, pixels / %" crée des cadres horizontaux (lignes). Il n'est pas possible d'utiliser cols et rows
dans le même frameset (voir dans l'exemple en fin de leçon).
framespacing="pixels" indique l'espace entre les deux cadres.
frameborder="pixels" épaisseur de la bordure des cadres.
bordercolor="code hexadécimal" couleur de la bordure des cadres (ici, les noms des 16 couleurs standard ne sont
pas possibles).
border="pixels" épaisseur de la bordure entre les cadres.
NOTE IMPORTANTE : si vous désirez que vos cadres n'aient pas de bordure, il vous faut fixer les trois attributs
suivants à la valeur de "0" pour que cela fonctionne sous Netscape et Internet Explorer : framespacing, frameborder et
border.
Certains de ces attributs sont redondants, mais c'est parce qu'ils ne fonctionnent soit que sous Internet Explorer soit sous
Netscape.
Les attributs des balises <FRAME> :
Attributs signification
scrolling="yes / no / auto" autorise ou non la présence d'ascenseurs de défilement pour le cadre. "auto"
laisse au navigateur le soin d'afficher des ascenseurs si besoin est (c'est
l'option par défaut si rien n'est spécifié).
marginheight="pixels" marges disposées en haut et en bas du cadre.
marginwidth="pixels" marges disposées de chaque côté du cadre.
<HTML>
<HEAD>
<TITLE>Mon site en frames</TITLE>
</HEAD>
<FRAMESET cols="150, *" border="5" frameborder="5" bordercolor="#000000">
<FRAMESET rows="50%, 50%">
<FRAME SRC="fichier1.html" name="hautGauche">
<FRAME SRC="fichier2.html" name="basGauche">
</FRAMESET>
<FRAME SRC="fichier3.html" name="colDroite">
<NOFRAMES>
Votre navigateur ne supporte pas les frames. Voici un acces a <A HREF="fichier3.html">notre site
sans frames</A>
</NOFRAMES>
</FRAMESET>
</HTML>
Voici deux captures d'écran qui vous permettront de visualiser le résultat. On note que sous Explorer 3, la couleur et
l'épaisseur des bordures de cadre ne fonctionnent pas.
Capture du résultat sour Internet Explorer 6 et Mozilla 1.4
N. Formulaires de saisie
Il permet la saisie d'informations, qui sont retournées au serveur pour traitement.
<FORM METHOD=.. ACTION=..>...</FORM>
Encadre une section "form".
METHOD= [GET | POST] : indique au serveur la méthode a utiliser pour traiter la requète. par defaut, la méthode GET est
employée. Cette méthode transcode les reponses du formulaire au format MIME "x-www-form-urlencoded". c'est la plus
rapide et la plus pratique pour des réponses courtes.
Pour des formulaires de grande taille ou pour assurer une discression, la méthode POST seule permet le transfert, car GET
impose une longueur limite des valeurs renvoyées et les informations apparaissent.
Exemple :
IV. Javascript
A. Généralités
:
<SCRIPT LANGAGE="JavaScript">
...
</SCRIPT>
Exemple:
1. Erreur simple
Le script (programme) s’exécute de <SCRIPT LANGAGE="JavaScript"> jusqu’à l’apparition de la première erreur puis
rien ne se passe entre la première erreur et </SCRIPT>
2. ErreurGrave
Rien ne s'exécute entre <SCRIPT LANGAGE="JavaScript> et </SCRIPT>
C. Commentaires
Un script javascript se commente comme en C:
Exemple :
<SCRIPT LANGAGE="JavaScript">
<!--
// commentaire de fin de ligne
/* commentaire
sur plusieurs
lignes */
//-->
</SCRIPT>
Tout ce qui se trouve dans un commentaire est ignoré. Il est conseillé, comme toujours, de commenter largement ses
scripts.
<SCRIPT LANGAGE="JavaScript">
<!--
…
//-->
</SCRIPT>
SCRIPT LANGAGE="JavaScript">
var MaVar ; // Déclaration seule
var mavar = "Jean"; // déclaration avec affectation initiale
MaVar = "Paul"; // affectation
document.write(mavar+', '+MaVar); // affiche "Jean, Paul"
// 4site = 'pas encore'; // invalide : commence par un nombre
_4site = 'pas encore'; // valide : commence par un souligné
maïs = 'jaune'; // valide : le code ASCII de ï est 239.
document.write( maïs );
document.write( _4site );
</SCRIPT>
Les variables peuvent être de type entier (integer), réel (double), chaîne de caractères (string) , booléen (boolean)., tableau
(array), objet (object)
Il est possible de convertir une variable en un type primitif grâce au cast (comme en C, java ou delphi).
Le cast est une conversion de type. L’action de caster (transtyper) consiste à convertir une variable d’un type en un autre.
Exemple :
Quelques fonctions :
2. Constantes
L’utilisateur ne peut définir des constantes dont la valeur est fixée une fois pour toute !
3. La valeur sans valeur
La valeur spéciale null représente l'absence de valeur. Une variable avec la valeur NULL n'a pas de valeur. La constante
null est sensible à la casse.
4. opérateurs divers
a) Opérateurs d’assignement :
Pour l’affectation on utilise = (pour la comparaison = =)
, *= /=, +=, -=, %= ; .=
a=3 ;
x*=y // équivalent à x=x*y,
b) Opérateurs de comparaison :
,= = (égalité), < (inférieur strict), <= (inférieur large), >, >=, != (différence)
c) Opérateurs ‘affectation conditionnelle
Signalons un opérateur très spécial qui équivaut à une structure conditionnelle complexe if then else à la différence qu’il
renvoie un résultat de valeur pouvant ne pas être un booléen : l’opérateur ternaire.
Syntaxe :
(condition)?(expression1):(expression2);
Si la condition est vrai alors évalue et renvoie l’expression1 sinon évalue et renvoie l’expression2.
Exemple :
nbr = (toto>10)?(toto):(toto%10);
Dans cet exemple, la variable nbr prend toto pour valeur si toto est strictement supérieur à 10, sinon vaut le reste de la
division entière de toto par 10.
E. Types
1. Généralités
Même si les variables n'ont pas à être explicitement déclarées, javascript n'en conserve pas moins la notion de type, plus
exactement la notion de classe et d’objet.
Une connaissance de la POO (programmation orientée objet) facilite la compréhension de ce qui va suivre. Néanmoins, en
première approche, mais vraiment en toute première approche (les puriste vont pousser les haut cris !!), on peut dire à voix
basse (et de façon à peine audible) que, au niveau syntaxe, le paramètre principal de la fonction, au lieu de le mettre
derrière le nom de la fonction, on l’écrit devant et on met un point comme séparateur.
Selon les fonctions, on utilise » l’une des 3 formes :
a) Syntaxe objet
Dans un langage de programmation impératif pour obtenir une sous-chaine extraite de la chaine chn entre les rangs deb et
fin , on écrirait : substring(chn,deb,fin), en javascript, on écrit :
chn.substring(deb,fin),
pour la longueur du mot « bonjour », on écrirait :length("bonjour"), ici
"bonjour".length
b) Syntaxe Classe
Certaines fonctions ont comme syntaxe celle de la méthode de classe : le nom de la classe (attention à la casse) est suivi du
nom de la méthode ou de l’attribut.
a = Math.sqrt(Math.sin(Math.PI / 3))
Que l’on peut écrire en mettant Math en « facteur »
2. Booléens
C'est le type le plus simple. Un booléen prend les valeurs de TRUE ou FALSE.
a) Opérateurs logiques :
, && (et), , || (ou), ! (non)
3. Les nombres
a) Les entiers:
Les entiers sont de nombres dont la plage dépend des plate-formes, mais reste équivalente à la portée du type long en C.
On pourra exprimer un entier en décimal, hexadécimal ou encore en octal.
decimal = 10;
hexa = 0x0F;
octal = 020;
b) Les nombres décimaux:
. On peut exprimer ce type sous forme de nombre normal avec un point décimal, ou en notation scientifique.
normal = 0.017;
scientifique = 17.0E-3;
c) Les opérateurs
+ (addition), - (soustraction), * (multiplié), / (divisé), % (modulo), ++ (incrément), --(décrément). Ces deux derniers
peuvent être pré ou post fixés
i=5;
i++ ; // i vaut 6 equivalent à i+=1 ou encore à i=i+1
document.write( i++) ; // affiche 6 et ensuite donne à i la valeur 7
document.write( ++i) ; // donne à i la valeur 8 et ensuite affiche 8
d) Les constantes mathématiques
Math.PI (avec des majuscules à M P I) la valeur de π soit 3.141592653589793
e) Les fonctions
syntaxe description
Math.abs(nombre) la valeur absolue d'un nombre
Math.acos(nombre) l'arc cosinus en radian d'un nombre entre -1 et 1 (0 sinon)
Math.asin(nombre) l'arc-sinus en radian d'un nombre compris entre -1 et 1 (0 sinon)
Math.atan(nombre) l'arc tangente en radian d'un nombre entre -pi/2 et pi/2
Math.ceil(nombre) l'entier le plus proche par valeur supérieure
Math.cos(nombre) le cosinus d'un angle en radian
Math.exp(nombre) la valeur exponentielle d'une valeur
floor(nombre) l'entier le plus proche par valeur inférieure
Math.log(nombre) le log de nombre
max(nombre1, nombre2) le maximum entre deux nombres
min(nombre1, nombre2) le minimum entre deux nombres
pow(base, exposant) base puissance exposant
Math.random() une valeur aléatoire entre 0 et 1
round(nombre) l'entier le plus proche de la valeur donnée en argument
Math.sin(angle) le sinus de l'angle donné en radian
Math.sqrt(nombre) la racine carrée de Math.sqrt(number)
Math.tan(nombre) la tangente du nombre donné en radian
4. Les chaines:
Une chaine est une suite de caractères. Elle peut être délimitée par des guillements simples ou doubles.
titi = "toto";
titi = ’toto’;
document.write( 'Je m’+ "appelle "+titi); // va afficher « je m’appelle toto » si la variable titi contient
a = "Bonjour " ;
a .+= "monde" ; // équivalent à a = a + "monde" ; a contient « Bonjour monde »
b) Les fonctions
syntaxe description
text.anchor(nom) Crée un signet dans la page HTML
chaine.big() positionne le couple de balises BIG (gros caractères) autour du texte
chaine.blink() positionne le couple de balises BLINK (clignotant) autour du texte
chaine.bold() positione le couple de balises BOLD (gras)
chaîne.charAt(index) le caractère index de la chaîne (commençant à 0)
escape(chaine) en caractères ASCII des caractères ISO Latin-1 (& devient %26)
chaine.fixed() positionne le couple de balises TT (fixe) autour du texte
chaine.fontcolor(couleur) la couleur donnée à la chaîne de caractères concernée (équivalent à
&tl;FONT COLOR=couleur>)
chaine.fontsize(taille) la taille de police donnée à la chaîne de caractères concernée
(équivalent à &tl;FONT size=taille>)
chaine1.indexOf(chaine2,[depuis]) la position de chaîne2 recherchée dans chaine1 à partir de la position
depuis(-1 si pas trouvé)
chaine.italics() positionne le couple de balises I (italique) autour du texte
chaine1.lastIndexOf(chaine2, [depuis]) retourne la dernière occurrence de chaine2 dans chaine1 à partir de la
position depuis
texte.link(URL) crée un lien hypertexte vers URL à partir de texte
chaine.small() positionne le couple de balises SMALL (petites lettres) autour du texte
chaine.strike() positionne le couple de balises STRIKE (biffé) autour du texte
chaine.sub() positionne le couple de balises SUB(indice) autour du texte
chaine.substring(position1, position2) la chaine de caractères commençant à la position1 et finissant à la
position2
chaine.sup() positionne le couple de balises SUP (exposant) autour du texte
chaine.toLowerCase() convertit la chaine concernée en minuscule
chaine.toUpperCase() convertit la chaine concernée en majuscule
5. Les tableaux:
a) Tableaux simples
Un tableau est un type de données pouvant contenir plusieurs valeurs, indexées numériquement à partir de ZERO.
tableau[0] = "titi";
tableau[1] = "toto!";
tableau[3]="tata";
Remarquons
le A majuscule à Array
Une chaîne de caractères n’est pas un tableau de caractères.
d) fonctions
slice(début, fin) retourne une partie du tableau. var tableau = new Array(45,77,20,87,10,32);
tableau.slice(1, 2);
6. Les dates:
a) Fonctions
syntaxe description
date.getDate() le jour du mois de la date concernée (entier de 1 à 31)
date.getDay() le jour de la semaine de la date concernée (0=dimanche)
date.getHours() l'heure de la journée de la date concernée (0 à 23)
date.getMinutes() la minute de l'heure de la date concernée (0 à 59)
date.getMonth() le mois de la date concernée (0 à 11)
date.getSeconds() la seconde de la minute de la date concernée (0 à 59)
date.getTime() l'heure dans la valeur numérique correspondante
date.getTimezoneOffset() la différence (en minutes) entre l'heure courante et l'heure GMT
date.getYear() le nombre d'années écoulées depuis 1900
Date.parse(chainedate) le nombre de millisecondes depuis le 01/01/1970
date.setDate(valeur) positionne le jour du mois de la date concernée (entier de 1 à 31)
date.setDay(valeur) positionne le jour de la semaine de la date concernée (0=dimanche)
date.setHours(valeur) positionne l'heure de la journée de la date concernée (0 à 23)
date.setMinutes(valeur) positionne la minute de l'heure de la date concernée (0 à 59)
date.setMonth(valeur) positionne le mois de la date concernée (0 à 11)
date.setSeconds(valeur) positionne la seconde de la minute de la date concernée (0 à 59)
date.setTime(valeur) positionne l'heure dans la valeur numérique correspondante
date.setYear(valeur) positionne le nombre d'années écoulées depuis 1900
chainedate.toGMTString() convertit une date en chaîne de caractères en suivant les conventions
GMT (Mar, 01 Mar 1996 20:00:00 GMT)
chainedate.toLocaleString() convertit une date en chaîne de caractères en suivant les conventions
locales (03/01/96 20:00:00)
Date.UTC(an, mois, jour [, h] [, le nombre de secondes écoulées depuis le 01/01/1970 0h0mn
min] [, sec])
a = 3;
b = 5;
if (a > b)
document.write( "a est plus grand que b");
else if (a == b)
document.write( "a est égal à b");
else
document.write( "a est plus petit que b");
dans l’exemple ci-dessous, 2 instructions sont exécutées si le test est valide, on les met donc entre accolades {} et il n’y a
pas de clause elseif ni else.
if (a > b) {
if (a == 5){
document.write( "a égale 5");
document.write( "...");
} else if (a == 6){
document.write( "a égale 6");
document.write( "!!!");
} else
document.write( "a ne vaut ni 5 ni 6");
b) Le Cas
i=1;
switch (i) {
case 0:
document.write( "i égale 0");
case 1:
document.write( "i égale 1");
case 2:
document.write( "i égale 2");
}
affiche
i égale 1i égale 2
2. Boucles
a) Boucle pour
Syntaxe : for (expr1; expr2; expr3) instruction
La première expression (expr1) est évaluée (exécutée), quoi qu'il arrive au début de la boucle.
Au début de chaque itération, l'expression expr2 est évaluée. Si l'évaluation vaut TRUE, la boucle continue et l'instruction
est exécutée. Si l'évaluation vaut FALSE, l'exécution de la boucle s'arrête.
A la fin de chaque itération, l'expression expr3 est évaluée (exécutée).
expr1; expr2; expr3 sont facultatifs
Attention : l’exemple 1 est de loin le meilleur ! Il ne faut surtout pas abuser des contractions comme dans les
exemples 5 et 6 qui rendent les programmes illisibles et dificilement maintenables
b) Pour dans
var toto = new Array(1,7,2,6,4,5,8,9);
for (var i in toto) document.write(i+" : "+ toto[i]+" , ");
Affiche : 0 : 1 , 1 : 7 , 2 : 2 , 3 : 6 , 4 : 4 , 5 : 5 , 6 : 8 , 7 : 9 ,
i = 1;
while (i <= 10) document.write( i++);
Affiche 12345678910
3. Rupture et continuité de boucle
Break permet de quiter immédiatement une boucle :
for (;;) {
if (i > 10) {
break;
}
document.write( i++);
}
continue permet de passer à l’itération suivante sans exécuter le reste des instructions :
G. Les fonctions
Syntaxe :
function nom (arg_1, arg_2, ..., arg_n) {
corps de fonction
return retval;
}
On peut déclarer les fonctions n’importe où dans le programme. Cependant une bonne règle consiste à les
déclarer avant de les utiliser (Ne pas suivre l’exemple ci-dessous)
1. Passage des arguments par valeur
La valeur des paramètres n’est pas modifié :
c=2; // -->
document.write( incr(c,3)); </SCRIPT>
document.write(" , ");
document.write( c); </body>
</html>
Affiche: 5 , 2
Il es préférable de déclarer les fonctions dans la partie HEAD :
<html> <!--
<head>
<SCRIPT LANGAGE="JavaScript"> c=2;
<!-- document.write( incr(c,3));
function incr(a,b){ document.write(" , ");
a += b; // a = a + b document.write( c);
return a ;
} // -->
// --> </SCRIPT>
</SCRIPT>
</head> </body>
<body> </html>
<SCRIPT LANGAGE="JavaScript">
Remarque On aurait pu se contenter de mettre function incr(a,b){ return a+b ;}
2. Passage des arguments par adresse (par variable)
function somme(){
var res = 0;
for (var i = 0; i < somme.arguments.length ; i++) res +=somme.arguments[i] ;
return res;
}// -->
H. Les procédures
C’est la même syntaxe que pour les fonctions on ne met pas de ligne return
test3, a vaut :3
programme, a vaut :2
test4, b vaut :4
programme, b vaut :4
test5, c vaut :5
J. Classes et Objets
Javascript permet la poo (programmation orientée objet) comme java C++ php ou Delphi Il est possible de définir des
classes et d’instancier les objets correspondants
Cette partie suppose une connaissance des langages orientés objet. On ne donnera que la syntaxe sur l’exemple très
classique des carrés et rectangles
Le constructeur porte le nom de la classe (function et non class)
Le mécanisme d’héritage n’existe pas en javascript
This fait référence, dans une classe, à l’objet correspondant à l’instance de cette classe
<html> <SCRIPT LANGAGE="JavaScript">
<head>
SCRIPT LANGAGE="JavaScript"> var rect=new rectangle (3,5);
function rectangle(Long,larg){ // on définit ici
la classe document.write(rect.Lng); // 3
// définitions des fonctions et procédure document.write("<br>");
function perimetre(){ document.write(rect.larg); // 5
return 2*(this.Lng + this.larg) ; document.write("<br>");
} document.write(rect.surf()); // 15
function surface (){ document.write("<br>");
return this.Lng * this.larg ; document.write(rect.perimetre()); // 16
} document.write("<br>");
function double(){
this.Lng *= 2; rect.dble();
this.larg *= 2;
} document.write(rect.Lng); // 6
// affectation des attributs document.write("<br>");
this.Lng = Long; document.write(rect.larg); // 10
this.larg = larg; document.write("<br>");
// affectations des méthodes document.write(rect.surf()); // 60
this.surf = surface; document.write("<br>");
this.dble =double; document.write(rect.perimetre()); // 32
this.perimetre=perimetre; document.write("<br>");
}
</SCRIPT> </SCRIPT>
</head> </body>
<body> </html>
K. Entrées/Sorties
1. sorties
Pour obtenir un affichage dans le navigateur , on utilise
document.write() avec parenthèses obligatoires.
On peut aussi faire ouvrir une fenêtre :
alert('voilà');
2. entrées
Pour que le JavaScript obtienne des informations de l’utilisateur, on peut :
Soit récupérer un élément quelquonque se trouvant dans la page y compris les éléments d’un formulaire (voir
plus loin)
Soit faire
ouvrir une
fenêtre :
x=prompt('entier=',0);
alert(x);
dans ce cas, si l’utilisateur clique sur :
Ø ok, x reçoit la valeur contenue dans la ligne, y compris undefined
Ø Annuler, x reçoit la valeur null
Remarque prompt admet 1 ou 2 paramètres, le deuxième est facultatif et représente la valeur affichée à l’ouverture
de la fenêtre. En cas d’absence de ce paramètre le mot undefined apparaît
Soit pour une réponse binaire :
alert(confirm("d'accord ?"));
confirm renvoie vrai ou faux selon que l’utilisateur clique sur ok ou annuler
L. Fichiers
La lecture et l’écriture dans un fichier local ou distant poserait un sérieux problème de sécurité !!!!!
La seule chose qu’il est possible d’enregistrer ou de lire sur le disque de l’utilisateur, ce sont des Cookies
M. Inclusion de fichiers
Pour inclure un fichier javascript dans une page html, on ajoute l’attribut src suivi de l’URL (relative ou absolue) du
fichier à inclure. Ce fichier ne doit contenir que du code javascript.
N. Evénements : traitement
L’utilisateur du navigateur déclanche un Evenement en opérant soit un clic sur un bouton, un lien, une option d’une liste
déroulante ou à cocher un bouton radio etc.. soit en déplaçant la souris ,etc..
Voici les principaux événements et quelques exemples de balises :
Evénement Se produit lorsque ... Exemples de balises HTML supportant
l'événement
onBlur un champ de saisie d'un formulaire perd le focus <INPUT> <SELECT> <TEXTAREA><TEXT>
onClick l'utilisateur clique avec la souris l'objet HTML <INPUT> <SELECT> <A>
considéré
onChange l'utilisateur change le contenu d'un objet d'un <INPUT> <SELECT> <TEXTAREA>
formulaire HTML
onFocus un champ de saisie d'un formulaire prend le focus <INPUT> <SELECT> <TEXTAREA>
onLoad le document HTML est complètement chargé <BODY>
onMouseOut la souris quitte la zone d'un lien hypertexte <A ... >
onMouseOver la souris rentre dans la zone d'un lien hypertexte <A ... >
onReset Appui sur le bouton reset <INPUT>
onSelect un choix dans un liste est sélectionné <INPUT> <SELECT >
onSubmit un formulaire est soumis au serveur HTTP <FORM>
onUnload on s'apprête à changer de document HTML <BODY>
L’événement est capté par l’objet sur lequel il s’est produit et si le programme indique ce qu’il faut faire au cas où celui-ci
se présente, le code prévu à cet effet se’exécute.
<html>
<head>
<TITLE>Question/réponse</TITLE>
<SCRIPT LANGAGE="JavaScript">
function reponse() {
alert('bonjour ' + document.maforme.leprenom.value);
return true
}
function tst() {
alert('bonjour ' + document.maforme.lenom.value);
return true
}
</SCRIPT>
</head>
<body>
<form name="maforme">
Votre nom : <INPUT type="text" name="lenom" value="" onBlur="tst();">
Votre prénom : <INPUT type="text" name="leprenom" value="">
<INPUT type="submit" value="Valider" onclick="reponse();">
</form>
</body>
</html>
O. Evénements : simulation
Il est possible de simuler la génération d’un événement.
En principe la méthode qui génère l’événement porte le même nom que celle qui la gère mais sans le « on », c’est à dire :
Blur() ; focus() ; click(); submit(); etc...
Dans l’exemple suivant on simule l’action de l’utilisateur qui consiste à placer le focus sur le champ mdp
<html>
<head>
<TITLE>Vérification d’identité</TITLE>
</head>
<body onLoad=”window.document.maforme.mdp.focus();”>
<form name="maforme">
Votre nom : <INPUT type="text" name="lenom" value="">
Votre mot de passe : <INPUT type="password" name="mdp" value="">
<INPUT type="submit" value="Valider" >
</form>
</body>
</html>
<html>
<head>
<TITLE>Vérification d’identité</TITLE>
</head>
<body onLoad=”window.document.maforme.ok.click();”>
<form name="maforme">
Votre nom : <INPUT type="text" name="lenom" value="toto">
Votre mot de passe : <INPUT type="password" name="mdp" value="titi">
<INPUT name=”ok” type="submit" value="Valider" >
</form>
</body>
</html>
ou on simule l’envoi du formulaire, les champs n’apparaissent plus sur la page
<html>
<head>
<TITLE>Vérification d’identité</TITLE>
</head>
<body onLoad=”window.document.maforme.submit();”>
<form name="maforme">
Votre nom : <INPUT type="hidden" name="lenom" value="toto">
Votre mot de passe : <INPUT type="hidden" name="mdp" value="titi">
</form>
</body>
</html>
Remarque : D’un point de vue sécurité, ce n’est pas une bonne idée que de mettre le mot de passe en clair.
P. Objets prédéfinis
Le schéma suivant, que l'on retrouve souvent dans la littérature, illustre la hiérarchie des classes JS
pour le Navigateur :
window
|
+ --parent, frames, self, top
|
+ --location
|
+ --historique
|
+ --document
|
+ --formulaire (FORM)
| |
| + --elements (text fields, textarea, checkbox, password
| radio, select, button, submit, reset)
+ --links
|
+ -- URL
1. Exemple très important :
Le programme ci-dessous est une mine de renseignements, il dresse la liste des propriétés des objets de la feuille :
Technologies Internet JS : Javascript 64 D. Mailliet
MIAGE 2 ème année
<html>
<body>
<form name="maforme">
Votre nom : <INPUT type="text" name="lenom" value="" onBlur="tst();">
<INPUT type="submit" value="Valider" onclick="reponse();">
</form>
<SCRIPT LANGAGE="JavaScript">
<!--
function show_props(obj,obj_name){
var result="";
for(var i in eval(obj)) result+= obj_name+"."+i+" = "+eval(obj)[i]+"<br />\n";
return result;
}
x=prompt("propriétés de l'objet : ","window.document");
alert( show_props(x,x));
document.write( show_props(x,x));
// -->
</SCRIPT>
</body>
</html>
à essayer avec la proposition du prompt window.document , repérer un object et réessayer avec lui par exemple
window.document.maforme puis window.document.maforme.lenom puis etc..
Remarque
Ø le formulaire n’est là que pour observer ses propriétés
Ø la fonction eval qui comme son nom l’indique évalue l’objet passé en paramètre exemple :
eval("5 + 3")
2. Les tableaux prédéfinis
Les principaux objets d'une page HTML peuvent être nommés mais ils sont aussi définis par des tableaux que l'on
retrouve dans la liste suivante :
Array Description
anchors comprend toutes les balises <A> qui contiennent un argument NAME
applets comprend toutes les balises <APPLET> du document
arguments comprend tous les arguments d'une fonction
elements comprend toutes les balises <FORM> dans l'ordre de leur définition
embeds comprend toutes les balises <EMBED> dans l'ordre de leur définition
forms comprend toutes les balises <FORM> du document
frames comprend toutes les balises <FRAME> contenant un FRAMESET dans l'ordre de leur définition
history comprend tous l'historique du navigateur
images comprend toutes les balises <IMG> dans l'ordre de leur définition
links comprend tous les liens <AREA HREF="...">, <A HREF=""> et les objets Link créés par la méthode
linkwith the link
mimeTypes Comprend tous les types MIME supportés par le navigateur (helpers ou plug-ins)
options comprend tous les éléments OPTION d'une balise SELECT
plugins comprend tous les plug-ins installés sur votre navigateur
Ainsi dans le programme suivant :
<html>
<head> </head>
<body>
<form name="calc">
<input type="radio" name="monaie" > franc belge <br />
<input type="radio" name="monaie""> Deutch Mark <br />
<input type="radio" name="monaie" > Lire Italienne <br />
ff : <input type="text" name="franc""> <br />
euros : <input type="text" name="euro"> <br />
<input type="button" value="effacer">
</form>
</body>
</html>
pour accéder à
on a le choix : soit par indexation (la numérotation commence à zéro !!) :
window.document.forms[0].elements[4].value
soit par nommage :
window.document.calc.euro.value
soit par combinaison
window.document.calc.elements[4].value
<HTML>
<HEAD>
<TITLE> communication entre frames </TITLE>
</HEAD>
<FRAMESET rows="20%, 50%" border="5" frameborder="5"
bordercolor="#000000">
<FRAME SRC="haut.html" name="haut">
<FRAME SRC="" name="bas">
<NOFRAMES>
Votre navigateur ne supporte pas les frames. Voici un acces a
<A HREF="fichier3.html">notre site sans frames</A>
</NOFRAMES>
</FRAMESET>
</HTML>
ci-dessous le fichier haut.html et ci contre le résultat :
<HTML>
<HEAD>
<TITLE>Mon site en frames</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
parent.bas.document.writeln('<form>');
parent.bas.document.writeln('<INPUT TYPE="text" >');
parent.bas.document.writeln('');
parent.bas.document.writeln('</form>');
parent.bas.document.close() ;
function recupere(){
alert(parent.bas.document.forms[0].elements[0].value)
}
//-->
</SCRIPT>
</HEAD>
<body bgcolor="#f0f0f0">
<INPUT TYPE="button" name="essai" onClick="recupere()" value="essai">
</body>
</HTML>
Lorsqu’on définit 2 cadres, il faut logiquement 3 fichiers (voir plus haut). Ici, le cadre du bas ne contenent rien
initialement, n’est défini par aucun fichier.
Ce qui apparaît dans le cadre inférieur (nommé bas ) est créé par le script contenu dans le fichier du cadre supérieur
(nommé haut ) le bouton situé dans ce cadre récupère le contenu de l’élément « zone texte » du cadre bas
4. Exercice :
Voici un convertisseur de monnaies nationales européenne :
<html>
<head>
<SCRIPT LANGAGE="JavaScript">
<!--
var taux = 6.55957;
function eurofr(){
window.document.calc.franc.value =window.document.calc.euro.value * taux;
}
function freuro(){
window.document.calc.euro.value =window.document.calc.franc.value / taux;
}
function modif(tx,ch){ // ch est une chaine de 2 caractères
taux = tx;
var chn =window.document.calc.outerHTML;
var pos = (chn.indexOf(window.document.calc.franc.outerHTML));
window.document.calc.outerHTML=chn.substring(1,pos - 5) +ch + chn.substring(pos-
3,chn.length);
eurofr();
}
// -->
</SCRIPT>
</head>
<body>
<form name="calc">
<input type="radio" name="monaie" checked onClick="modif(6.55957,'FF');"> franc français <br />
<input type="radio" name="monaie" onClick="modif(40.3399,'FB');"> franc belge <br />
<input type="radio" name="monaie" onClick="modif(1.95583,'DM');"> Deutch Mark <br />
<input type="radio" name="monaie" onClick="modif(166.386,'Pt');"> pesetas espagnole <br />
<input type="radio" name="monaie" onClick="modif(1936.27,'LI');"> Lire Italienne <br />
ff : <input type="text" name="franc" onkeyup ="freuro()"> <br />
euros : <input type="text" name="euro" onkeyup ="eurofr()" )"> <br />
<input type="button" value="effacer"
onClick="window.document.calc.franc.value='';window.document.calc.euro.value='';">
</form>
</body>
</html>
Le tester, l’étudier et le modifier de façon à :
Le rendre plus esthétique
V. Feuilles de style
A. La création de style
La déclaration de style se fait dans l'entête de la page, encadrée par les balises <STYLE> et </STYLE>.
Il y a 3 possibilités pour affecter un style
modifier le style d'une balise existante
créer une nouvelle classe de style
affecter l'attribut style
Les balises existantes
Voici la syntaxe pour affecter la police arial en 12 points à toutes les cellules des tableaux d'une page.
Toutes les propriétés de style sont détaillées dans le dernier paragraphe.
<HTML><HEAD>
<STYLE>
TD {font-family:arial;font-size:12pt}
</STYLE>
</HEAD>
<BODY>
Ici le corps de la page
</BODY></HTML>
Dans l’exemple ci-dessus, toutes les cellules TD auront comme style par défaut Arial 12pt.
On peut modifier ainsi toutes les balises existantes.
A:hover {text-decoration:underline}
A:active {color:red}
A:visited {color:green}
Avec cette déclaration, le texte de lien :
- est souligné au passage de la souris,
- devient rouge sur un clic,
- reste vert pour indiquer que ce lien a été visité.
ATTENTION : Netscape 4.X ne supporte pas cette fonctionnalité. Plus généralement, il n'est pas possible de
changer le style d'un objet HTML une fois la page chargée dans Netscape.
Création de classes
Modifier les balises existantes n'est pas suffisant quand il s'agit d'affecter un style à une partie de texte. Par exemple dans
cette page, les parties de code sont en courier new vert, grâce à la classe de style "code" qui est déclarée ainsi :
<HTML><HEAD>
<STYLE>
.code {font-family:courrier;color:green}
</STYLE>
</HEAD>
Le point devant code indique la création d'une nouvelle classe appelée code.
Il est aussi possible d'affecter ce style à une balise existante. Pour donner le style courier new vert à une cellule de tableau,
on écrit :
<TD class="code">cellule en police courrier vert</TD>
Affecter l'attribut style
Il n'est pas indispensable de créer une classe de style pour affecter un style à un objet. Par exemple :
<SPAN style="font-family:courier;color:green">Texte mis en forme</SPAN>
L'attribut style d'une balise reçoit les propriétés de style.
Il est toutefois préférable de déclarer une classe pour regrouper la mise en forme.
<HTML><HEAD>
<LINK rel="StyleSheet" type="text/css" href="style.css">
</STYLE>
</HEAD>
La balise <LINK> fait un lien entre la page en cours et le fichier de style externe.
6. Exemples
<html>
<body>
<STYLE>
TH {font-size:large; color: #3B3DE3; background-color: #EEEEEE}
/* alternance de couleurs pour les lignes des tables*/
TR.A0 {background-color: #CCCCCC}
TR.A1 {background-color: #DDDDDD}
</STYLE>
<table>
<TR>
<TH>Titre colonne 1</TH>
<TH>Titre colonne 2</TH>
</TR>
<TR CLASS='A0' >
<TD align=center width=150>cellule 1 de la ligne 1</TD>
<TD align=center width=250>cellule 2 de la ligne 1</TD>
</TR>
<TR CLASS='A1' >
<TD align=center width=150>cellule 1 de la ligne 2</TD>
<TD align=center width=250>cellule 2 de la ligne 2</TD>
</TR>
<TR CLASS='A0' >
<TD align=center width=150>cellule 1 de la ligne 3</TD>
<TD align=center width=250>cellule 2 de la ligne 3</TD>
</TR>
<TR CLASS='A1' >
<TD align=center width=150>cellule 1 de la ligne 4</TD>
<TD align=center width=250>cellule 2 de la ligne 4</TD>
</TR>
</table>
</body>
</html>
donne le tableau suivant :
Dans l’exemple suivant, le style supprime les ascenseurs de la page et du textarea et le javascript fait occuper tout l’écran à
la page :
<HTML>
<HEAD>
<TITLE> Exemple 9</TITLE>
<style>
.noScrollBar{
background-color : #FFFFFF;
scrollbar-track-color : #FFFFFF;
scrollbar-arrow-color : #FFFFFF;
scrollbar-base-color : #FFFFFF;
scrollbar-face-color : #FFFFFF;
scrollbar-shadow-color : #FFFFFF;
scrollbar-darkshadow-color : #FFFFFF;
scrollbar-highlight-color : #FFFFFF;
}
</style>
</HEAD>
B. Syntaxe
On utilise les balises applet
<applet code="xxx.class"
height=100 width =250>
<param name="yyy" value="zzz">
</applet>
exemple :
le code :
<html>
<head>
<title>essai</title>
</head>
<body>
avant
<hr>
<applet code="Essai2.class"
height=100 width =250>
<param name="nbr" value="100">
</applet>
<hr>
après
</body>
</html>
donne :
import java.awt.*;
public class Essai2 extends java.applet.Applet {
int nombre;
public void init( ) {
super.init();
String s = getParameter("nbr");
if (s!=null)
nombre = Integer.parseInt(s);
else
nombre=0;
}
public void start() {
super.start();
}
public void paint(Graphics screen) {
screen.drawString("La racine carré de " +
nombre +
" est " +
Math.sqrt(nombre), 5, 50);
}
}
C. Passage de paramètres
On on utilise les balises <param> et les attributs name et value. Il faut bien entendu connaître le nom des paramètres
utilisés dans le code Java
VII. Php
A. Généralités
Le PHP est né en 1994, Rasmus Lerdorf possède une page web avec son CV. Celui-ci développe un programme pour
garder une trace de ses visiteurs: PHP.
Rapidement, des internautes curieux lui demandent une copie de son programme, et c'est ainsi que Rasmus met en ligne la
version 1.0 de PHP. Très vite, sa création connait un grand succès, et de nombreuses suggestions lui parviennent.
C’est un langage incrusté au HTML et interprété (PHP3) ou compilé (PHP4) côté serveur. Il dérive du C et du Perl dont il
reprend la syntaxe. Il est extensible grâce à de nombreux modules et son code source est ouvert. Comme il supporte tous
les standards du web et qu’il est gratuit, il s’est rapidement répandu sur la toile.
En 1997, PHP devient un projet collectif et son interpréteur est réécrit par Zeev Suraski et Andi Gutmans pour donner la
version 3 qui s’appelle désormais PHP : Hypertext Preprocessor (acronyme récursif à l’exemple du système Open Source
Linux : Is Not UniX).
Il existe par ailleurs des applications web prêtes à l’emploi (PHPNuke, PHP SPIP, PHPSlash…) permettant de monter
facilement et gratuitement son portail. En juillet 2000 plus de 300.000 sites tournaient déjà sous PHP !
Intégration d’un script dans une page
Les pages web sont au format html. Les pages web dynamiques générées avec PHP4 sont au format php. Le code source
php est directement inséré dans le fichier html grâce au conteneur de la norme XML :
<?php … ?>
Exemple:
<html>
<body>
<?php
echo ’’Bonjour’’;
?>
</body>
</html>
Exemple commenté : ( le célèbre « hello world »)
Exemple de script, code source (côté serveur) : Autre écriture du même script :
<html> <?php
<body> echo "<html>\n<body>\n";
<h1>Mon premier script</h1> echo "<h1>Mon premier script</h1>\n";
<?php echo"Bonjour\nMonde\n";?> echo "Bonjour\nMonde\n";
echo "</body>\n</html>\n";
B. Commentaires
Un script php se commente comme en C ou comme en Shell:
Exemple :
<?php
// commentaire de fin de ligne
/* commentaire
sur plusieurs
lignes */
< ?php
?>
Ce code est traduit par le serveur en code html et est envoyé au client pour être interprété par le navigateur.
1. variables
Le typage des variables est implicite en php. Il n’est donc pas nécessaire de déclarer leur type au préalable ni même de les
déclarer avant leur utilisation.
Le nom des variables est sensible à la casse (ie : $x != $X).
Les noms de variables suivent les mêmes règles de nommage que les autres entités PHP. Un nom de variable valide doit
commencer par une lettre ou un souligné (_), suivi de lettres, chiffres ou soulignés.
Une lettre peut être une des lettres minuscules (a à z) ou majuscules (A à Z), et les caractères ASCII de 127 à 255 (0x7f-
0xff).
Les identificateurs de variable sont précédés du symbole « $ » (dollars). Exemple : $toto.
Exemple . Validité des noms de variables
<?php
$var = "Jean";
$Var = "Paul";
echo "$var, $Var"; // affiche "Jean, Paul"
// $4site = 'pas encore'; // invalide : commence par un nombre
$_4site = 'pas encore'; // valide : commence par un souligné
$maïs = 'jaune'; // valide : le code ASCII de ï est 239.
echo $maïs ;
echo $_4site ;
?>
Les variables peuvent être de type entier (integer), réel (double), chaîne de caractères (string) , booléen (boolean)., tableau
(array), objet (object)
Il est possible de convertir une variable en un type primitif grâce au cast (comme en C, java ou delphi).
Le cast est une conversion de type. L’action de caster (transtyper) consiste à convertir une variable d’un type en un autre.
Exemple :
Quelques fonctions :
empty($var) : renvoie vrai si la variable est vide
isset($var) : renvoie vrai si la variable existe
unset($var) : détruit une variable
gettype($var) : retourne le type de la variable
settype($var, "type ") : convertit la variable en type type (cast)
is_long(), is_double(), is_string(), is_array(), is_object(), is_bool(), is_float(), is_numeric(), is_integer(),
is_int()…
2. Nommage dynamique des variables
Une variable peut avoir pour identificateur la valeur d’une autre variable.
Syntaxe : ${$var} = valeur;
Exemple :
$toto = "titi";
${$toto} = 123;
echo $titi; // la variable $titi vaut 123
La portée d’une variable est limitée au bloc dans lequel elle a été crée. Une variable locale à une fonction n’est pas connue
dans le reste du programme. Tout comme une variable du programme n’est pas connue dans une fonction. Une variable
créée dans un bloc n’est pas connue dans les autres blocs, mêmes supérieurs.
3. Constantes
L’utilisateur peut définir des constantes dont la valeur est fixée une fois pour toute. Les constantes ne portent pas le
symbole $ (dollars) en début d’identificateur et ne sont pas modifiables.
define(‘’var’’,valeur) : définit la constante var (sans $) de valeur valeur
Exemple 1 :
Define(”toto”,”titi”);
echo toto; // affiche ‘titi’
Exemple 2 :
define(année,2003);
echo année; // affiche 2003
Contrairement aux variables, les identificateurs de constantes (et aussi ceux de fonction) ne sont pas sensibles à la
casse.
4. Références
On peut à ,la manière des pointeurs en C, faire référence à une variable grâce à l’opérateur & (ET commercial).
Exemple 1 :
function change($var) {
$var++; // la fonction incrémente en local l’argument
}
$nbr = 1; // la variable $nbr est initialisée à 1
change(&$nbr); // passage de la variable par référence
echo $nbr; // sa valeur a donc été modifiée
5. La valeur sans valeur
La valeur spéciale NULL représente l'absence de valeur. Une variable avec la valeur NULL n'a pas de valeur. La constante
NULL est insensible à la casse.
<?php
$var = Null;
?>
6. opérateurs divers
a) Opérateurs d’assignement :
Pour l’affectation on utilise = (pour la comparaison = =)
, *= /=, +=, -=, %= ; .=
$a=3 ;
$x*=$y // équivalent à $x=$x*$y),
b) Opérateurs de comparaison :
,== (égalité), < (inférieur strict), <= (inférieur large), >, >=, != (différence)
c) Opérateurs ‘affectation conditionnelle
Signalons un opérateur très spécial qui équivaut à une structure conditionnelle complexe if then else à la différence qu’il
renvoie un résultat de valeur pouvant ne pas être un booléen : l’opérateur ternaire.
Syntaxe :
(condition)?(expression1):(expression2);
Si la condition est vrai alors évalue et renvoie l’expression1 sinon évalue et renvoie l’expression2.
Exemple :
$nbr = ($toto>10)?($toto):($toto%10);
Dans cet exemple, la variable $nbr prend $toto pour valeur si $toto est strictement supérieur à 10, sinon vaut le reste de la
division entière de $toto par 10.
7. Variables prédéfinies
Signification Nom (Php4) Ancien nom (Php3)
Variables de serveur : $_SERVER $HTTP_SERVER_VARS
D. Types
Même si les variables n'ont pas à être explicitement déclarées, PHP n'en conserve pas moins la notion de type
1. Booléens
C'est le type le plus simple. Un booléen prend les valeurs de TRUE ou FALSE.
a) Opérateurs logiques :
and, && (et), or, || (ou), xor (ou exclusif), ! (non)
2. Les nombres
a) Les entiers:
Les entiers sont de nombres dont la plage dépend des plate-formes, mais reste équivalente à la portée du type long en C.
Sur une plate-forme 32 bits, les valeurs vont de -2 147 483 648 à +2 147 483 647. En cas de dépassement de capacité, PHP
convertit automatiquement l'entier incriminé en nombre décimal.
On pourra exprimer un entier en décimal, hexadécimal ou encore en octal.
$decimal = 10;
$hexa = 0x0F;
$octal = 020;
$normal = 0.017;
$scientifique = 17.0E-3;
c) Les opérateurs
+ (addition), - (soustraction), * (multiplié), / (divisé), % (modulo), ++ (incrément), --(décrément). Ces deux derniers
peuvent être pré ou post fixés
$i = 5 ;
$i++ ; // i vaut 6 equivalent à i+=1 ou encore à i=i+1
echo $i++ ; // affiche 6 et ensuite donne à i la valeur 7
echo ++$i ; // donne à i la valeur 8 et ensuite affiche 8
d) Les constantes mathématiques
Constante Valeur Description
M_PI 3.14159265358979323846 Pi
M_E 2.7182818284590452354 e
M_LOG2E 1.4426950408889634074 log_2 e
M_LOG10E 0.43429448190325182765 log_10 e
M_LN2 0.69314718055994530942 log_e 2
M_LN10 2.30258509299404568402 log_e 10
M_PI_2 1.57079632679489661923 pi/2
M_PI_4 0.78539816339744830962 pi/4
M_1_PI 0.31830988618379067154 1/pi
M_2_PI 0.63661977236758134308 2/pi
M_SQRTPI 1.77245385090551602729 sqrt(pi) [4.0.2]
M_2_SQRTPI 1.12837916709551257390 2/sqrt(pi)
M_SQRT2 1.41421356237309504880 sqrt(2)
M_SQRT3 1.73205080756887729352 sqrt(3) [4.0.2]
M_SQRT1_2 0.70710678118654752440 1/sqrt(2)
M_LNPI 1.14472988584940017414 log_e(pi) [4.0.2]
M_EULER 0.57721566490153286061 Euler constant [4.0.2]
e) Les fonctions
Nom Signification
Abs Valeur absolue
Acos arc cosinus
acosh Arc cosinus hyperbolique
Asin arc sinus
asinh Arc sinus hyperbolique
Atan2 arc tangent de deux variables
Atan arc tangent
atanh Arc tangeant hyperbolique
base_convert Convertit un nombre entre des bases arbitraires.
BinDec Convertit de binaire en décimal
3. Les chaines:
Une chaine est une suite de caractères. Elle peut être délimitée par des guillements simples ou doubles. Attention, leur
utilisation ne produira pas le même effet: les chaines entourées de guillemets doubles sont sujettes aux substitutions de
variables et au traitement des séquences d'échappement, contrairement aux chaines entourées de guillemets simples.
<?
$titi = "toto";
echo "Je m’appelle $titi";
echo 'Je m\’appelle $titi ';
?>
Le premier appel à echo va afficher « je m’appelle toto » tandis que le deuxième va afficher « je m’appelle $titi ».
Les séquences d'échappement de PHP:
\n: Nouvelle ligne
\t: Tabulation
\r: Retour chariot
\\: Anti slash
\$: Signe dollar
\’ : l’apostrophe
\" : le guillemet
a) L’opérateur de Concaténation
le . (point) .
4. Les tableaux:
a) Tableaux simples
Un tableau est un type de données pouvant contenir plusieurs valeurs, indexées numériquement ou à l'aide de chaines.
$tableau[0] = "titi";
$tableau[1] = "toto!";
On remarquera que lorsqu'on veut ajouter un élément au tableau, il suffit de faire une affectation dans spécifier
d'indice:
$tableau[]="tata";
Cette technique est aussi valable pour les tableaux dont les valeurs ne sont pas indexées successivement. (i.e si les postes
1, 10, et 3 d'un tableau sont affectées, PHP affectera dans ce cas le poste d'indice 11)
Précision sur les chaines de caractères: notez que celles-ci peuvent tout à fait être considérées comme des tableaux de
caractères. Une affectation de type $MaChaine[3]='a'; est tout à fait possible.
$mois["Janvier"] = 31;
$mois["Février"] = 28;
$mois["Mars"] = 31;
on peut aussi écrire :
$toto = array(array(1,2,3),array(4,5,6)) ;
print $toto[1][2]; // affiche 6 ; les indices (clé) commencent à 0 !
$toto = array(1 => array(1 => 1,2,3),array(1 => 4,5,6)) ;
print $toto[2][3]; // affiche 6 ; ici les indices (clé) commencent à 1 !
d) fonctions
Nom Signification
e) Exemple
$toto = array("abc", "def", "ghij", "klmn", "opqrst", "uvwx");
$titi = each($toto);
print_r($titi); // affiche Array ( [1] => abc [value] => abc [0] => 0 [key] => 0 )
echo '<br />';
$titi = each($toto);
print_r($titi); // affiche Array ( [1] => def [value] => def [0] => 1 [key] => 1 )
echo '<br />';
$titi = each($toto);
print_r($titi); // affiche Array ( [1] => ghij [value] => ghij [0] => 2 [key] => 2 )
echo '<br />';
$titi = each($toto);
print_r($titi); // affiche Array ( [1] => klmn [value] => klmn [0] => 3 [key] => 3 )
echo '<br />';
list($a,$b,,$c)=$toto;
list(,$d)=$titi ;
print($d); // affiche klmn
echo '<br />';
PHP propose 2 façons de rassembler des instructions à l'intérieur d'un bloc, pour les fonctions de contrôle if, while,
for, foreach et switch soit :
En encadrant les instructions par des accolades {}
En remplaçant l'accolade d'ouverture par deux points (:) et l'accolade de fermeture par, respectivement, endif;,
endwhile;, endfor;, ou endswitch;.
1. Conditionnelle
a) Le Si
Syntaxes :
if (test1) instructions1 elseif (test2) instructions2 else instructions3
if (test1) : instructions1 elseif (test2) : instructions2 else instructions3 endif
Elseif et else sont facultatifs les parenthèses autour des tests sont obligatoires. Si les instructions sont multiples, il faut les
mettre entre accolades {}.
$a = 3;
$b = 5;
if ($a > $b)
print "a est plus grand que b";
elseif ($a == $b)
print "a est égal à b";
else
print "a est plus petit que b";
dans l’exemple ci-dessous, 2 instructions sont exécutées si le test est valide, on les met donc entre accolades {} et il n’y a
pas de clause elseif ni else.
if ($a > $b) {
print "a est plus grand que b";
$b = $a;
}
Autre syntaxe :
if ($a == 5):
print "a égale 5";
print "...";
elseif ($a == 6):
print "a égale 6";
print "!!!";
else:
print "a ne vaut ni 5 ni 6";
endif;
b) Le Cas
print "i égale 1";
}
switch ($i) { if ($i == 2) {
case 0:
print "i égale 2";
print "i égale 0"; }
break;
case 1:
print "i égale 1"; le break est obligatoire,par exemple :
break; $i=1;
case 2: switch ($i) {
print "i égale 2"; case 0:
break; print "i égale 0";
} case 1:
est équivalent à
print "i égale 1";
if ($i == 0) { case 2:
print "i égale 0"; print "i égale 2";
} }
if ($i == 1) {
affiche
i égale 1i égale 2
2. Boucles
a) Boucle pour
Syntaxe : for (expr1; expr2; expr3) instruction
La première expression (expr1) est évaluée (exécutée), quoi qu'il arrive au début de la boucle.
Au début de chaque itération, l'expression expr2 est évaluée. Si l'évaluation vaut TRUE, la boucle continue et l'instruction
est exécutée. Si l'évaluation vaut FALSE, l'exécution de la boucle s'arrête.
// exemple 1 }
for ($i = 1; $i <= 10; $i++) { /* exemple 4 : le même que le 3 mais avec la
print $i; syntaxe alternative (sans {}) et contraction de
} 2 lignes */
// exemple 2 $i = 1;
for ($i = 1;;$i++) { for (;;) :
if ($i > 10) { if ($i > 10) {
break; break;
} }
print $i; print $i++;
} endfor;
// exemple 3 // exemple 5
$i = 1; for ($i = 1; $i <= 10; print $i, $i++) ;
for (;;) { // boucle infinie // exemple 6
if ($i > 10) { for ($i = 1; $i <= 10; print $i++) ;
break; // rupture de boucle // exemple 7
} for ($i = 0; $i <= 9; print ++$i) ;
print $i; // exemple 8
$i++; for ($i = 1; $i <= 10; print $i, ++$i) ;
Les 8 exemples affichent tous 12345678910
b) Boucle pour chaque
Syntaxes :
foreach(array_expression as $value) commandes
foreach(array_expression as $key => $value) commandes
La première forme passe en revue le tableau array_expression. A chaque itération, la valeur de l'élément courant est
assignée à $value et le pointeur interne de tableau est avancé d'un élément (ce qui fait qu'à la prochaine itération, on
accédera à l'élément suivant).
La deuxième forme fait exactement la même chose, mais c'est la clé de l'élément courant qui est assigné à la variable $key.
Lorsque foreach démarre, le pointeur interne de fichier est automatiquement ramené au premier élément du tableau. Cela
signifie que vous n'aurez pas à faire appel à reset() avant foreach.
Note : De plus, notez que foreach travaille sur une copie du tableau spécifié, et pas sur le tableau lui-même. Par
conséquent, le pointeur de tableau n'est pas modifié, comme il le serait avec le fonction each(), et les modifications faites
dans le tableau ne seront pas prises en compte dans le tableau original.
$i = 1;
while ($i <= 10) print $i++;
Affiche 12345678910
$i = 5;
do
print $i--; // post décrémenté
while ($i>0);
echo '<br>';
$i = 5;
do {
print --$i; // prédécrémenté
} while ($i>0);
Affichent :
54321
43210
for (;;) :
if ($i > 10) {
break;
}
print $i++;
endfor;
continue permet de passer à l’itération suivante sans exécuter le reste des instructions :
$toto=array(1,7,2,6,4,5,8,9);
while (list ($cle, $valeur) = each ($toto)) {
if (!($valeur % 2)) { // évite les valeurs paires
continue;
}
print("$cle : $valeur , ");
}
Affiche : 0 : 1 , 1 : 7 , 5 : 5 , 7 : 9 ,
F. Les fonctions
Syntaxe :
function nom ($arg_1, $arg_2, ..., $arg_n) {
corps de fonction
return $retval;
}
On peut déclarer les fonctions n’importe où dans le programme. Cependant une bonne règle consiste à
les déclarer avant de les utiliser (Ne pas suivre l’exemple ci-dessous)
On peut donner une valeur par défaut aux arguments
$c=2;
print incr($c,3);
print incr($c);
print $c;
function incr($a,$b=1){
$a += $b; // $a = $a + $b
return $a ;
}
Affiche : 532
function incr2(&$a,$b=1){
$a += $b; // $a = $a + $b
return $a ;
}
$c=2;
print incr2($c,3);
print incr2($c);
print $c;
affiche : 566
G. Les procédures
C’est la même syntaxe que pour les fonctions on ne met pas de ligne return
$a = 1; /* portée globale */
function test() {
echo " a vaut :";
echo $a; /* portée locale */
}
affiche le message :
a vaut :
La valeur globale (1) de a n’est pas connue localement et donc, il n’y a pas d’affichage pour la valeur de a.
En PHP, une variable globale doit être déclarée à l'intérieur de chaque fonction afin de pouvoir être utilisée dans cette
fonction. Par exemple:
$a = 1;
$b = 2;
function somme() {
global $a, $b;
$b = $a + $b;
}
somme();
echo $b;
Le script ci-dessus va afficher la valeur 3. En déclarant globales les variables $a et $b locales de la fonction somme(),
toutes les références à ces variables concerneront les variables globales. Il n'y a aucune limite au nombre de variables
globales qui peuvent être manipulées par une fonction.
Une deuxième méthode pour accéder aux variables globales est d'utiliser le tableau associatif prédéfini $GLOBALS. Le
précédent exemple peut être réécrit de la manière suivante:
$a = 1;
$b = 2;
function somme() {
$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];
}
somme();
echo $b;
I. Classes et Objets
Php permet la poo (programmation orientée objet) comme java C++ javasctipt ou Delphi Il est possible de définir des
classes et d’instancier les objets correspondants
Cette partie suppose une connaissance des langages orientés objet. On ne donnera que la syntaxe sur l’exemple très
classique des carrés et rectangles
Le constructeur porte le même nom que la classe (comme en java)
Le mécanisme d’héritage s’obtient par extends
This fait référence, dans une classe, à l’objet correspondant à l’instance de cette classe
<?php }
}
class rectangle {
var $larg,$Long; $rect = new rectangle(5,12);
function rectangle($Long,$larg){
$this->Long = $Long; print $rect->surface();
$this->larg = $larg; echo '<br/>';
} $rect->double();
function surface (){ print $rect->surface();
return $this->Long * $this->larg ; echo '<br/>';
} print $rect->perimetre();
function double(){
$this->Long *= 2;
$this->larg *= 2; echo '<br/>';
} $K = new carre(5);
function perimetre(){
return 2*($this->Long + $this->larg) ; print $K->surface();
} echo '<br/>';
} $K->double();
print $K->surface();
echo '<br/>';
class carre extends rectangle { print $K->perimetre();
function carre($cote){
$this->Long = $cote; ?>
$this->larg = $cote;
J. Entrées/Sorties
1. sorties
Pour obtenir du serveur l’envoi vers le client (navigateur) de caractères constituant du code html, on utilise indiferemment
print() ou echo() avec ou sans parenthèses.
2. entrées
Pour que le serveur obtienne des informations du client, on peut envoyer par l’url des paramètres avec leur valeur
(méthode get) de la manière suivante :
<?php
echo "$a+$b=".($a+$b)
?>
Le code précédent, contenu dans le fichier tstparam.php et appelé de cette façon :
Soit directement
Soit avec la balise href
soit par le biais des formulaires soit avec get soit avec post
la méthode get transmet les informations dans l’URL avec la syntaxe ci-dessus(la taille des info est davantage
limitée qu’avec post )
la méthode post les transmet sans qu’elles soient visible dans l’URL On préférera donc en général la méthode
post pour des questions de confidentialité, la méthode get est bien utile pour vérifier le bon passage des
informations durant la phase de développement.
Le passage de paramètres s’effectue de la manière suivante :
K. Fichiers
La lecture et l’écriture dans un fichier local ou distant se fait de la manière suivante :
Pour l’écriture :
$filename = 'ess.txt';
$somecontent = "Ajout de chaîne dans le fichier \n";
fclose($handle);
} else {
print "Le fichier $filename n'est pas accessible en écriture.";
}
Et pour la lecture
?>
L. Inclusion de fichiers
Pour inclure un fichier contenant du php dans du code php, on utilise :
include(), include_once(), require() et require_once().
VIII. PhpMyAdmin
On y accède dans le menu principal de easyphp sous windows (ou après avoir téléchargé et installé PhpMyAdmin sous
linux) On voit ci-dessous le répertoire de stockage des bases et des tables.
On voit ci-dessus les différentes bases que l’on peut développer en cliquant sur le + et découvrir les tables qui la compose
donnera :
# phpMyAdmin MySQL-Dump
# version 2.2.0rc4
# http://phpwizard.net/phpMyAdmin/
# http://phpmyadmin.sourceforge.net/ (download page)
#
# Serveur: localhost
# Généré le : August 6, 2003, 6:52 pm
# Version du serveur: 3.23.40
# Version de PHP: 4.0.6
# Base de données: `calrep`
# --------------------------------------------------------
#
# Structure de la table `jours`
#
#
# Contenu de la table `jours`
#
#
# Structure de la table `mois`
#
#
# Contenu de la table `mois`
#
On peut sauvegarder les lignes dans un fichier ess.sql (par exemple) et ajouter au début du fichier ( par exemple après
# --------------------------------------------------------
) les lignes :
USE calrep;
Remarque : pour créer Base/Tables/Données, on peut soit utiliser l’interface proposée par phpMyAdmin puis
sauvegarder (c’est plus prudent) dans un fichier. Soit créer directement le fichier grâce à un éditeur de texte et utiliser le
procédure ci-dessus. Les documentations ne manquent pas (voir les copies d’écran ci-dessus) Ne pas hésiter à les consulter
<?php
define(NOM,"xxx");
define(PASSE,"xxx");
define(SERVEUR," xxx");
define(BASE,"xxx ");
function Erreur($message){
print("<DIV style=\"color:red\">");
print($message);
print("</DIV>");
exit;
}
function FermerBase(){
if (mysql_close()==false)
Erreur("Fermeture impossible de la base");
}
function ouvrirBase(){
$connexion=mysql_connect(SERVEUR,NOM,PASSE);
if ($connexion ==0)
Erreur("impossible d'etablir la connexion");
if(mysql_select_db(BASE, $connexion) == 0)
Erreur("impossible de se connecter a la base "+BASE);
}
?>
Remplacer les xxx par les valeurs correspondantes :
Le nom de l’utilisateur autorisé à accéder à la base
Son mot de passe
Adresse IP ou nom du serveur MySql (par exemple : localhost)
Nom de la base
Il est important de donner à ce fichier l’extension .php alors qu’une autre extension conviendrait mais n’offrirait pas
de sécurité puisqu’un accès directe par l’url permettrait de lire son contenu puisque l’interprète php ne l’interpréterait pas
(à cause de l’extension qui ne serait pas reconnu)
Il suffit ensuite de mettre au début du fichier : require("connect.php"); pour l’inclure dans les programme qui doivent
effectuer des requêtes mysql
<?php
require("connect.php");
ouvrirBase();
$requete="select * from xxx";
$resultat=mysql_query($requete);
if($resultat == 0)
Erreur("impossible d'effectuer la requete <BR>$requete");
if (mysql_num_rows($resultat)==0)
Erreur("désolé nous n'avons aucune information");
// récupèration du nombre de champs
$nbChamps = mysql_num_fields($resultat) ;
$requete="show tables";
et
$requete="show databases";
Le programme ci-dessus donne la liste des champs et des enregistrements presque sans aucune mise en forme, echo' , ';
sépare les éléments de chaque enregistrement et echo '<br/>'; insère un passage à la ligne entre les différents
enregistrements
D. Mailliet