Académique Documents
Professionnel Documents
Culture Documents
PARTIE
PROGRAMMATION WEB
Nicolas Lumineau
nicolas.lumineau@univ-lyon1.fr
Serveur Client
Internet
BD BDW1
Remarque:
Le fichier peut lui-même référencer d’autres fichiers
nécessaire pour l’affichage (ex: images)
BDW1
Client
Serveur
(5) : affichage
(4) : envoi de index.html
de
index.html
(3) : lecture de
index.html (2) : accès à index.html
fichiers
index.html BDW1
4
REMARQUE
Pour changer le contenu affiché d’une page statique, il
est nécessaire d’éditer le fichier au niveau du serveur.
Question
Que se passe-t-il si l’on souhaite changer le contenu d’une
page au moment où elle est demandée ?
en fonction :
du contenu des données dans un SGBD
de paramètres fournis au moment de la requêtes
BDW1
(3) : lecture de
index.php (2) : accès à index.php
fichiers
index.php BDW1
(7) : affiche la
page HTML
7
EXEMPLES DE LANGAGES UTILISÉS
Langages utilisés :
Pour la structure et le contenu des pages :
HTML, XML
SQL
8
HTML
INTRODUCTION À HTML
HTML : HyperText Markup Language
Langage de balisage (structure + contenu)
Créé au CERN en 1990
Standard W3C depuis 1996
Fichier .html
En continuelle évaluation : HTML5 (depuis 2014)
BDW1
10
HTML
Fichier texte contenant des informations de structuration.
La structure est indiquée à l'aide de balises :
Le nom de la balise indique le type de mise en forme à appliquer.
On met une balise ouvrante au début du morceau de texte
concerné :
<nom_balise>debut_du_texte…
On met une balise fermante à la fin du texte concerné :
…fin_du_texte</nom_balise>
Attention: La différence entre une balise fermante et une balise
ouvrante se limite au slash (/)
11
HTML
l'affichage.
12
STRUCTURE D’UNE PAGE HTML
Une page HTML a la structure suivante :
<!DOCTYPE html>
<html>
<head>
<title>titre de la page</title>
</head>
<body>
<p>Partie affichée dans le navigateur.</p>
</body>
</html>
14
EN-TÊTE HTML
Partie HEAD du fichier HTML
Ne s’affiche pas dans le contenu du navigateur !!!
<footer>…</footer> BDW1
17
ENTÊTE ET PIED DE PAGE
Balise: <header>…</header>
Balise: <footer>…</footer>
un lien de contact
18
MENU DE NAVIGATION DE PAGE
Balise: <nav>…</nav>
BDW1
19
SECTION / ARTICLE / APARTÉ DE PAGE
Balise: <section>…</section>
Balise: <article>…</article>
Balise: <aside>…</aside>
20
PARAGRAPHE ET RETOUR À LA LIGNE
Balise paragraphe : <p>…</p>
<p>
Un texte qui s’étend sur plusieurs
lignes et qui forme un paragraphe
</p>
<p>
Un texte qui s’étend <br/>
sur plusieurs <br/>
lignes et qui forme un paragraphe
</p>
BDW1
21
MOTS PLUS OU MOINS IMPORTANTS
Balise pour mots très importants : <mark>…</mark>
<p> Un contenu avec <mark>des mots très importants </mark> à
l’intérieur.</p>
BDW1
22
TITRE ET SOUS-TITRE
Balise : <h1>…</h1>, <h2>…</h2>,<h3>…</h3>, ….
<h1>un titre</h1>
Forme un titre important (paragraphe avec un affichage
plus gros, en gras).
<h2>un sous-titre</h2>
Forme un titre moins important (affichage un peu moins
gros).
...
<h6>un sous-sous-…-sous-titre</h6>
Forme un petit titre. BDW1
23
EXEMPLE
<!DOCTYPE html>
<html>
<head>
<title>La page de Toto</title>
</head>
<body>
<h1>Toto</h1>
<h2>L'histoire de Toto</h2>
<p>Il était une fois ...</p>
<p>Chemin faisant …</p>
<h2>Les amis de Toto</h2>
<p>Ouioui</p>
<p>Casimir</p>
</body>
</html>
BDW1
24
LES LISTES
Les listes non ordonnées
Balise : <ul> <li> contenu ligne</li> </ul>
<ul>
<li>Ligne1</li> • Ligne1
<li>Ligne2</li> • Ligne2
<li>Ligne3</li> • Ligne3
</ul>
<ol>
<li>Ligne1</li> 1. Ligne1
<li>Ligne2</li> 2. Ligne2 BDW1
<li>Ligne3</li> 3. Ligne3
</ol>
25
LES TABLEAUX
Pour créer un tableau : <table> … </table>
Pour créer l’entête de
colonne : <th>…</th>
Pour créer un
contenu:
<tbody>… </tbody>
27
LES LIENS HYPERTEXTES
<a href="adresse_web">texte</a>
texte devient un lien cliquable.
lorsque l'on clique sur texte, le navigateur va à l'adresse
(URL) adresse_web.
Exemples :
<a href="http ://www.w3.org/TR/html401/">Documentation HTML</a>
Le texte « Documentation HTML » est un lien vers la page web dont
l'adresse est http ://www.w3.org/TR/html401/
Adresse absolue
Exemples :
<a href="http ://www.w3.org/TR/html401/">Documentation HTML</a>
Le texte « Documentation HTML » est un lien vers la page web dont
l'adresse est http ://www.w3.org/TR/html401/
Adresse relative
BDW1
30
LES IMAGES
Inclure une image avec une légende :
<figure>
<img src="adresse_web_image" alt="texte_alternatif"/>
<figcaption> Figure 1 : un exemple </figcaption>
</figure>
31
REGROUPEMENT
Deux types de balises
INLINE (ex: <a>, <img>)
BLOCK (ex: <p>)
Règle
Un élément de type INLINE peut être placé dans un
élément de type BLOCK
Mais la réciproque est fausse !
BDW1
32
REGROUPEMENT
Balises: <div>…</div> et <span>…</span>
34
EXEMPLES DE FORMULAIRES BIEN CONNUS !
BDW1
35
FORMULAIRE: BALISE PRINCIPALE
<form action="adresse_web"
method="POST"
name="nomF">
contenu_formulaire
</form>
http://www710.univ-lyon1.fr/~nluminea/index.php?ue=licence
POST
Les paramètres sont encodés séparément de l'adresse web.
Plus pratique pour les formulaires.
BDW1
37
COMPOSANTS DE FORMULAIRES
Un formulaire peut contenir
Des onglets de saisie de texte
Des cases à cocher
Balise de type <input>
Des groupes d’option
Des boutons
Remarque:
Un clic sur le label donne le focus au composant associé
BDW1
39
INPUT DE TYPE TEXT
<label for="i1">Un champ texte</label>
<input id="i1" type="text" name="nom_input"/>
Crée un champ de saisie pour une ligne de texte (accompagné d’un
label).
BDW1
40
INPUT DE TYPE PASSWORD
<input id="id2" type="password" name="nom_input" />
Crée un champ de saisie pour une ligne de texte cachée.
BDW1
41
INPUT DE TYPE SUBMIT OU RESET
<input id="id3" type="submit" value="texte">
Créée un bouton déclenchant le chargement de la page
de destination (attribut action de la balise <form>).
texte est un texte qui sera affiche sur le bouton.
BDW1
42
INPUT DE TYPE CHECKBOX
<label>Choix1<input type="checkbox" name="nomC"
id="id1" value="val1"></label>
<label>Choix2<input type="checkbox" name="nomC"
id="id2" value="val2"></label>
43
INPUT DE TYPE RADIO
<label>Choix1<input type="radio" name="nomC"
id="id1" value="val1"></label>
<label>Choix2<input type="radio" name="nomC"
id="id2" value="val2"></label>
44
INPUT DE TYPE HIDDEN
<input type="hidden" name="nom" value="val" />
BDW1
45
FORMULAIRE : SAISIE D’UN GRAND TEXTE
<textarea name="nom" rows="h" cols="l">
contenu
</textarea>
46
LISTE DÉROULANTE
<select name="nom">
<option value="val1">Texte 1</option>
<option value="val2">Texte 2</option>
...
</select>
Crée une liste déroulante ayant comme sélection possible : Texte 1, Texte 2,. . .
La valeur du paramètre nom est donnée par la sélection choisie par l'utilisateur :
val1 pour Texte 1
val2 pour Texte 2
...
L'attribut value est optionnel.
Par défaut c'est le texte dans la balise <option></option>
On peut ajouter selected="true" dans une des balises
options pour pré-sélectionner cette option.
<select name="nom">
<option value="val1">Texte 1</option>
BDW1
<option value="val2" selected=‘true’>Texte 2</option>
...
</select> 47
QUELQUES ÉLÉMENTS DE FORMULAIRES
HTML5
Nouveaux types de l’élément input en HTML5:
tel, url, email
search
datalist (auto-complète un champ grâce à une liste de
valeurs prédéfinies)
date, time, datetime, week, month
number
range (barre de progression)
color
BDW1
48
QUELQUES ATTRIBUTS SPÉCIFIQUE À
HTML5
placeholder : texte indicatif dans un champ
textuel, qui s’efface quand l’utilisateur commence
à saisir un texte
required : le formulaire ne peut être soumis si un
des composant avec l’attribut required n’est pas
rempli.
pattern : vérifie que le champ respecte une
expression régulière donnée (ex: une url)
…
http://www.w3schools.com/tags/ BDW1
49
BONNES PRATIQUES
Les navigateurs sont assez tolérants aux erreurs de
programmation en HTML … mais ce n’est pas une
raison !
Aérer votre code ! Ce n’est pas du WYSWYG!!
Commenter votre code avec les balises <!-- … -->
Ecrire les balises en minuscules
Penser à l’accessibilité
en particulier pour les images : attribut alt
Eviter les balises spécifiques à un navigateur
Ne pas hésiter à consulter la documentation
http://www.w3schools.com
Valider votre code HTML avec un validateur
BDW1
http://validator.w3.org
50
CSS
BDW1
51
UN PAGE WEB ÇA PEUT ÊTRE ÇA …
BDW1
52
…OU ÇA!
BDW1
TOUT EST QUESTION DE MISE EN FORME !
Car il s’agit de la même page qu’au transparent précédent 53
MISE EN FORME
Avant : mise en forme et contenu mélangé dans le code HTML
Balises dédiées : <center>, <font>, attribut align, etc.,
BDW1
54
CSS
Cascading Style Sheets
55
CSS
propriété : valeur ;
BDW1
styles.css +
h1{
Color:red;
}
=
Mon titre coloré
BDW1
57
DÉCLARATION DU CSS
On peut placer du code CSS à trois niveaux :
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="types.css">
<link rel="stylesheet" type="text/css"
href="./autreCss/layout.css">
<link rel="stylesheet" type="text/css" href="color.css">
<head>
<body>
…
</body>
</html>
BDW1
59
NOTION DE CASCADE
Ordre de priorité :
accordée à la déclaration la plus « proche » de l’élément à
styliser
+ -
BDW1
60
NOTION DE CASCADE
index.html
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href=" style.css">
styles.css
h1{color:yellow;}
BDW1
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href=" style.css">
styles.css
h1{color:yellow;}
BDW1
Exemple d’héritage
Si on déclare une balise body avec une couleur de
fond bleue, un paragraphe, sans style spécifique et
dont le parent direct est la balise body, aura une BDW1
couleur de fond bleue
63
SYNTAXE EN CSS
sélecteur{
propriété1 : valeur1;
propriété2 : valeur2;
…
}
BDW1
64
SÉLECTEUR
Sélecteur : “pattern” qui sélectionne l’élément ou
le groupe d’éléments sur lesquels va s’appliquer
le style
BDW1
65
SÉLECTEUR
Sélecteur : “pattern” qui sélectionne l’élément ou
le groupe d’éléments sur lesquels va s’appliquer
le style
BDW1
66
SÉLECTEUR
Sélecteur : “pattern” qui sélectionne l’élément ou
le groupe d’éléments sur lesquels va s’appliquer
le style
<html>
Types
… de sélecteur possibles :
<body>
Une<p>Tous
balise mes</p> p{
<p>paragraphes</p> color : yellow;
<p>seront jaunes</p> font-style : italic;
Un nom de classe (introduit par .)
<p>et en italique</p> }
</body>
Un identifiant d’élément (introduit par #)
</html>
BDW1
67
SÉLECTEUR
Sélecteur : “pattern” qui sélectionne l’élément ou
le groupe d’éléments sur lesquels va s’appliquer
le style
.mesItems{
color : grey;
Types de sélecteur possibles : font-style : bold;
Une balise }
BDW1
68
SÉLECTEUR
Sélecteur : “pattern” qui sélectionne l’élément ou
le groupe d’éléments sur lesquels va s’appliquer
le style
<html>
…
<body> .mesItems{
<ul> color : grey;
Types de sélecteur possibles :
<li class="MesItems"> font-style : bold;
Accueil
Une balise }
</li>
<li class="MesItems">
Contact
Un nom de classe (introduit par .)
</li>
<li class="MesItems">
Liens
Un identifiant d’élément (introduit par #)
</li>
</body>
</html>
BDW1
69
SÉLECTEUR
Sélecteur : “pattern” qui sélectionne l’élément ou
le groupe d’éléments sur lesquels va s’appliquer
le style
#monItem{
color : black;
Types de sélecteur possibles : font-style : normal;
Une balise }
BDW1
70
SÉLECTEUR
Sélecteur : “pattern” qui sélectionne l’élément ou
le groupe d’éléments sur lesquels va s’appliquer
le style
<html>
…
<body> #monItem{
<ul> color : black;
Types de sélecteur possibles :
<li class="MesItems"> font-style : normal;
Accueil
Une balise }
</li>
<li class="MesItems">
Contact
Un nom de classe (introduit par .)
</li>
<li id="MonItem">
Liens
Un identifiant d’élément (introduit par #)
</li>
</body>
</html>
BDW1
Un identifiant est unique par page !!!
71
COMBINAISON DE SÉLECTEURS
Il est possible de spécifier :
des sélecteurs à balises multiples:
h1, h2 { color:red;}
des sélecteurs à balises imbriquées
.mesItems p { color:red;}
des sélecteurs à balises possédant un attribut
[border]{ font-style:italic;}
des sélecteurs à balises possédant un attribut avec une
valeur donnée
[border=2]{ font-style:italic;}
…
http://www.w3schools.com/cssref/css_selectors.asp
72
GESTION DES PRIORITÉS
Plusieurs insertions de CSS, plusieurs types de sélecteurs... Qui a
la priorité ?
sélecteur:pseudoclasse{
propriété1 : valeur1;
propriété2 : valeur2;
…
}
BDW1
74
PSEUDO-CLASSES
Parmi les pseudo-classes les plus utilisées:
:hover pour le survol de l’élément
:visited pour un lien hypertexte visité
:focus pour un élément qui a le focus
:active pour une élément activé par l’utilisateur
…
BDW1
75
DES PROPRIÉTÉS ET DES VALEURS
Quelles propriétés, quelles valeurs pour une
déclaration CSS ?
Nombreuses propriétés disponibles en CSS3
Une majorité de ces propriétés possède une liste restreinte
de valeurs
On peut appliquer ces couples {propriété, valeur} à de
nombreux éléments HTML pour les besoins suivants :
choix des couleurs (texte, arrière plan, . . .)
choix des polices de caractères
. . .
76
PROPRIÉTÉ DE FOND
Couleur de l’arrière-plan :
background-color: <color>;
donne la couleur <color> à l’arrière plan
Image en arrière-plan:
background-image: url(‘<urlimg>’);
met l’image se trouvant à l’adresse <urlimg> en
l’arrière plan
Il est possible d’appliquer un traitement à l’image par:
background-repeat: no-repeat | repeat |
repeat-x | repeat-y; BDW1
77
PROPRIÉTÉS DE POLICE ET TEXTE
Taille de police :
font-size : 100% ;
Taille de police à 100%
Utiliser les % ou em comme mesure (pas de px, cm, pt
car non redimensionnables)
Famille de police:
font-family : arial, sans-serif ;
Fonte de police en Arial, famille sans serif
Important de spécifier la famille, car si la fonte n’est
pas trouvée sur le système/navigateur, remplacement BDW1
par une fonte de la même famille
78
PROPRIÉTÉS DE POLICE ET TEXTE
Style de fonte:
Variante de fonte:
BDW1
79
PROPRIÉTÉS DE POLICE ET TEXTE
Couleur de police:
color : #000000 ;
Epaisseur de fonte:
font-weight : normal | bold | bolder | lighter ;
Transformation de texte:
text-transform : none | capitalize | uppercase
| lowercase ;
Hauteur de ligne:
line-height : normal | nombre | % ;
BDW1
Hauteur de la ligne, en normal, valeur numérique ou pourcentage
81
PROPRIÉTÉ DES LIENS HYPERTEXTES
Il est possible d’affecter une mise en forme
différente en fonction que le lien soit:
non déjà visité (link)
visité (visited)
survolé par le curseur de la souris (hover)
En train d’être activé (active)
index.html styles.css
<!DOCTYPE html>
<html> a:link{color:blue;}
<head> a:visited{color:green;}
<title>Exo cours CSS</title> a:hover{color:red;}
<link rel="stylesheet" ype="text/css" a:active{color:pink;}
ref="styles.css">
</head>
<body>
<a href="./uneAutrePage.html">
lien vers une autre page BDW1
</a>
</body>
</html> 82
LES « BOITES »
Toutes les balises HTML sont contenues dans des
“boîtes” :
Ces boîtes sont invisibles la plupart du temps
(bordure non tracée)
Possibilité de configurer leurs propriétés (bordure,
marge, espacements, etc.)
bordure
margin
padding
Un contenu
BDW1
83
MARGIN ET PADDING
margin:
Espace entre la bordure et un autre élément
padding:
Espace entre le contenu et sa bordure
bordure
margin-top
margin-left margin-right
Un contenu
BDW1
margin-bottom
84
MARGIN ET PADDING
margin:
Espace entre la bordure et un autre élément
padding:
Espace entre le contenu et sa bordure
bordure
padding-top
padding-left padding-right
Un contenu
padding-bottom
BDW1
85
BORDURE
border:
Bordure d’un élément
Épaisseur du trait
border-width: thin | medium | thick | <n>px
Trait fin, moyen , épais, de <n> pixel
Style du trait
border-style: none | dotted | dashed | solid | double;
Aucun trait, pointillé, en tiret, plein, double
Couleur du trait
border-color: <color>;
BDW1
BDW1
88
POSITION DES ÉLÉMENTS
Il existe aussi des couples {propriété, valeur} pour la
mise en page :
Organisation des différentes parties d’une page (menu,
bannière, contenu, pied de page, etc.)
Positionnement des éléments les uns par rapport aux
autres
BDW1
89
AFFICHAGE D’UN ÉLÉMENT HTML
L’affichage d’un élément dépend de quatre
paramètres optionnels appliqués à la boîte qui le
contient.
Son ordre d’apparition dans le flux
Ses dimensions (hauteur, largeur, marges)
Son type de boîte
ce qui détermine le comportement de l’élément HTML en
termes d’affichage et de relation avec ses éléments voisins
Son positionnement
BDW1
90
NOTION DE FLUX
Le flux est l’ordre dans lequel les éléments HTML
sont lus par le navigateur et affichés :
91
TYPE DE BOÎTE
92
TYPE DE BOÎTE
Type non affiché
display : none ;
n’est pas affiché
93
TYPE DE BOÎTE
Type de rendu inline
display : inline ;
Elément placé à côté d’un autre (succession
horizontale) :
Largeur déterminée par leur contenu (texte, image, etc.)
Pas redimensionnables (en théorie)
Eléments HTML inline ont par défaut ce type de rendu
CSS
94
TYPE DE BOÎTE
Type de rendu list-item
display : list-item ;
Elément de type block qui bénéficie des propriétés liées
aux puces
Cas de la balise <li>
BDW1
95
POSITIONNEMENT
On considère la page comme un repère orthonormé :
Point de coordonnées d’origine (0, 0) en haut à gauche
Possibilité de placer des éléments en indiquant leurs
coordonnées dans ce repère
Méthode très précise, mais fastidieuse selon le nombre
d’éléments
0,0
Ma page
HTML
BDW1
96
POSITIONNEMENT ABSOLU
Positionnement absolu
position : absolute ;
L’élément déclaré en position absolue est
totalement retiré du flux :
Positionnement par rapport au premier ancêtre
positionné rencontré (sinon la fenêtre du navigateur)
Propriétés top, left, bottom, right pour indiquer l’écart
entre le côté représenté par la propriété et l’élément
BDW1
97
POSITIONNEMENT ABSOLU
BDW1
98
http://www.pompage.net/IMG/html/page_modele09.html
POSITIONNEMENT FIXE
Positionnement fixe
position : fixed ;
Idem que la position absolue, mais :
Positionnement par rapport à la fenêtre du
navigateur suivant un ou plusieurs côtés
Propriétés top, left, bottom, right pour indiquer
l’écart entre le côté représenté par la propriété et
l’élément
Même avec une barre de défilement, l’élément fixe
gardera toujours la même position dans la page
BDW1
99
POSITIONNEMENT RELATIF
Positionnement relatif
position : relative ;
Décale l’élément par rapport à sa position dans le
flux
Les autres éléments considèrent que celui-ci est
toujours à sa position initiale dans le flux
Utile pour servir de référence ancêtre à un élément
positionné en absolu
Utile pour utiliser la superposition d’éléments avec la
propriété z-index
BDW1
100
PROPRIÉTÉ FLOAT
Positionnement flottant
float : left | right | none | initial ;
Indique qu’un élément s’enroule à son voisin par le
gauche ou la droite
Effet “d’habillage”
Largeur dictée par son contenu
102
ADAPTATIVITÉ DE LA FLEXBOX
BDW1
103
PRINCIPES DE LA FLEXBOX
Un container ‘flex’ définit un agencement pour les
élements de type flex qu’il contient
BDW1
104
DÉCLARATION D’UNE FLEXBOX
Propriété display :
BDW1
105
ALIGNEMENT SUR L’AXE PRINCIPAL
Propriété justify-content :
BDW1
106
ALIGNEMENT SUR L’AXE SECONDAIRE
Propriété align-item :
BDW1
107
ET ENCORE PLUS SUR …
BDW1
108
LIMITES DE HTML
HTML et CSS insuffisants pour des besoins
comme :
Manipulation de bases de données
Interactions avec le système de fichiers
Utilisation de bibliothèques logicielles
Plus généralement pour des traitements complexes
BDW1
109
PAGES WEB DYNAMIQUES
Poste Serveur de
données
Poste Client
(3) : lecture de
index.php (2) : accès à index.php
fichiers
index.php BDW1
(7) : affiche la
page HTML
110
PHP
PHP: HYPERTEXT PREPROCESSOR
Langage de programmation Web dont l’objectif est de produire du
code HTML
PHP Licence (code ouvert, restriction sur le nom d’un produit dérivé)
112
TUTORIAUX ET WIKILIVRES DISPONIBLES
http://fr.wikibooks.org/wiki/Programmation_PHP
http://sylvie-vauthier.developpez.com/tutoriels/php/grand-
debutant/
http://fr.html.net/tutorials/php/
…
BDW1
113
INTÉRÊT DE PHP
Exploitation des données saisies dans les
formulaires HTML
BDW1
114
ENVIRONNEMENT DE TRAVAIL
Editeur de texte
Notepad++ ….
Framework ;
Symfony2, Zend Framework, CodeIgniter, CakePHP
BDW1
115
PHP : DEUX TYPES DE ZONES
Délimitées par <?php et ?>
116
PHP : DEUX TYPES DE ZONES
Délimitées par <?php et ?>
…
<body>
<p>Je commence à écrire en HTML ! </p>
<?php
echo ‘<p>Je continue à écrire du HTML mais cette
fois grâce à une fonction PHP</p>’;
?>
<p>Et je finis en écrivant directement du HTML! </p>
</body>
…
…
<body>
<p>Je commence à écrire en HTML ! </p>
<?php
echo ‘<p>Je continue à écrire du HTML mais cette
fois grâce à une fonction PHP</p>’;
?>
<p>Et je finis en écrivant directement du HTML! </p>
</body>
…
118
PHP : DEUX TYPES DE ZONES
Délimitées par <?php et ?>
…
Je commence à écrire en HTML !
<body>
<p>Je commence à écrire en HTML ! </p>
<?phpJe continue à écrire du HTML
echomais
‘<p>Je continue
cette fois à grâce
écrire àduune
HTML mais cette
fois grâce à une fonction PHP’;
?> fonction PHP.
<p>Et je finis en écrivant directement du HTML! </p>
</body>
Et je finis en écrivant
…
directement du HTML!
echo (ou print) étant une fonction PHP affichant la chaine de
caractères qui le suit.
BDW1
119
PHP : GÉNÉRATION DU CONTENU
Deux méthodes :
Mettre du texte à l'extérieur de <?php et ?>.
Utiliser l'instruction print (ou echo) :
echo ‘Hello LIF4’;
print ‘valeur’ ;
valeur est évalué puis transformé en texte.
Ce texte est ajouté à la suite du contenu HTML déjà généré.
BDW1
120
PHP : LES COMMENTAIRES
Commentaires uniligne
<?php
// ceci est un commentaire uniligne
// qui respecte la syntaxe PHP
?>
// ceci est un bug, car ne respecte pas la syntaxe HTML
Commentaires multi-lignes
<?php
/* ceci est un commentaire multi-lignes
qui respecte la syntaxe PHP */
?>
/* ceci est un bug, car ne respecte pas la syntaxe HTML */
BDW1
121
PHP : LES COMMENTAIRES
Commentaires uniligne
<?php
// ceci est un commentaire uniligne
// qui respecte la syntaxe PHP
?>
// ceci est un bug, car ne respecte pas la syntaxe HTML
Commentaires multi-lignes
<?php
/* ceci est un commentaire multi-lignes
qui respecte la syntaxe PHP */
?>
/* ceci est un bug, car ne respecte pas la syntaxe HTML */
BDW1
122
PHP : VARIABLES
Le nom d'une variable commence par un $
$i, $utilisateur, $id, . . .
Affectation comme en C :
$i = valeur ;
125
PHP : LES TABLEAUX
Syntaxe similaire au C.
Affectation:
$mon_tableau[indice] = "coucou" ;
Range "coucou" dans la case numero indice.
Affichage
Une valeur du tableau (la valeur se trouvant à la case indice)
print $mon_tableau[indice] ;
$mon_tableau[] = valeur ;
Ajoute une case au tableau $mon_tableau et y range valeur. BDW1
Syntaxe :
Affectation
$personne[‘Nom'] = ‘Doe' ; $personne['Prenom'] = ‘John' ;
$personne = array( ‘Nom’ => ‘Doe’, ‘Prenom’ => ‘John’ );
Affichage
print $personne['Prenom'] ;
Affiche le texte associé à la chaîne ‘Prenom’.
print_r($personne) ; BDW1
Affiche toutes les valeurs stockées dans le tableau
127
EXISTENCE ET ABSENCE DE VALEUR
D’UNE VARIABLE
ISSET($var)
Fonction pour tester si une variable $var existe :
Retourne true (1) si la variable existe
Très utile pour savoir si un formulaire a été soumis
EMPTY($var)
Fonction pour tester si une variable $var est nulle
Retourne true (1) si la variable est n’est pas valuée
Exemples:
$chiffre = 4 ;
$chaine = 'hello' ;
print isset($chiffre) ; // retourne 1
print isset($chaine) ; // retourne 1
print isset($jexistepas) ; // aucun retour
print empty($chaine) ; // aucun retour BDW1
print empty($jexistepas) ; // retourne 1
128
CONTRÔLES
Structures de contrôles similaires à celles de C :
Conditionnelle
IF … ELSE
Boucles
WHILE
FOR
FOREACH
BDW1
129
STRUCTURE CONDITIONNELLE
Structure conditionnelle similaire à celle de C :
Si conditions renvoient true, exécution des instructions dans le bloc du if
Sinon, s’il existe, on exécute les instructions dans le bloc du else
<?php
$chaine = ‘Hello’ ;
if($chaine==‘Hello’) {
print ‘Salut !’ ;
}
else {
print "Au ". "revoir!" ;
}
/* ce script affichera Salut! */
?>
BDW1
131
STRUCTURE CONDITIONNELLE
En cas de tests multiples, on peut ajouter une ou plusieurs structures
conditionnelles elseif
if(conditions) {
//instructions pour conditions vérifiées
}
elseif(conditions2) {
//instructions pour conditions2 vérfiées
}
elseif(condition3) {
//instructions pour conditions3 vérifiées
}
else {
/* instructions pour le cas où aucune condition
n’a été vérifiée */ BDW1
}
132
STRUCTURE CONDITIONNELLE
<?php
$chaine = ‘Bye' ;
if($chaine == ‘Hello’) {
print ‘Salut!’;
}
elseif($chaine == ‘Bye’) {
print ‘Au revoir!’;
}
else{
print ‘Euhhhhh…’;
}
// retournera ‘Au revoir!’
BDW1
?>
133
STRUCTURE CONDITIONNELLE
Une autre possibilité pour exprimer un conditionnelle : switch…
case…
switch($variable) {
case val1: //instructions pour $variable=val1 vérifiée
break;
case val2: //instructions pour $variable=val2 vérifiée
break;
case val3: //instructions pour $variable=val1 vérifiée
break;
default: /* instructions pour le cas où aucune
condition n’a été vérifiée */
}
BDW1
134
STRUCTURE CONDITIONNELLE
<?php
$chaine = ‘Coucou’ ;
switch ($chaine) {
case ‘Hello’: print ‘Salut !’ ; break;
case ‘Bye’: print ‘Au revoir !’ ; break;
default : print $chaine . ‘!’ ;
}
/* ce script affichera Coucou! */
?>
BDW1
135
STRUCTURE CONDITIONNELLE
<?php
$chaine = ‘Hello’ ;
switch ($chaine) {
case ‘Hello’: print ‘Salut !’ ;
case ‘Bye’: print ‘Au revoir !’ ;
default : print $chaine . ‘!’ ;
}
/* ce script affichera Salut !Au revoir !Hello! */
?>
BDW1
136
LES BOUCLES
Permettent de répéter un bloc d’instructions tant
qu’une condition est vérifiée
BDW1
137
BOUCLE WHILE
La boucle while (“tant que”)
while(conditions) {
/* les instructions à exécuter tant
que les conditions sont vérifiées */
}
Exemple
<?php
$n = 0 ;
while($n < 5) {
print " " . (2 * $n + 1) ;
$n++;
}
BDW1
// résultat : “1 3 5 7 9”
?>
138
BOUCLE FOR
La boucle FOR (“pour”)
BDW1
140
BOUCLE FOREACH
La boucle FOREACH (“pour chaque”)
foreach($tableau as $valeur) {
// instructions;
}
Exemple
<?php
$monTableau=array(1,3,5,7,9);
foreach($monTableau as $val){
print ‘ ’ . $val;
} BDW1
// résultat : “1 3 5 7 9”
?> 141
BOUCLE FOREACH POUR TABLEAU
ASSOCIATIF
La boucle FOREACH (“pour chaque”)
Exemple
<?php
$monTableau=array( ‘nom’ => ‘Lumineau’ ,
‘prenom’ => ‘Nicolas’ ,
‘grade’ => ‘MCF’);
foreach($monTableau as $k => $val){
print $k . ‘: ’ . $val . ‘<br/>’;
}
/* résultat : nom: Lumineau
prenom: Nicolas BDW1
grade: MCF
*/ ?> 142
INCLUSION DE FICHIERS : INCLUDE / REQUIRE
<?php
include("./entete.php") ;
require ("./corps.php") ;
include("./rep/piedpage.php") ;
require("./mesFonctions/fonctions.php") ;
?> BDW1
143
INCLUSION DE FICHIERS : INCLUDE / REQUIRE
Il est possible de décomposer un fichier PHP en plusieurs
fichiers qui ensuite peuvent être inclus dans le fichier PHP
principal (include produit un warning, require une fatal error)
Factorisation du code
<?php
include("./entete.php") ;
require ("./corps.php") ;
include("./rep/piedpage.php") ;
require("./mesFonctions/fonctions.php") ;
?>
145
PHP : FONCTIONS
Créer une fonction qui attribue l’appréciation ‘Admis’
si l’étudiant a une note supérieure ou égale à 10, et
‘Ajournée’ sinon.
BDW1
146
PHP : FONCTIONS
On va créer la fonction appreciation
<?php
function appreciation( $tab ){
foreach( $tab as $nom => $note ){
if( $note >= 10 ){
echo $nom . ‘: Admis <br/>’;
}else{
echo $nom . ‘: Ajourné <br/>’;
}
}
}
147
PHP : FONCTIONS
On fait l’appel à la fonction
<?php
function appreciation( $tab ){
foreach( $tab as $nom => $note ){
if( $note >= 10 ){
echo $nom . ‘: Admis’;
}else{
echo $nom . ‘: Ajourné’;
}
}
}
?> 148
PHP : FONCTIONS
<?php
function appreciation( $tab ){
foreach( $tab as $nom => $note ){
if( $note >= 10 ){
echo $nom . ‘: Admis <br/>’;
}else{
echo $nom . ‘: Ajourné <br/>’;
}
}
}
appreciation($lesNotes);
/* Résultat obtenu:
Pim: Admis
Pam: Admis
Poum: Ajourné
Riri: Ajourné
BDW1
Fifi: Admis
Loulou: Admis
*/
?>
149
PHP : FONCTIONS (ALTERNATIVE)
<?php
function appreciation( $tab ){
$res = ‘’;
foreach( $tab as $nom => $note ){
if( $note >= 10 ){
$res .= $nom . ‘: Admis <br/>’;
}else{
$res .= $nom . ‘: Ajourné <br/>’;
}
}
return $res;
}
echo appreciation($lesNotes);
BDW1
?>
150
FONCTIONS DISPONIBLES EN PHP
En plus des fonctions que vous pouvez créer, le
noyau (core) de PHP intègre de nombreuses
fonctions :
Manipulation de tableaux
Manipulation de chaînes
Manipulation du système de fichiers
Manipulation de bases de données
...
http://www.php.net/manual/fr/langref.php
BDW1
151
VARIABLES SUPERGLOBALES
PHP définit un certain nombre de variables
superglobales :
Accessibles de n’importe où
Représentées par des tableaux associatifs
$_GET['nomParam']
BDW1
153
VARIABLE SUPERGLOBALE $_GET
<?php
if(isset($_GET['bValider'])){ // formulaire soumis
echo "Le formulaire a bien été soumis !" ;
}else { // formulaire non soumis
?>
<form action="" method="get">
<input type="text" name="nom">
<input type="submit" name="bValider" value="Soumettre">
</form>
<?
}
?>
BDW1
154
VARIABLE SUPERGLOBALE $_POST
La variable $_POST :
Contient les paramètres d’un formulaire soumis
Ces paramètres ont été transmis via la méthode post
$_POST['nomParam']
BDW1
155
VARIABLE SUPERGLOBALE $_POST
<?php
if(isset($_POST['bValider'])){ // formulaire soumis
echo "Le formulaire a bien été soumis !" ;
}else { // formulaire non soumis
?>
<form action="" method="post">
<input type="text" name="nom">
<input type="submit" name="bValider" value="Soumettre">
</form>
<?
}
?>
BDW1
156
VARIABLE SUPERGLOBALE $_SESSION
Une page PHP utilisant une session doit
obligatoirement, avant même d'afficher quoi que
ce soit, commencer par l'instruction :
session_start() ;
157
EXTENSIONS PHP
PHP inclut des extensions spécifiques à des
applications tierces, classées en différentes catégories :
Extensions noyau (e.g., Arrays, Date/Time, FileSystem)
Extensions intégrées (e.g., FTP, PostgreSQL, Zip)
Extensions externes (e.g., MySQL, GeoIP)
158
EXTENSIONS PHP
Pour la base de données MySQL, trois API différentes :
mysql : API d’origine, aujourd’hui obsolète
mysqli : mysql improved, avec de nouvelles fonctionnalités
PDO_MySQL : couche d’abstraction d’accès aux données à
travers des PHP Data Objects
159
ACCÈS À UN BASE MYSQL
Quatre étapes :
1. Connexion au SGBD et sélection d’une base
2. Envoi d’une requête
3. Récupération et utilisation du résultat
4. Fermeture de la connexion
BDW1
160
CONNEXION AU SGBD ET SÉLECTION D’UNE BASE
$user = 'nom_utilisateur' ;
$mdp = 'mon_de_passe' ;
$machine = 'localhost' ; // machine locale (127.0.0.1)
$bd = 'une_bd' ;
161
CONNEXION AU SGBD ET SÉLECTION D’UNE BASE
$user = 'nom_utilisateur' ;
$mdp = 'mon_de_passe' ;
$machine = 'localhost' ; // machine locale (127.0.0.1)
$bd = 'une_bd' ;
162
CONNEXION AU SGBD ET SÉLECTION D’UNE BASE
$user = 'nom_utilisateur' ;
$mdp = 'mon_de_passe' ;
$machine = 'localhost' ; // machine locale (127.0.0.1)
$bd = 'une_bd' ;
$user = 'nom_utilisateur' ;
$mdp = 'mon_de_passe' ;
$machine = 'localhost' ; // machine locale (127.0.0.1)
$bd = 'une_bd' ;
164
CONNEXION AU SGBD ET SÉLECTION D’UNE BASE
$user = 'nom_utilisateur' ;
$mdp = 'mon_de_passe' ;
$machine = 'localhost' ; // machine locale (127.0.0.1)
$bd = 'une_bd' ;
$req = 'une_requete_sql' ;
$resultat = mysqli_query($connexion, $req) ;
BDW1
166
ENVOI D’UNE REQUÊTE
// on possède un lien de connexion $connexion
$req = 'une_requete_sql' ;
$resultat = mysqli_query($connexion, $req) ;
167
ENVOI D’UNE REQUÊTE
Si la requête est construite avec les données d’un
formulaire, il faut échapper ces données avec la
fonction mysqli_real_escape_string
Durant la phase de développement, il peut être utile
d’afficher $req avant son envoi au SGBD
BDW1
168
RÉCUPÉRATION ET UTILISATION DU RÉSULTAT
// on possède un objet résultat $resultat
while ($ligne = mysqli_fetch_assoc($resultat))
{
//instructions utilisant les champs
$ligne['champ1'], …
}
La variable $ligne récupère successivement chaque ligne
de résultat (une par itération) dans un tableau associatif :
Accès aux valeurs par $ligne['champ']
Autres fonctions pour récupérer dans un tableau à indices
numériques (mysqli_fetch_array)
Pour les requêtes update, delete, pas besoin de parcourir leBDW1
résultat
169
FERMETURE DE LA CONNEXION
// on possède un lien de connexion $connexion
mysqli_close($connexion) ;
BDW1
170
EXEMPLE
<?php
$salaire_max = 20000 ;
171
EXERCICE
172
SYSTÈME DE FICHIERS
Avec PHP, il est possible de manipuler le système de
fichiers du serveur :
Lister les fichiers d’un répertoire
Lire ou écrire dans un fichier texte
Gérer des fichiers uploadés par l’utilisateur
...
BDW1
173
CHEMINS DES FICHIERS
Plusieurs types de système de fichiers (e.g., EXT3, FAT)
slash comme séparateur dans les chemins (/)
BDW1
Les commandes dirname et basename agissent seulement sur la chaîne de
caractères représentant le chemin !
174
TEST SUR LES FICHIERS
Existence d’un fichier ou répertoire
file_exists($chemin)
Retourne true si le fichier ou répertoire représenté par
$chemin existe
175
TESTS SUR LES FICHIERS
is_readable($chemin)
is_writable($chemin)
Retourne true si le fichier ou répertoire représenté par
$chemin existe avec les droits de lecture ou écriture
is_executable($nom_fichier)
Retourne true si le fichier représenté par $nom_fichier
existe avec les droits d’exécution
Remarque:
Les droits sont ceux de l’utilisateur qui fait tourner le BDW1
serveur Web
176
LECTURE D’UN FICHIER
$contenu = file_get_contents($fichier
[, FILE_USE_INCLUDE_PATH]);
BDW1
177
ECRITURE DANS UN FICHIER
$nb = file_put_contents($fichier, $donnees
[,$drapeaux]);
Ecrit le contenu de la variable $donnees dans le fichier
$fichier :
Retourne le nombre d’octets écrits, sinon false
Si $fichier n’existe pas, il est créé
La variable $donnees peut être une chaîne ou un tableau
Les drapeaux sont optionnels (concaténation de drapeaux
avec |) :
LOCK_EX (verrouillage du fichier pendant l’écriture)
FILE_APPEND (concaténation des données au fichier s’il existe)
178
LECTURE ET ÉCRITURE DANS UN FICHIER
$chaine1 = "Ceci est une première ligne";
$chaine2 = "Ceci est une seconde ligne";
$fichier = "foo.txt";
$contenu = file_get_contents($fichier);
file_put_contents($fichier, $chaine2 ." ".$contenu);
BDW1
180
RÉPERTOIRES
$contenu = scandir($repertoire [, $tri]);
Retourne un tableau $contenu contenant la liste des
fichiers et sous-répertoires de $repertoire.
Variable optionnelle $tri pour changer l’ordre de tri à
SCANDIR_SORT_DESCENDING ou
SCANDIR_SORT_NONE
Autres fonctions :
mkdir($repertoire) pour créer un dossier $repertoire
rmdir($repertoire) pour supprimer un dossier $repertoire
BDW1
181