Introduction à la Programmation Web
Introduction à la Programmation Web
Programmation Web
[Link]
Master 1 IDSM-Kharkiv
Année 2016-2017
Jérôme Darmont
[Link]
1
Règles d'écriture XHTML Squelette d'un document HTML
Les noms des balises doivent être écrits en minuscules. <!DOCTYPE html> <!-- Identification du type du document
(note : ceci est un commentaire) -->
Toute balise ouverte doit être fermée. <html>
2
Structuration du document Titres, paragraphes, séparateurs
3
Ancres Images
Multimédia Figures
Sons : balise <audio> </audio> Élément de structuration (comme section, article…)
Vidéos : balise <video> </video> Balise : <figure> </figure>
Attributs communs Légende : <figcaption> </figcaption>
– src : URI du contenu Exemple :
– controls : affiche les contrôles du lecteur multimédia <figure>
– autoplay : démarrage dès que possible <img src="[Link]" alt="Photo Tim BL" />
– loop : en boucle <video src="[Link]" controls="controls" muted="muted">
Le format .ogg n'est pas supporté.
– muted : sans son
</video>
<audio src="[Link]" controls="controls">
Exemple
Le format .wav n'est pas supporté.
<audio src="test.mp3" controls="controls" loop="loop"> </audio>
Le format MP3 n’est pas supporté par votre navigateur. <figcaption>Tout le multimédia de HTML5</figcaption>
21 </audio> 22 </figure>
Programmation Web [Link] Programmation Web [Link]
4
Listes de définitions Imbrication de listes
Exemple Exemple
<dl>
<dt>1er terme</dt> <ul>
<dd>Définition du 1er terme</dd> <li>Elément non ordonné 1
<dt>2ème terme</dt> <ol>
<dd>Définition du 2ème terme</dd> <li>Sous-élément ordonné 1.1</li>
</dl> <li>Sous-élément ordonné 1.2</li>
</ol>
Résultat à l'affichage </li>
<li>Elément non ordonné 2</li>
1er terme </ul>
Définition du 1er terme
2ème terme
Définition du 2ème terme
25 Programmation Web [Link] 26 Programmation Web [Link]
Mes totaux
C1 C2 L1
Jour de la semaine Montant Total
Lundi 456 euros 456 euros L12
Mardi 200 euros 656 euros
C12 L2
5
Tableaux à cellules recouvrantes Plan du cours
Fonds sombres, images de fonds chargées, couleurs Ouvrir de nouvelles fenêtres, des pop-ups, etc.
trop nombreuses
Pages lourdes à charger (contenant des images
Gadgets technologiques (animations, textes qui volumineuses, par exemple)
défilent, sons, Javascripts divers…)
Pages trop larges (scrolling latéral)
Surcharger la page de texte ou d'images :
trop d'information tue l'information Pages trop longues (scrolling vertical)
Qu’est-ce que le Web 2.0 ? Chaque site / chaque page a un but précis.
6
Comment « faire simple » ? Exemple de simplification
pixels décoratifs
Minimiser le ratio
pixels porteurs d’information
Supprimer tout les éléments non strictement
nécessaires
Essayer des solutions alternatives pour arriver au
même résultat plus simplement
Utiliser les éléments visuel pour communiquer, jamais
pour décorer
Centrer le site dans la fenêtre du navigateur Distinguer clairement une section d’entête
(logo ou marque bien visible, zone de navigation)
Limiter le nombre de colonnes à 2 (3 maximum)
Contre-exemple !
Titres en gras
– Attire l’attention sur les
zones importantes du site
7
Éléments de présentation Navigation
Éviter la "balkanisation du Web" des années 90 Contrôle qualité (validation des pages Web)
Interopérabilité et portabilité (PDA, téléphones Réduction considérable du volume des documents
mobiles…)
Référencement efficace dans les moteurs de
Accessibilité aux personnes handicapées recherche
Réduction des coûts de développement
Pérennité des documents
Exploitation de la technologie XML (vers le Web
sémantique / Web 3.0) Rétrocompatibilité avec les anciens navigateurs
– Exemple : moteurs de recherche (personnalisation, suggestions,
résumé d’informations…)
47 Programmation Web [Link] 48 Programmation Web [Link]
8
Accessibilité Accessibilité
Gestion simplifiée et globale de la présentation d'un Trois localisations possibles (+local au +global)
site
Dans une balise HTML : attribut style
Coûts de développement et de maintenance allégés – Ex. <p style="color: blue; text-align: center;">…</p>
(code plus simple)
Dans une page HTML : balise <style>
Code source allégé – Dans l'en-tête de la page Web (head) :
<style type="text/css">…</style>
Possibilité de présentations différentes selon le profil
utilisateur, la résolution écran… Dans un fichier séparé
– Appel dans l'en-tête de la page Web (head) :
Meilleure accessibilité <link rel="stylesheet" type="text/css" href="feuille_style.css" />
53 Programmation Web [Link] 54 Programmation Web [Link]
9
Notion de cascade Unités de taille
Imbrication des balises : le style d'une balise s'applique Unités relatives (à privilégier, cf. Responsive design)
aux balises imbriquées. – em : hauteur de ligne
– Ex. <p>…<em>…</em>…</p> – % : proportion par rapport à la taille de la fenêtre
Si un style est appliqué à <p>, il s'applique à <em>.
Nom prédéfini : aqua, black, blue, fucshia, green, gray, Feuille de style : ensemble de règles
lime, maroon, navy, olive, purple, red, silver, teal, – Un sélecteur
white, yellow – Des propriétés
– Une valeur pour chaque propriété
Spécification RGB (Rouge Vert Bleu - RVB)
– Ex. Jaune : rgb(255, 255, 0)
Exemple
h1 { color: yellow;
Code RGB hexadécimal font-weight: bold;
– Ex. Jaune : #FFFF00 }
10
Classe de style Application des styles
11
Propriétés de boîte englobante Propriétés d'hyperlien
width width: 80pt; Hyperliens
height height: 25%; – Ex. a { color: blue; }
padding padding: 5px;
Hyperliens visités
-left, -right, -top, -bottom padding-bottom: 10px;
Boîte – Ex. a:visited { color: purple; }
margin margin: 10px;
centrée
-left, -right, -top, -bottom margin-left: 10%; Hyperliens survolés (avec le pointeur de souris)
margin-left: auto; margin-right: auto;
– Ex. a:hover { color: white; background-color: blue; }
border border: 2px solid #FF00FF;
-width, -style, -color border-style: dotted; Coins Hyperliens activés
border-radius: 15px; ronds – Ex. a:active { color: purple; }
overflow overflow: auto;
67 Programmation Web [Link] 68 Programmation Web [Link]
Style 1 (CSS)
table, td { border: 1px solid black; }
C3 C4 C3 C4 Style 2 (CSS)
table, td { border: 1px solid black; }
table { border-collapse: collapse; }
12
Positionnement flottant Positionnement flottant
Conteneur
(style .page)
Positionnement flottant 100 % Positionnement flottant
Exemple 2 : pagination en trois colonnes Exemple 2 :
1em
Bla bla sur fond vert… 1em CSS .boite_verte { position: relative;
Idem sur fond jaune
Bla bla sur fond vert… background-color: #00FF00;
Bla bla sur fond vert… width: 15em; }
13
Exemple de mise en page : Objectif Exemple de mise en page : HTML
<main>
<header>
<h1>Exemple de mise en page</h1>
</header>
<div id="conteneur">
<nav>
<a href="[Link] Lyon 2</a>
</nav>
<section>
<article>Article 1</article>
<article>Article 2</article>
<article>Article 3</article>
</section>
</div>
<footer>
© IDSM
</footer>
<main>
79 Programmation Web [Link] 80 Programmation Web [Link]
[Link]
[Link] [Link]
14
[Link] [Link]
Grilles Grilles
Grille adaptative
Éléments à taille multiple /* Tablette : 2 colonnes */
@media (max-width: 640px) {
@media (min-width: 481px) { .container {
.col-span { grid-template-columns: repeat(2, 1fr);
grid-column: span 2; /* double taille en largeur */ }
} }
.row-span { /* Téléphone mobile : 1 colonne */
grid-row: span 2 /* double taille en hauteur */ @media (max-width: 480px) {
} .container {
} grid-template-columns: 1fr;
}
}
85 Programmation Web [Link] 86 Programmation Web [Link]
Généralités Généralités
Syntaxe du langage PHP proche de celles de C, Perl PHP : Langage de script "serveur" comme ASP
ou Java (≠ Javascript, langage de script "client")
Script exécuté sur le serveur
Support d'un grand nombre de bases de données
<html>
<body>
Support de services internet (IMAP, POP3, NNTP, <?php echo "Bonjour"; ?>
</html>
HTTP) </body>
15
Syntaxe de base Variables et types
Constantes Opérateurs
16
Opérateurs Opérateurs
17
Structures de contrôle Structures de contrôle
Boucle "pour tout élément" de tableau scalaire Boucle "pour tout élément" de tableau associatif
foreach (tableau as valeur) instructions foreach (tableau as clé => valeur) instructions
18
Fonctions Visibilité des variables
Passage de paramètres par référence (paramètres passés Variables normales : visibles uniquement à l'intérieur
:&
par valeur par défaut) de la fonction où elles sont définies
– Ex. function alaligne(&$chaine) {
$chaine .= "<br />";
}
Variables globales
$ch="Coucou !"; – Ex. function exemple_global {
alaligne($ch); // <br /> ajouté à la fin global $vglob; // Visible hors de la fonction
–
Imbrication de requêtes SQL dans du code PHP + Base de données : ensemble de tables
formulaires HTML pour les mises à jour
Table : ensemble d'attributs et leurs valeurs
SGBD utilisé : MySQL – Ex. ETUDIANT (numetu, nom, prenom, datenaiss, note)
– Serveur de BD SQL multi-utilisateurs rapide
– Développé depuis 1995 (version actuelle : MySQL 5) Interrogation simple
– Disponible sous licence GPL ou commerciale SELECT liste_attributs FROM table
WHERE condition
– Ex. SELECT nom, prenom FROM etudiant WHERE note>=10
Utilisation de l'extension PHP Data Objects (PDO) :
interface d’accès à une base de données
(divers SGBD supportés dont MySQL ; nécessite PHP 5.1+) Création de table
CREATE TABLE nom_table (liste(champ, type))
113 Programmation Web [Link] 114 Programmation Web [Link]
19
Éléments de langage SQL Éléments de langage SQL
20
PDO : Exemple pratique Conversion de jeux de caractères
try {
// Connexion Encodage de caractères Europe de l’Ouest : iso-8859-1
$c = new PDO("mysql:host=localhost;dbname=darmont", "darmont", "x"); (sur 2 octets)
// Requête d’interrogation
$q = "select nom, prenom from etudiant"; Encodage de caractères international : utf-8
$res = $c->query($q);
echo "<ul>\n"; (sur 4 octets, plus récent)
foreach($res as $l)
echo "<li>". $l["nom"] . " " . $l["prenom"] . "</li>\n"; Si un texte contenu dans une BD est à un format et que
echo "</ul>\n"; le serveur Web utilise l’autre : problème (accents…)
echo "<p>" . $res->rowCount() . " résultat(s)</p>\n";
// Requête de mise à jour – Affichage de type è : caractères utf-8 affichés en iso-8859-1
$res = $c->exec("update etudiant set note = note + 1") ; ⇒ $idconn->exec("set names latin1");
echo "<p>$res ligne(s) modifiée(s)</p>\n";
} catch (PDOException $erreur) { // Gestion des erreurs – Affichage de type ? : caractères iso-8859-1 affichés en utf-8
echo "<p>Erreur : " . $erreur->getMessage() . "</p>\n"; ⇒ $idconn->exec("set names utf8"); Une seule fois, après la
} commande de connexion
121 Programmation Web [Link] 122 Programmation Web [Link]
Formulaires : permettent la saisie de données dans une Différence entre les méthodes get et post
page Web – get : apparition des valeurs saisies en paramètres de l'URI de
la page action
Définition : <form> </form> – post : . valeurs saisies cachées
– Attribut action : URI de la page PHP à exécuter après validation . quantité de données possible plus importante
du formulaire Exemple
– Attribut method : méthode de transmission des données (valeurs <form action="ajout_etu.php" method="post">…</form>
possibles : get et post)
– Attribut enctype : type d'encodage (par défaut application/x-
Structure d'un formulaire : ensemble de zones de
www-form-urlencoded ou saisie (groupes de champs)
multipart/form-data pour envoyer des fichiers) Groupe de champs : <fieldset> </fieldset>
21
Formulaires HTML Formulaires HTML
22
Mise à jour d'une base de données
avec PHP Téléchargement de fichier
<?php // Suite de l'exemple : document ajout_etu.php Étape 1 : formulaire dans une page HTML
$c = new PDO("mysql:host=localhost;dbname=darmont", – Ex.
"darmont", "x"); <form action="[Link]" method="post"
enctype="multipart/form-data" />
<fieldset>
$nom = $_POST["nom"]; <input type="hidden" name="MAX_FILE_SIZE" value="50000" />
$age = $_POST["age"]; Fichier : <input name="monfichier" type="file" />
$annee = $_POST["annee"]; <input type="submit" value="Télécharger" />
</fieldset>
</form>
$requete = "insert into etudiant values ('$nom', $age, '$annee')";
$resultat = $c->exec($requete);
if ($resultat) echo "<p>Insertion effectuée</p>"; Étape 2 : traitement à l'aide de PHP
?>
133 Programmation Web [Link] 134 Programmation Web [Link]
Transmission de variables
Téléchargement de fichier d'une page PHP à une autre
Variables disponibles dans la page cible
– $_FILES["monfichier"]["name"] : nom original du fichier Exemple : On dispose du nom et de l'age du visiteur de
– $_FILES["monfichier"]["size"] : taille du fichier la page [Link] dans les variables $nom et $age.
– $_FILES["monfichier"]["tmp_name"] : nom temporaire du fichier sur la On souhaite les transmettre à la page [Link].
machine serveur
Exemple de code dans la page [Link] Méthode 1 : Utiliser les champs cachés d'un formulaire
$destination = "/home/jd/public_html/" . $_FILES["monfichier"]["name"];
$res = move_uploaded_file($_FILES["monfichier"]["tmp_name"],
$destination); Méthode 2 : Ajouter des paramètres à l'URI de la page
if ($res) echo "<p>Fichier téléchargé avec succès</p>"; cible
else echo "<p>Erreur : " . $_FILES["monfichier"]["error"] . "</p>";
23
Sessions Sessions
<!-- Exemple -->
Objectif : Stockage de variables lors de la navigation <?php session_start(); ?>
<!DOCTYPE html>
sur plusieurs pages Web successives
<html>
<head> <title>Session 1</title> </head>
<body>
Utilisations courantes : <form action="[Link]" method="post« >
– Identification des visiteurs d'un site par login et mot de passe <fieldset>
stockés dans une base de données Votre nom : <input type="text" name="nom" />
<input type="submit" value="Valider" />
– Gestion du profil des utilisateurs
</fieldset>
– … </form>
</body>
</html>
Sessions Sessions
<?php <?php session_start(); ?>
session_start(); <!DOCTYPE html>
// Enregistre la valeur de $nom dans la variable de session s_nom <html>
$_SESSION["s_nom"] = $_POST["nom"]; <head> <title>Session 3</title> </head>
?> <body>
<!DOCTYPE html> <p>Es-tu toujours là, <?php echo $_SESSION["s_nom"]; ?> ?<br />
<html> <a href="[Link]">Détruire la variable de session</a> ou
<head> <title>Session 2</title> </head> <a href="[Link]">clore la session</a> ?</p>
<body> </body>
<p>Identifiant de session : <?php echo session_id(); ?><br /> </html>
Nom de session : <?php echo session_name(); ?></p>
<p>Bienvenue sur ma page Web, <?php echo $_SESSION["s_nom"]; ?>.<br />
<a href="[Link]">Page suivante</a>.</p>
</body>
</html>
141 Programmation Web [Link] 142 Programmation Web [Link]
Sessions Sessions
<?php <?php
session_start(); session_start();
$_SESSION["s_nom"] = FALSE; // Suppression de la variable de session session_destroy(); // Destruction de la session
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <title>Session 4</title> </head> <head> <title>Session 5</title> </head>
<body> <body>
<p>Es-tu toujours là ? <p>Session terminée.</p>
<?php if ($_SESSION["s_nom"]) echo "Oui."; </body>
else echo "Non."; ?> </html>
<br /><a href="[Link]">Clore la session</a>.</p>
</body>
</html>
24
Plan du cours
Langage HTML
Éléments de design Web
Feuilles de style en cascade (CSS)
Langage de script PHP
Connexion à une base de données (MySQL)
25