Développement Web

Web Development · course

Voir tous les documents en développement web

Développement Web

Préparé par : Tarek BEN MENA

[email protected]

3ème année Science de l’Informatique

TBM 2014-15

page 1

Plan

  1- Introduction Générale   2- Web Statique

 HTML, XHTML, DOM  CSS  Javascript et Ajax   3- Web Dynamique

 PHP  PHP orienté-objet   4- Le modèle MVC

TBM 2014-15

page 2

Java Script et ajax

TBM 2014-15

page 3

Objectifs du Cours

  revisiter Javascript et les fonctionnalités associeés au

langage dans le cadre du développement Web

  une brève introduction au langage en guise de rappel est

suivie par l’étude de la couche objet

  On termine par une introduction à AJAX

TBM 2014-15

page 4

Introduction à JavaScript

TBM 2014-15

page 5

Caractéristiques du langage

  Créé par Netscape en 1995 (LiveScript)  Utilisé côté client pour dynamiser les pages web  contient des gestionnaires d'événement : il reconnaît et réagit aux

demandes de l'utilisateur

 langage très particulier (fonctionnel)  intégration d’une couche objet  Utilisé aujourd’hui pour créer des interfaces riches

  Standardisé par ECMA en 1996 , plusieurs implantations :

 JavaScript (Firefox)  JScript version Microsoft (IE)  ActionScript version Adobe

TBM 2014-15

page 6

Java vs. Java Script

  Langage de programmation

  Langage de Script POO

POO

  Pseudo-compilé

Interprété

  créer des applications qui sont exécutées sur une machine ou un navigateur virtuel

  est exécuté uniquement sur un

navigateur

  Fortement typé

  Légèrement typé

  Liaisons statiques: les objets

doivent exister au chargement (compilation)

  Liaisons dynamiques: les

références des objets sont vérifiées au chargement

  Confidentialité du code

  Accessibilité du code

TBM 2014-15

page 7

Utilisation de Javascript pour le navigateur

  Introduction de la balise <script> utilisé dans <head> ou

<body>

TBM 2014-15

page 8

Document Object Model (DOM)

TBM 2014-15

page 9

Description Rapide

TBM 2014-15

page 10

Spécificités

  Liées à la sécurité

 ne peut pas lire ou écrire dans le système de fichier de la machine  ne peut exécuter de programme externe  pas de connexion autre que serveur web

  Identificateurs pour nommer les fonctions ou variable  Définition classique : caractère suivi de caractères ou chiffres.  on peut également utiliser $ ou _

  Structure de contrôle

 posseède les structures de contrôle du langage C :

 if then else !  for, while, do while !  break, continue !  switch!  foreach pour les tableaux  et les exceptions throw, try, catch!

TBM 2014-15

page 11

Variables & Fonctions

  Les variables sont caractérisées par :

 ce sont des objets  l’absence de typage statique (typage dynamique)  elles peuvent être déclarées à tout moment  on peut utiliser le mot-clé var pour les déclarer   Les fonctions sont caractérisées par :

 Ce sont des objets  elles peuvent être déclarées à tout moment  On les déclare grâce au mot clé function

TBM 2014-15

page 12

Exemple avec des fonctions principales

TBM 2014-15

page 13

Objets de base

  Chacun des objets possède des méthodes propres :

 String  Boolean  Date  Number  Function  Array  RegExp (expression régulière)   On détermine le type d’un objet avec typeOf!

TBM 2014-15

page 14

L’objet Boolean

  permet de représenter des valeurs Booléennes

 attributs :  TRUE!  FALSE!  Méthodes:

 toSource() – représente le code source d’un objet  toString()!

TBM 2014-15

page 15

L’objet Number

  permet de représenter les nombres entiers et les réels

 attributs :

 MAXVALUE!  MINVALUE!

 Méthodes:

 toSource()!  toString(radix)!  toFixed(precision) notation avec chiffres après la virgule

TBM 2014-15

page 16

Publicité

L’objet String

  permet de représenter les chaînes de caractères

 attributs :

 length longueur de la chaîne

 Méthodes:

 integer charAt(index) //accéder à un caractère isolé d'une chaîne!  String concat(s1,s2,...)!  integer indexOf(search[,fromIndex]) // renvoie la position d'une

