Introduction Rappel : conception, interrogation et mise à jour d une base de données De nombreux sites Web ont une (ou plusieurs) BD pour gérer leur données 2/51
Pages Web statiques L utilisateurice demande l accès à une page Web depuis son navigateur URL tapée, clic sur un lien, utilisation d un signet, etc. Le navigateur envoie une demande à un serveur Web Le serveur Web lit le fichier demandé sur le disque dur Le serveur Web envoie le contenu du fichier au navigateur Le navigateur affiche le contenu de la page pour l affichage, il peut également demander le contenu d autres fichiers au serveur (e.g., images) 3/51
Pages Web statiques (2) Inconvénient des pages statiques? http://fr.html.net/ 4/51
Pages Web statiques (2) Inconvénient des pages statiques? ñ Pour changer le contenu, il faut éditer le fichier! http://fr.html.net/ 4/51
Pages Web dynamiques Idée : générer le contenu de la page au moment où elle est demandée, en fonction : Du contenu d une base de données De paramètres fournis avec la demande (e.g., formulaires) http://fr.html.net/ 5/51
Pages Web dynamiques (2) L utilisateurice demande l accès à une page Web depuis son navigateur Le navigateur envoie une demande au serveur web comprenant : le nom de la page, qui correspond en fait à un programme éventuellement un ensemble de paramètres Le serveur web va chercher sur le disque le code source du programme et l exécute : en utilisant les paramètres transmis avec la demande du navigateur en récupérant des données dans une BD ou sur le disque Durant l exécution, le programme génère un contenu HTML Le contenu HTML est envoyé au navigateur Le navigateur affiche le résultat 6/51
Quelques langages Langages utilisés : Pour la structure et le contenu des pages : ñ HTML, XML Pour la présentation (mise en forme) : ñ CSS Pour le comportement (interactions, vérifications) : ñ Javascript, AJAX Pour des animations : ñ Flash (à éviter) 7/51
Quelques langages Langages utilisés : Pour la structure et le contenu des pages : ñ HTML, XML Pour la présentation (mise en forme) : ñ CSS Pour le comportement (interactions, vérifications) : ñ Javascript, AJAX Pour des animations : ñ Flash (à éviter) 7/51
Quelques langages (2) Langages utilisés : Pour générer le contenu des pages : aller chercher les données fabriquer un document (en général un document HTML) ñ PHP (ou bien Perl, Python, Java,...) Pour interroger la base : requêtes à effectuer sur la base ñ SQL 8/51
Quelques langages (2) Langages utilisés : Pour générer le contenu des pages : aller chercher les données fabriquer un document (en général un document HTML) ñ PHP (ou bien Perl, Python, Java,...) Pour interroger la base : requêtes à effectuer sur la base ñ SQL 8/51
Quelques outils Nombreux outils pour aider en programmation Web : Editeurs textuels (Emacs, BlueFish,...) ou WYSIWYG (Dreamweaver, NVU,...) CMS pour Content Management System (Drupal, Joomla, Spip, Wordpress,...) Framework (Symfony, Laravel, Hibernate,...) http://fr.wikipedia.org/wiki/syst%c3%a8me_de_gestion_de_contenu http://fr.wikipedia.org/wiki/%c3%89diteur_html http://fr.wikipedia.org/wiki/wysiwyg http://fr.wikipedia.org/wiki/framework http://fr.wikipedia.org/wiki/liste_de_frameworks_php 9/51
Plan Syntaxe de base du HTML Généralités En-tête (partie <head>) Contenu (partie <body>) Formulaires en HTML Généralités Composants de formulaire Nouveautés avec HTML5 Bilan 10/51
Généralités HTML pour HyperText Markup Language : Langage de balisage (structure contenu) Origine : 1989-1990 Toujours en développement (HTML5) Extension de fichiers :.html Standard W3C depuis 1996 http://fr.wikipedia.org/wiki/hypertext_markup_language http://fr.wikipedia.org/wiki/langage_de_balisage http://www.w3.org/tr/html4/ 11/51
Principe des balises 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>début du texte... On met une balise fermante à la fin du texte concerné :...fin du texte</nom_balise> Une balise ouvrante peut contenir des attributs de la forme nom="valeur" : <nom_balise nom1="val1" nom2="val2"...>texte... Les attributs permettent de préciser des informations concernant la mise en forme Les balises peuvent être imbriquées C est le navigateur qui interprète les balises pour faire l affichage 12/51
Structure d une page HTML Structure d une page HTML <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http ://www.w3.org/tr/html4/strict.dtd"> <html lang="fr"> <head> <title>titre de la page</title>... </head> <body> Partie affichée dans le navigateur... </body> </html> 13/51
Définition du type document Balise doctype spécifie le type de document : Plusieurs versions (et variantes) de la norme HTML Il faut donc préciser laquelle on utilise (et s y tenir) Obligatoire si l on veut faire valider son document par un validateur Balise doctype simplifiée en HTML5 (<!DOCTYPE html>) Balise <doctype> en HTML4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/tr/html4/strict.dtd"> Balise html pour le début du document : Attribut lang pour la langue (synthèse vocale) 14/51
En-tête Partie head du fichier HTML peut contenir : Des métadonnées sur le document, utilisables par les navigateurs ou moteurs de recherche : Syntaxe d une métadonnée : <meta name="propriété" content="attributs"> Exemple de métadonnées : la balise titre, obligatoire (dans la norme) des mots-clés l encodage du document (important pour afficher correctement les caractères accentués) le comportement des robots... La définition de scripts (qui seront utilisés dans la partie body) Un lien vers une feuille de style ou des scripts externes 15/51
En-tête (2) Exemple de fichier en-tête <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http ://www.w3.org/tr/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html ; charset=utf-8" /> <title>titre de la page</title> <link rel="stylesheet" type="text/css" href="includes/styles.css">... </head> <body> Partie affichée dans le navigateur... </body> </html> ñ Trois métadonnées dans la partie head : une spécification du codage, le titre de la page, et un lien vers un fichier de style CSS 16/51
Contenu Le contenu est placé entre les balises <body> et </body> Le contenu est structuré par des balises de mise en page (paragraphes, listes, etc.) 17/51
Paragraphes Syntaxe d un paragraphe <p> un texte qui s étend sur plusieurs lignes et qui forme un paragraphe </p> ñ le texte entre les balises <p> et </p> forme un paragraphe (saut de ligne avant et après) 18/51
Titres Syntaxe des titres Différents types de titres : <h1>un titre important</h1> un titre important est un titre important (paragraphe avec un affichage plus gros, en gras) <h2>un titre moins important</h2> un titre moins important est un titre moins important (affichage un peu moins gros)... <h6>un titre peu important</h6> un titre peu important est un petit titre 19/51
Mise en forme du texte Syntaxe de la mise en forme du texte <i>un texte en italique</i> ñ un texte en italique <u>un texte souligné</u> ñ un texte souligné <b>un texte en gras</b> ñ un texte en gras <big>un texte en plus grands caractères</big> ñ un texte en plus grands caractères <small>un texte en plus petits caractères</small> ñ un texte en plus petits caractères ñ Il vaut mieux privilégier les CSS pour la mise en forme! 20/51
Listes Syntaxe d une liste sans numérotation <ul> <li>entrée 1</li> <li>entrée 2</li> <li>entrée 3</li> <li>...</li> </ul> Syntaxe d une liste avec numérotation <ol> <li>entrée 1</li> <li>entrée 2</li> <li>entrée 3</li> <li>...</li> </ol> 21/51
Tableaux Syntaxe d un tableau <table> <tr> <td>case 1</td> <td>case 2</td> </tr> <tr> <td>case 3</td> <td>case 4</td> </tr> </table> ñ <tr> pour une nouvelle ligne, et <td> pour une nouvelle case 22/51
Tableaux (2) Syntaxe d un tableau <table border="1"> <tr> <td>case 1</td> <td>case 2</td> </tr> <tr> <td>case 3</td> <td>case 4</td> </tr> </table> ñ l attribut border permet de définir l épaisseur de la bordure Autres attributs : width, align, cellpadding, colspan... http://fr.wikibooks.org/wiki/le_langage_html/tableaux 23/51
Liens hypertextes Syntaxe d un lien hypertexte <a href="adresse_web">texte servant de lien</a> ñ Lorsque l on clique sur texte servant de lien, on va à l adresse (URL) adresse_web texte servant de lien devient un lien cliquable Autres attributs de la balise <a> : target="cible" pour ouvrir l URL dans cible (target="_blank" pour une nouvelle fenêtre) name="mon_ancre" pour définir une ancre mon_ancre (endroit précis d une page) 24/51
Liens hypertextes (2) Caractéristiques du lien : Absolu : adresse_web a un chemin complet (obligatoire pour un lien situé sur un autre site Web ou avec protocole différent) Relatif : adresse_web a un chemin défini par rapport à la page actuelle (préférable sur son site) 25/51
Liens hypertextes (2) Exemples de lien <a href="documents/un_doc.pdf">un lien interne, avec chemin relatif</a> <a href="http ://fr.wikipedia.org/">un lien externe, avec chemin absolu</a> <a href="http ://fr.wikipedia.org/" target="_blank">un lien externe, avec chemin absolu, qui s ouvre dans une nouvelle feneêtre</a> <a href="page.html#section3">un lien interne, pointant sur l ancre section3 de la page page.html</a> 26/51
Images Syntaxe d insertion d une image <img src="adresse_web_image" alt="texte alternatif"> ñ Insertion de l image située à l adresse adresse_web_image Pas de balise fermante pour <img> Attribut alt="texte alternatif" obligatoire (pour des raisons d accessibilité) Autres attributs : width, height, title, border,... http://fr.wikibooks.org/wiki/le_langage_html/images 27/51
Regroupements Deux types de balise : Inline (e.g., <a>, <img>) Block (e.g., <p>) ñ Un élement inline peut être placé dans des éléments de type block, mais pas l inverse http://vidberg.blog.lemonde.fr/ 28/51
Regroupements (2) Les éléments <div> et <span> servent à regrouper et structurer une page. Ce sont des balises neutres (pas d effet visible sur la page sans ajout d attributs) Syntaxe d un regroupment <div> <div><p>un texte</p><p>et un second</p></div> ñ <div> s utilise pour regrouper des éléments de type bloc (e.g., plusieurs <p>) Syntaxe d un regroupement <span> <p><span>un texte</span> et la suite<p> ñ <span> s utilise dans un élément de type bloc (e.g., <p>) 29/51
Bonnes pratiques Les navigateurs sont assez tolérants aux erreurs de programmation en HTML Aérer le code (mise à jour plus facile ñ soutenance de projet) Commenter le code, avec les balises! <! ceci est un commentaire > Balises en minuscules Penser à l accessibilité (e.g., attributs alt) Eviter les balises spécifiques à un navigateur Valider son fichier HTML avec un validateur http://validator.w3.org/ 30/51
En résumé HTML langage de balises, utilisé pour le contenu et la structure Il existe d autres balises pour le multimédia, les cadres, applets, etc. (91 balises sous HTML4, et 188 attributs) ñ Démo avec demo1.html (code source sur la page du LIF4) 31/51
Plan Syntaxe de base du HTML Généralités En-tête (partie <head>) Contenu (partie <body>) Formulaires en HTML Généralités Composants de formulaire Nouveautés avec HTML5 Bilan 32/51
Généralités Objectifs des formulaires Web : Permettre à l utilisateurice de saisir des paramètres Envoyer les valeurs saisies pour chaque paramètre au serveur Accéder à une page dynamique générée par le serveur selon les valeurs des paramètres Quels moyens? Différents composants (champs textuels, listes déroulantes, cases à cocher,...) A chaque composant correspond un paramètre 33/51
Généralités (2) Des formulaires bien connus pour générer des pages dynamiques... 34/51
Formulaires : balise principale Syntaxe générale d un formulaire <form action="adresse_web" method="type_methode" name="nomf"> contenu_formulaire </form> ñ Formulaire (sans composant) qui a pour nom nomf (attribut optionnel), qui transmettra ses paramètres avec la méthode type_methode et qui exécutera le fichier adresse_web après soumission du formulaire 35/51
Formulaires : balise principale (2) Attributs du formulaire : adresse_web : l adresse de la page/script à exécuter type_methode : la méthode de transmission des paramètres : GET : données encodées dans l URL de la page à la fin de l adresse, on ajoute le caractère? puis pour chaque paramètre on ajoute nom=val les paramètres sont séparés par le caractère & POST : données dans le corps de la requête HTTP contenu_formulaire : balises représentant les différents composants de saisie 36/51
Composants de formulaire Composant (ou élément) de formulaire : Généralement défini par la balise input Type du composant (liste, case à cocher, etc.) spécifié par l attribut type de la balise input Aussi des composants liste (balise select) et grand texte (balise textarea) Attributs recommandés d un composant : id (identification dans la page) et name (récupération de la valeur par ce nom) 37/51
Labels Dans un formulaire, il est recommandé d associer à chaque composant un texte descriptif (label) Syntaxe d un composant de saisie de texte <label for="idducomposant">texte descriptif</label> ñ Affiche un label texte descriptif, qui décrit le composant identifié par idducomposant Un clic sur le label donne le focus au composant Important pour l accessibilité 38/51
Composant de saisie de texte Syntaxe d un composant de saisie de texte <input type="text" name="nom"> ñ Crée un champ de saisie pour une ligne de texte : nom est le nom du paramètre correspondant à ce composant Attributs optionnels : size="un_nombre" : la taille du champ en caractères value="une_valeur" : texte pré-saisi utile pour modifier des informations Pas de balise fermante 39/51
Composant de saisie de texte (2) Syntaxe d un composant de saisie de texte masqué <input type="password" name="nom"> ñ Même composant que le champ texte, mais les caractères saisis sont remplacés par des (typiquement utilisés pour saisir un mot de passe) 40/51
Composant de saisie d un grand texte Syntaxe d un composant de saisie de grand texte <textarea name="nom" rows="h" cols="l"> contenu pré saisi </textarea> ñ Crée un champ de saisie pour du texte sur plusieurs lignes, avec les attributs : nom est le nom du paramètre correspondant à ce composant h est la hauteur du composant en nombre de lignes l est la largeur du composant en nombre de caractères le contenu pré-saisi peut être vide et ne contient pas de balise 41/51
Paramètres cachés Syntaxe d un composant caché <input type="hidden" name="nom" value="val"> ñ Permet de donner la valeur val au paramètre caché nom Ce composant n est pas affiché Utile pour spécifier un identifiant dans un formulaire de modification des informations de la base Pas de balise fermante 42/51
Listes déroulantes Syntaxe d une 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 correspond à la sélection de l utilisateurice (e.g., val1 pour Texte 1) L attribut value est optionnel (par défaut, la valeur vaut le texte dans la balise option) Attribut selected="true" dans une des balises option pour pré-sélectionner cette option 43/51
Case à cocher Syntaxe d une case à cocher <label>texte 1 <input type="checkbox" name="nom" id="id1" value="label1"/></label> <label>texte 2 <input type="checkbox" name="nom" id="id2" value="label2" /></label> ñ Crée deux cases à cocher identifiées par id1 et id2 portent sur le même paramètre (nom) et ont pour valeur label1 et label2 : Les cases d un même paramètre nom peuvent toutes être cochées à un moment donné Balise label recommandée pour afficher un texte correspondant à la case Attribut optionnel checked pour sélectionner une case par défaut 44/51
Boutons radio Syntaxe d un bouton radio <label>texte 1 <input type="radio" name="nom" id="id1" value="label1"/></label> <label>texte 2 <input type="radio" name="nom" id="id2" value="label2" /></label> ñ Crée deux boutons radio portant sur le même paramètre (même valeur pour leur attribut name), ayant des valeurs respectives label1 et label2 : Un seul bouton radio coché à un moment donné parmi tous ceux qui portent sur le même paramètre Balise label recommandée pour afficher un texte correspondant à la case Attribut optionnel checked pour sélectionner un bouton radio par défaut 45/51
Boutons de soumission Syntaxe d un bouton de soumission <input 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 le texte affiché sur le bouton Syntaxe d un bouton de soumission <input type="reset" value="texte"> ñ Crée un bouton déclenchant la réinitialisation du formulaire, en utilisant les valeurs pré-saisies lorsqu elles existent texte est le texte affiché sur le bouton 46/51
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 Nouveaux éléments en HTML5 : output (somme d un calcul) keygen (génération de clés de cryptage) 47/51
Quelques attributs HTML5 Quelques attributs introduits dans HTML5 (pas forcément implémentés dans les navigateurs) : placeholder : texte indicatif dans un champ textuel, qui s efface quand l utilisateurice commence à saisir required : le formulaire ne peut être validé un de ses composants avec attribut required n est pas rempli pattern : vérifier qu un champ respecte une expression régulière donnée (e.g., pattern pour url) Ajout de sémantique pour l attribut rel (valeurs stylesheet, next, author, etc.)... http://www.w3schools.com/tags/ 48/51
En résumé Dans un formulaire, chaque élément de saisie est un paramètre Définition d une page destination (attribut action) et d un mode de transmission des paramètres (attribut get) ñ Démo avec demo2.html (code source sur la page du LIF4) 49/51
Bilan Utilisation de HTML pour le contenu et la structuration d une page Web : Balises principales (liens, images, listes, etc.) Eléments de base d un formulaire (champs texte, cases à cocher, listes déroulantes, etc.) HTML5 : simplification de certaines balises (e.g., doctype, script), nouveaux éléments et attributs de formulaires, objets audio et video natifs (plus besoin de plugin), etc. 50/51
Bilan Utilisation de HTML pour le contenu et la structuration d une page Web : Balises principales (liens, images, listes, etc.) Eléments de base d un formulaire (champs texte, cases à cocher, listes déroulantes, etc.) HTML5 : simplification de certaines balises (e.g., doctype, script), nouveaux éléments et attributs de formulaires, objets audio et video natifs (plus besoin de plugin), etc. Prochain cours : l habillage du contenu avec CSS 50/51
Questions? Avantages et inconvénients des méthodes GET ou POST pour transmettres les données d un formulaire? 51/51
Questions? Avantages et inconvénients des méthodes GET ou POST pour transmettres les données d un formulaire? Que peut-on utiliser pour agencer les éléments d une page Web? Frames? Tableaux? Autre? 51/51
Questions? Avantages et inconvénients des méthodes GET ou POST pour transmettres les données d un formulaire? Que peut-on utiliser pour agencer les éléments d une page Web? Frames? Tableaux? Autre? Quels types de métadonnées connaissez-vous au niveau des BD? 51/51