Cours de Proyo
Cours de Proyo
Thomas FRESSIN
[email protected]
Développement web
PLAN DE LA PRÉSENTATION
Dév. front-end/back-end
Modèle d’exécution du web
HTML
CSS
PHP
MySQL
Thomas FRESSIN 2
Développement web
BIBLIOGRAPHIE
Wikipédia
http://www.commentcamarche.net/contents/html/
http://www.apprendre-php.com
http ://www.php.net/manual/fr
Thomas FRESSIN 3
Développement web
LE DEVELOPPEMENT
FRONT-END / BACK-END
Thomas FRESSIN 4
5
6
7
8
9
10
FRONT-END
La conception des sites internet doit également être capable d’offrir une
bonne ergonomie de lecture en facilitant la navigation et l’obtention
d’information. Cet objectif est d’autant plus compliqué que les lecteurs
utilisent maintenant différentes plateformes de format et de taille variés.
Le développeur doit donc s’assurer que le site internet apparaît
correctement sur l’ensemble des navigateurs Web et des
plateformes/appareils disponibles.
11
Hypertext : une page doit être relier à
d’autres pages
→ comprendre l’architecture de
l’information et les relations des pages
Markup : le contenu est intégré à une
structure de page balisée
12
BACK-END
Illustration du concept :
Dans un magasin, on trouve une arrière-boutique où sont stockés les
articles, et un bureau qui assure le bon fonctionnement du magasin. Il
s'agit du back-end, de tout ce qui se passe en arrière-plan sans que le
client ne s'en rende compte.
Dans ce même magasin, on retrouve un service à la clientèle et des
étalages. Il s'agit du front-end, de ce que le client voit.
13
Développement web
Thomas FRESSIN 14
Développement web
INTERNET
Requête HTTP
(protocole de transfert
hypertexte)
Code « web »
CLIENT SERVEUR
Thomas FRESSIN 15
Développement web
Thomas FRESSIN 16
Développement web
image
page
Flux
vidéo
Thomas FRESSIN 17
Développement web
REQUÊTE HTTP
Thomas FRESSIN 18
Développement web
REQUÊTE HTTP
Thomas FRESSIN 19
Développement web
Thomas FRESSIN 20
Requête HTTP
Code « web »
21
Écouter le réseau
(F12 ou Menu Outils/Outils de développement puis onglet Réseau)
22
Développement web
Requête HTTP
Code « web »
●
Un proxy (serveur mandataire) peut modifier les réponses et requêtes qu'il reçoit et
peut gérer un cache des ressources demandées.
●
Une passerelle (ou gateway) est un intermédiaire modifiant le protocole utilisé.
●
Un tunnel transmet les requêtes et les réponses sans aucune modification, ni mise en cache.
●
Utilisation de protocoles : SSL/TLS/… HTTPS
Thomas FRESSIN 23
Développement web
HTML 5
Hypertext Markup Language /
Langage de balisage d’hypertexte
Thomas FRESSIN
24
Développement web
HTML : historique
1991 HTML
1994 HTML 2
1996 CSS 1 + JavaScript
1997 HTML 4
1998 CSS 2
2000 XHTML 1
2002 Tableless Web Design
2005 AJAX
2009 HTML 5
Thomas FRESSIN 25
Développement web
HTML 5 : généralités
Langage standardisé
Thomas FRESSIN 26
Développement web
HTML : généralités
Language descriptif
Pas de séquences de contrôle
Description de la sémantique du document
Balises
Balise ouvrante : <tag>
Balise fermante : </tag>
Les deux en une : <tag />
Attributs : <tag attribut="valeurs">
Standardisé
W3C : http ://www.w3c.org
Dernière version : HTML 5
Strict
Transitional
Frameset
Validation automatique : http ://validator.w3.org
Balise DOCTYPE, sur la première ligne du fichier
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http ://www.w3.org/TR/html4/loose.dtd">
Thomas FRESSIN 27
Développement web
XHTML
Le XHTML est un langage normé (+ contraignant pour le développeur)
permettant (en théorie) un standardisation de la façon de coder pour un
affiche (censé être) compatible sur tous les navigateurs/OS
Il existe plusieurs versions : Strict, Transitional
Il est possible de vérifier le respect de son code sur un validateur (celui
de la W3C par exemple)
Avis professionnel : faut tendre vers le XHTML sans trop perdre de
temps avec (la compatibilité OS/navigateurs est + importante)
HTML5
Le HTML5 est la nouvelle version du HTML5.
C'est un nouveau standard participant au web sémantique (donner du
sens aux balises pour faciliter l'interprétation informatique, l'interconnexion
des données du web, ..)
Il permet en outre : + de dynamisme, la géolocalisation, la portabilité
mobile, ...
Thomas FRESSIN 28
Développement web
HTML : généralités
Structure arborescente
Arbre minimal :
<html>
<head>
<title>…</title> métadonnées
</head>
<body> page HTML
… données
</body>
</html>
Thomas FRESSIN 29
Développement web
HTML : généralités
Commentaires
Thomas FRESSIN 30
Développement web
HTML : espacements
Code : Résultat :
Conclusions :
Les suites de caractère d'espacement équivaut à un seul caractère d'espacement
Les expressions \t et \n sont ignorés
Il faut utiliser des balises pour mettre en forme le texte
Thomas FRESSIN 31
Développement web
Thomas FRESSIN 34
Développement web
HTML : listes
Liste ordonnée
<ol>
<li>article 1</li>
<li>article 2</li>
<li>article 3</li>
</ol>
Liste non-ordonnée
<ul>
<li>article 1</li>
<li>article 2</li>
<li>article 3</li>
</ul>
Liste de définition
<dl>
<dt>article 1</dt>
<dd>définition 1</dd>
<dt>article 2</dt>
<dd>définition 2</dd>
</dl>
Thomas FRESSIN 35
Développement web
HTML : tableaux
Tableau
<table border="1">
<caption> Voici le titre du tableau </caption>
<tr>
<th> Titre A1 </th>
<th> Titre A2 </th>
<th> Titre A3 </th>
<th> Titre A4 </th>
</tr>
<tr>
<th> Titre B1 </th>
<td> Valeur B2 </td>
<td> Valeur B3 </td>
<td> Valeur B4 </td>
</tr>
</table>
Attributs utiles
rowspan="x" fusionner x lignes
colspan="x" fusionner x colonnes
align alignement horizontal dans les th, tr, td
valign alignement vertical dans les th, tr, td
Thomas FRESSIN 36
Développement web
HTML : images
Image
<img src="path_image.ext" alt="Texte de remplacement"
title="Texte à afficher" />
Spécifications
Formats acceptés des images : jpeg, jpg, png, gif, svg
Principaux attributs :
src
align
alt
title
width
height
Thomas FRESSIN 37
Développement web
Codage de la page
Nous travaillons au format ISO-8859-1 (Latin-1 ou Europe occidentale)
Caractères spéciaux
Les accentuations et symboles sont des caractères spéciaux.
Mal codés (en ISO ou en HTML), ces caractères seront mal affichés en
sortie.
Thomas FRESSIN 38
Développement web
HTML : métadonnées
<head>
<title>Titre</title>
<script type="text/javascript">...</script>
<style type="text/css">...</style>
</head>
Thomas FRESSIN 39
Développement web
HTML5
~=
HTML + CSS + JS
Thomas FRESSIN 40
Développement web
Thomas FRESSIN 41
42
Développement web
Thomas FRESSIN 43
Développement web
Thomas FRESSIN 44
Développement web
Thomas FRESSIN 45
Développement web
Thomas FRESSIN 46
Développement web
Listes autocomplétées
<input list="cars"/>
<datalist id="cars">
<option value="BMW"/>
<option value="Ford"/>
<option value="Volvo"/>
</datalist>
Thomas FRESSIN 47
Développement web
Balises sémantiques
Thomas FRESSIN 48
Développement web
Thomas FRESSIN 49
Développement web
Microdata
Thomas FRESSIN 50
Développement web
Thomas FRESSIN 51
Développement web
Thomas FRESSIN 52
Développement web
Validation du code
https://validator.w3.org/
Thomas FRESSIN 53
Développement web
CSS
Cascading Style Sheets / Feuilles de style en cascade
Thomas FRESSIN 54
Développement web
CSS : utilité
Utilités
Séparer la forme du fond
HTML décrit le fond
CSS décrit la forme
Thomas FRESSIN 55
Développement web
<body>
<span style="un_style">…</style>
</body>
Thomas FRESSIN 56
Développement web
//la classe peut correspondre à une balise html (pour que le style s’applique à cette balise)
//si la classe ne s’applique pas à une balise html spécifique, on précède le nom de la classe d’un point
Thomas FRESSIN 57
Développement web
Thomas FRESSIN 58
Développement web
CSS 3
Thomas FRESSIN 59
Développement web
Sélecteurs CSS 3
Thomas FRESSIN 60
Développement web
Webfonts
Thomas FRESSIN 61
Développement web
Multi-colonnes
Thomas FRESSIN 62
Développement web
Opacité
Thomas FRESSIN 63
Développement web
Thomas FRESSIN 64
Développement web
Angles arrondis
Thomas FRESSIN 65
Développement web
Dégradés
Thomas FRESSIN 66
Développement web
Ombrages
Thomas FRESSIN 67
Développement web
Fonds multiples
Thomas FRESSIN 68
Développement web
PHP
Hypertext Preprocessor
Thomas FRESSIN 69
Développement web
PHP : généralités
Versions actuelle :
7.3.10 (24 septembre 2019)
Langage de script
Langage interprété
Présence d'un interpréteur côté serveur
Thomas FRESSIN 70
Développement web
Concurrents de PHP
Thomas FRESSIN 71
Développement web
Thomas FRESSIN 72
Développement web
<html>
<head><title>Page statique</title></head>
<body> Nous sommes le 11-09-2001.
Nous sommes le 11-09-2001.
</body>
</html>
<html>
<head><title>Page statique</title></head>
<body> Nous sommes le 01-04-2011.
Nous sommes le <?php echo date('d-m-Y'); ?>.
</body> //Date du jour affichée
</html>
Thomas FRESSIN 73
Développement web
Thomas FRESSIN 74
Développement web
PHP : variables
Le type des variables n’a pas besoin d’être déclaré (typage implicite)
$my_var_03 = 54 ; //entier
$my_var_03 = "pif"; //maintenant, une chaine
Thomas FRESSIN 75
Développement web
Entiers : $var=54;
Flottants : $var=54.3;
Chaînes : $var="54";
$var='54';
Booléens : $var=false;
$var=true;
Fonctions de test :
is_integer ($var), is_string ($var), … : renvoie true si $var est un
entier, une chaîne, . . .
Thomas FRESSIN 76
Développement web
Thomas FRESSIN 77
Développement web
PHP : tableaux
Tableaux : $tab = array("foo"=>"bar", 12=>true);
//lignes identiques
$tab["foo"]="bar"; $tab[12]=true;
<?php Array
// Création d'un tableau simple. (
$array = array(1, 2, 3, 4, 5); [0] => 1
print_r($array); [1] => 2
[2] => 3
// On efface tous les éléments, mais on concerne le tableau : [3] => 4
foreach ($array as $i => $value) { [4] => 5
unset($array[$i]); )
} Array
print_r($array); (
)
// Ajout d'un élément (notez que la nouvelle clé est 5, et non 0). Array
$array[] = 6; (
print_r($array); [5] => 6
)
// Ré-indexation : Array
$array = array_values($array); (
$array[] = 7; [0] => 6
print_r($array); [1] => 7
?> )
Thomas FRESSIN 78
Développement web
PHP : opérateurs
Arithmétiques : echo ((1+2-3)*2)/2;
echo 7%3; //affiche 1
$var=1; echo $var++;
$var=3; echo $var--;
Affectation : echo $var=1;
$var='aa'; echo $var.='b';
$var=1; echo $var+=3;
$var=2; echo $var-=1;
$var=2; echo $var*=2;
$var=2; echo $var/=2;
$var=7; echo $var%=3;
Affectaison : ==, === //égal, identique
!=, <>, !== //diff, diff, diff ou pas même type
<, >, >=, <=
Logiques : and, &&
or, ||
xor
!
Conditionnel : … ? … : …
Thomas FRESSIN 79
Développement web
$var=1 $tab[0]=1;
if ($var<0) { $tab[1]=1;
echo "h1"; $tab[2]="coucou";
} for($i=0;$i<3;$i++) {
elseif ($var<-3) { echo $tab[$i];
echo "h2"; }
}
else {
echo "h3";
}
$var="coucou"; $i=0;
switch ($var) { while($i<5) {
case "maman" : echo "h1"; break ; $i++; echo $i;
case "papa" : echo "h2"; break ; }
default : echo "h3"; break;
}
Thomas FRESSIN 80
Développement web
PHP : fonctions
Thomas FRESSIN 81
Développement web
function fonc() {
global $var ;
$var=4;
}
$var=0;
fonc() ;
echo $var ;
Thomas FRESSIN 82
Développement web
OK formulaire envoyé.
Thomas FRESSIN 83
Développement web
84
Développement web
OK formulaire envoyé.
Thomas FRESSIN 85
Développement web
La méthode GET :
●
se prête bien à un site en développement car on peut facilement contrôler
les valeurs et noms de variables du formulaire.
●
Il est facile de créer un lien <a> vers une page traitant un formulaire en
méthode GET et d’y envoyer des données via le query string.
La méthode POST :
●
est plus propre car les valeurs ne sont plus affichées dans la barre
d’adresse du navigateur
●
Attention : ces informations ne sont pas vraiment cachées pour autant
Thomas FRESSIN 86
Développement web
Exemple de formulaire :
<form action="page_resultat.html" method="POST">
Prenom : <input type="text" name="prenom" /><br />
Nom : <input type="text" name="nom" /><br />
<input type="submit" value="ENVOYER" />
</form>
Thomas FRESSIN 87
Développement web
Thomas FRESSIN 88
Développement web
PHP : sessions
On veut parfois garder de l'information entre plusieurs pages :
Login / Password
Préférences de navigation
Sélection de produits à acheter (panier, ...)
On utilise donc les sessions PHP.
Les sessions utilisent les cookies : il faut donc ouvrir la session avant d'afficher quoi
que ce soit. La session existe dès qu'elle est crée et jusqu'à ce qu'elle soit détruite.
Création (et réouverture) : session_start()
Destruction : session_destroy()
Note : les session s'autodétruisent après un certain temps (glmt 30 min)
Thomas FRESSIN 89
Développement web
Thomas FRESSIN 90
Développement web
Thomas FRESSIN 91
Développement web
Thomas FRESSIN 92
Développement web
MySQL
Thomas FRESSIN 93
Développement web
SQL : définition
Il permet de faire une demande complexe à une BDD dans un langage proche de l'anglais
On l'utilise pour récupérer, ajouter, supprimer et créer des données dans une BDD
Les BDD utilisent des tables :
chaque ligne est un enregistrement de champs avec des valeurs
les requêtes se font sur ces champs
Thomas FRESSIN 94
Développement web
Requête interrogative Id
SELECT * FROM PersosXVI; 1
2
Requête sélective 3
SELECT Nom, Prenom FROM PersosXVI; 4
Requête restrictive
SELECT * FROM PersosXVI WHERE Prenom = 'Jean';
Décompte
SELECT count(*) FROM PersosXVI;
Somme
SELECT SUM(Age) FROM PersosXVI;
Thomas FRESSIN 95
Développement web
Id
1
2
3
4
Requête croisée
SELECT p.Nom, p.Activite FROM PersosXVI p, RoiXVI r
WHERE p.Roi = r.Id AND r.Nom = 'Francois Ier'
ORDER BY p.Nom DESC;
Thomas FRESSIN 96
Développement web
Id
1
2
3
Requête d'insertion
INSERT INTO PersosXVI(Nom, Prenom, Age, Activite)
VALUES('PARE', 'Ambroise', 44, 'Chirurgien');
Requête de suppression
DELETE FROM PersosXVI WHERE Prenom = 'Jean';
Thomas FRESSIN 97
Développement web
Choix de la base
mysqli_select_db($mysqli, "base");
Exécution
$result = $mysqli->query("SELECT Name FROM City LIMIT 10")
//$resultat a pour valeur false en cas d'erreur
Thomas FRESSIN 98
Développement web
Fermeture de la connexion :
mysqli_close($mysqli);
Thomas FRESSIN 99