chaîne partielle à partir d'une position déterminée (en commençant au début de la chaîne principale soit en position 0).!

 integer lastIndexOf(search[,fromIndex]) //renvoie la position

d'une chaîne partielle à partir d'une position déterminée (en commençant à la fin soit en position length moins 1). !

 Array split(separator[,limit]) !  String substr(start,length) !  String substring(x,y) //renvoie un string partiel situé entre l position x et

la position y-1.

 String toLowerCase()!  String toUpperCase()!

TBM 2014-15

page 17

Exemple avec String

TBM 2014-15

page 18

L’objet Date

  permet de représenter les dates

 Date()  Date(milliseconds)  Date(y,m,d)  getDay(), getMonth(), getYear(), getFullYear()  getHours(), getMinutes(), getSeconds()  toGMTString  toLocaleString  toUTCString

TBM 2014-15

page 19

Objet Array

  permet de représenter et traiter les tableaux

 attributs :  length

 Méthodes:

 Array concat(array1,array2)  push : ajoute un nouvel élément à la fin  unshift : ajoute un nouvel élément au début  pop : supprime et retourne le dernier élément  shift : supprime et retourne le premier élément  reverse : inverse l’ordre des éléments  Array(n) : construit un tableau de longueur n  Array(n1,...,nk) : construit un tableau dont les éléments sont n1,...,nk  slice(begin, end) : extrait une partie du tableau  splice(index,howMany,e1, ..., en) : ajoute et supprime de nouveaux éléments  sort() : tri des éléments  sort(compare function) : tri suivant la fonction

TBM 2014-15

page 20

Exemple avec Array

TBM 2014-15

page 21

Gérer la structure du document

TBM 2014-15

page 22

Un exemple pour commencer

TBM 2014-15

page 23

Sélectionner un Element du DOM

  getElementById() // permet d'accéder à un élément en

connaissant son ID qui est simplement l'attribut id

  getElementsByTagName() // Cette méthode permet de

récupérer, sous la forme d'un tableau, tous les éléments de la famille

  getElementsByName() // permet de ne récupérer que les éléments qui possèdent un attribut name que vous spécifiez

  querySelector() et querySelectorAll() // simplifient

la sélection d'éléments dans l'arbre DOM prennent pour paramètre une chaîne de caractères qui doit être un sélecteur CSS comme ceux que vous utilisez dans vos feuilles de style

TBM 2014-15

page 24

Notion d’héritage

  un élément <div> est un objet

HTMLDivElement, mais un objet, en Javascript, peut appartenir à différents groupes.

  Ainsi, <div> est un HTMLDivElement, qui est un sous-objet d'HTMLElement qui est lui-même un sous-objet d'Element.

  Element est enfin un sous-objet de

Node.

  Node possède des propriétés et des méthodes qui pourront être utilisées depuis un de ses sous-objets. Les sous- objets héritent des propriétés et méthodes de leurs objets parents.

TBM 2014-15

page 25

Editer les éléments HTML

  Changer les attributs d’un élément

 getAttribute() et setAttribute() permettant respectivement

de récupérer et d'éditer un attribut

  Modifier l’attribut class

 Modifier alors le paramètre className

TBM 2014-15

page 26

Modifier le contenu HTML d’un élément

  innerHTML permet de récupérer le code HTML enfant d'un

élément sous forme de texte  Récupération

 Modification

InnerText (IE) et innerContent : Texte sans balise

TBM 2014-15

page 27

Naviguer entre les nœuds (1/2)

  La propriété parentNode permet d'accéder à l'élément

parent d'un élément

  nodeType et nodeName servent respectivement à vérifier le

type d'un nœud et le nom d'un nœud.  nodeType retourne un entier (1 = Nœud élément, 2 = Nœud attribut, 3

= Nœud texte ,etc.)

 nodeName, retourne simplement le nom de l'élément en majuscule

  firstChild et lastChild servent respectivement à

accéder au premier et au dernier enfant d'un nœud (élément html et #text).

  firstElementChild et lastElementChild servent

respectivement à accéder au premier et au dernier enfant qui sont des éléments html.

  nodeValue retourne le contenu d’un nœud s’il s’agit de texte sinon on accède au données du nœud avec la propriété data!

TBM 2014-15

page 28

Naviguer entre les nœuds (2/2)

  La propriété childNodes retourne un tableau contenant la

liste des enfants d'un élément.

  nextSibling et previousSibling sont deux propriétés

qui permettent d'accéder respectivement au nœud suivant et au nœud précédent.

TBM 2014-15

page 29

Créer et insérer des éléments

  Avec le DOM, l'ajout d'un élément HTML se fait en 3 temps :

 On crée l'élément ;  On lui affecte des attributs ;  On l'insère dans le document,

TBM 2014-15

page 30

Cloner, remplacer, supprimer …

  cloneNode() : permet de cloner un nœud avec (true) ou

sans (false) ses enfants et ses différents attributs.  Il faut penser à l’ajouter après son clonage

  replaceChild()

Publicité

  removeChild()

TBM 2014-15

page 31

Autres actions

  hasChildNodes() : vérifie la présence d'éléments enfants

  insertBefore() : permet d'insérer un élément avant un

autre.  Elle reçoit deux paramètres : le premier est l'élément à insérer, tandis que le deuxième est l'élément avant lequel l'élément va être inséré.

TBM 2014-15

page 32

Les événements

TBM 2014-15

page 33

Définitions

  Les événements sont des actions de l'utilisateur, qui vont

pouvoir donner lieu à une interactivité.

  L'événement par excellence est le clic de souris, car c'est

le seul que le HTML gère.

  Grâce au Javascript il est possible d'associer des

fonctions, des méthodes à des événements tels que le passage de la souris au-dessus d'une zone, le changement d'une valeur, …

  Exemple : onClick="window.alert(‘bonjour’)"!

TBM 2014-15

page 34

Liste des évènements Évènement

Quand l’utilisateur

onBlur

enlève le focus du composant

onChange

change la valeur d'un texte ou d'un composant à options

onClick

clique sur un composant ou un hyperlien

onFocus

donne le focus au composant

Balise

text, textarea, select

text, textarea, select

button, checkbox, radio, reset, submit

text, textarea, select

onLoad

charge la page dans le navigateur

body, frameset

onMouseOut

la souris quitte un lien ou une ancre

<a href..>, <area href..>

onMouseOver bouge la souris sur un lien ou une ancre

<a href..>, <area href..>

onReset

efface les saisies d'un formulaire

<input type=« Reset »>

onSelect

sélectionne une zone d'édition d'un formulaire

text, textarea

onSubmit

soumet un formulaire

onUnload

quitte la page

TBM 2014-15

<input type=«Submit»>

body, frameset

page 35

Rappel - La balise <area>

TBM 2014-15

page 36

L’objet Window – Boite de dialogue

TBM 2014-15

page 37

Créer un objet window

option

description

directories = yes/no Affiche ou non les boutons de navigation

location = yes/no

Affiche ou non la barre d'adresse

menubar = yes/no

Affiche ou non la barre de menu

resizable = yes/no Définit si la taille de la fenêtre est modifiable ou

non

scrollbars = yes/no Affiche ou non les ascenceurs

status = yes/no

Affiche ou non la barre d'état

toolbar = yes/no

Affiche ou non la barre d'outils

width=largeur px

Définit la largeur

Height = hauteur px Définit l’hauteur

TBM 2014-15

page 38

Formulaire

  Accès à un formulaire:

 window.document.nom_du_formulaire !  window.document.forms[i] // ième + 1 formulaire !

  Accès à un objet du formulaire :

 window.document.nom_du_formulaire.nom_du_champ !  window.document.forms[i].elements[j] // le jème + 1

élement du ième+1 formulaire !

TBM 2014-15

page 39

Exemple 1

TBM 2014-15

page 40

Exemple 2

TBM 2014-15

page 41

Exemple : radiobutton

TBM 2014-15

page 42

Publicité

Exemple : CheckBox

TBM 2014-15

page 43

Exemple : Select

TBM 2014-15

page 44

Ajax

TBM 2014-15

page 45

Ajax

  Asynchronous JAvascript and XML   introduit par Jesse James Garrett en 2005, réunion de

trois technologies

  afin de créer des interfaces utilisateur riches (RUI)

 Javascript pour l’interaction côté client  XMLHttpRequest pour les requêtes asynchrones  XML pour l’échange de données client-serveur

  Mais repose également sur

 DOM CSS

TBM 2014-15

page 46

Pourquoi Ajax ?

  Ajax permet de modifier partiellement la page affichée par le

navigateur sans avoir à recharger la page entière.  Par exemple le contenu d'un champ de formulaire peut être changé, sans

avoir à recharger la page avec le titre, les images, le menu, etc.

  Ajax est une technique qui fait usage des éléments suivants:

 HTML pour l'interface.  CSS (Cascading Style-Sheet) pour la présentation de la page.  JavaScript (EcmaScript) pour les traitements locaux, et DOM (Document

Object Model) qui accède aux éléments de la page ou du formulaire ou aux éléments d'un fichier XML chargé sur le serveur.

 L'objet XMLHttpRequest lit des données ou fichiers sur le serveur de façon

asynchrone.

 PHP ou un autre langage de scripts peut être utilisé coté serveur.

TBM 2014-15

page 47

Exemple

TBM 2014-15

page 48

Asynchronous

  Asynchrone en français, signifie que l'exécution de

JavaScript continue sans attendre la réponse du serveur qui sera traitée quand elle arrivera.

  Tandis qu'en mode synchrone, le navigateur serait gelé

en attendant la réponse du serveur.

  Dynamic HTML est aussi un ensemble de techniques, qui

comprend: HTML, CSS, JavaScript.  Cela permet de modifier le contenu d'une page selon les commandes de l'utilisateur, à partir de données préalablement fournies ou avec un texte tapé par l'utilisateur.

  Ajax est DHTML plus l'objet XHR pour communiquer avec

le serveur.

TBM 2014-15

page 49

XMLHttpRequest - XHR

  Développé par Microsoft en 1998 en tant qu’objet ActiveX

  repris par Mozilla en 2002, puis autres navigateurs

  devenu une recommandation du W3C en 2006

  permet d’envoyer une requête asynchrone au serveur

  une fois les données reçues on met à jour le DOM

TBM 2014-15

page 50

Comment ça fonctionne ?

  Pour recueillir des informations sur le serveur l'objet XHR

dispose de deux méthodes:  open: établit une connexion.  send: envoie une requête au serveur.

  Les données fournies par le serveur seront récupérées

dans les champs de l'objet XMLHttpRequest  responseXml pour un fichier XML ou  responseText pour un fichier de texte brute.

  Il faut attendre la disponibilité des données, et l'état est donné par l'attribut readyState (seul le dernier est utile):  0: non initialisé.  1: connexion établie.  2: requête reçue.  3: réponse en cours.  4: terminé.

TBM 2014-15

page 51

XMLHttpRequest

  attributs de XMLHttpRequest

 Status : statut sous forme numérique (ex 200 OK, 404 Not Found)  statusText : statut sous format texte  readyState : état de l’objet

 0=uninitialized,  1=open,  2=sent,  3=receiving,  4=loaded

 Onreadystatechange : permet d’attacher un gestionnaire d’événement  responseText : réponse du serveur sous forme texte (HTML ou JSON)  responseXML : réponse du serveur sous forme XML

  Attention

 lorsque l’on a reçu les données du serveur et qu’elles sont prêtes à ^te

tretraitées:

TBM 2014-15

 readyState = 4  Status = 200

page 52

XMLHttpRequest

  Méthodes

 ouverture d’une connexion pour envoi ou réception de données (GET,

POST) : open(method, url, async)  envoi d’une requête : send(content)  mettre fin à la requête : abort()

TBM 2014-15

page 53

Etape 1 : Créer un objet XHR

  OU

TBM 2014-15

page 54

Etape 2 : attendre et traiter la réponse

 Le traitement de la réponse et les traitements qui suivent sont inclus

dans une fonction, et la valeur de retour de cette fonction sera assignée à l'attribut onreadystatechange de l'objet précédemment créé.

TBM 2014-15

page 55

Etape 3 : exécuter la requête

  Deux méthodes de XMLHttpRequest sont utilisées:  open: commande GET ou POST, URL du document, true pour

asynchrone.

 send: avec POST seulement, données à envoyer au serveur.

TBM 2014-15

page 56

Exemple 2 avec PHP

TBM 2014-15

page 57

Exemple 2 avec PHP

TBM 2014-15

page 58

Exemple 2 avec PHP

TBM 2014-15

page 59