Telechargé par Abdelrassoul Tahir

cours developpement web 2 GL2 ENASTIC amdjarass

publicité
Développement web 2
CM, TD et TP en 30H
Dr. Abakar Mahamat Ahmat
Maître-assistant CAMES
Enseignant-Chercheur Université de N’djaména
Faculté des Sciences Exactes et Appliquées- FSEA
Année académique 2020-2021
08:30
Cours Developpement web 2 – GL2 ENASTIC - Amdjarass
1
Plan
 Rappel : Le web, serveurs web, Les protocoles
de communication, Programmation web statique
 Programmation web dynamique
 Les bases du PHP
 Transmission des données via url et
formulaires
 Gestion des informations dans une base
de données
 Hebergement d’un site web
08:30
2
Rappel
08:30
3
Le web
 Internet : Réseaux des réseaux, basé sur le
protocole TCP/IP, fonction en mode
client/serveur
 Langage de base utilisé : HTML
 World Wide Web : architecture basé sur trois
concepts:
 La localisation : URL
 Le protocole : HTTP
 Le langage HTML
08:30
4
Le web
World Wide Web :
www
Toile d’arainger
D’étendue mondiale
08:30
5
Le web
08:30
6
Le web






Les protocoles de communications
http : HyperText Transfert Protocol
telnet :
ftp File tranfert Protocole
Smtp : send Mail trenfert Protocol
Etc.
08:30
7
Le web
 L’URL (Uniforme Ressource Locator)
 Adresse universelle de ressource
 A deux composants:
 Le nom d’hôte contenant la page web
 Le chemin d’accès sur l’hôte
 Exemple : www.someschool.edu/someDept/pic.gif
 L’agent utilisateur est le navigateur
 Internet Exploler, Nescape, …
 Serveur web : Apache,
08:30
8
Le web
 Fonctionnement du web
 Le client (navigateur) dialogue avec le serveur web
par le protocole http
 Le serveur vérifie la demande, les autorisations et
transmet les informations
 Le navigateur interprète le fichier reçu et l’affiche
08:30
9
Le web
 Vision du coté client
 Web = ensemble des pages (documents) contenant
des liens vers d’autres pages
 Consultation des pages via un navigateur
 Le navigateur
 Analyse l’URL demandée
 Demande au DNS l’adresse IP du site distant
 Etablit une connexion TCP vers le numéro de port de l’URL
(80 part défaut)
 Formule la requête au serveur
 Recherche la page demande
 Interprète les commandes et affiches les informations
08:30
10
Le web
 Vision du coté serveur
 Le serveur est en permanence à l’écoute des requêtes
des clients (nombreux)
 Vérifie la validité du requête
 Adresse URL correct
 Client autorisé à accéder au document
 Et répond :




08:30
Envoi du texte, image, code à exécuter sur le client
D’un message d’erreur
D’une demande d’authentification
Exécuter un programme localement qui génère une réponse
HTML (page dynamique)
11
Programmation statique : HTML
 HTML : HyperText Markup Langage
 Format d'écriture de document du type SGML
(Standard Generalized Markup Language)
 Définit par W3C (World Wide Web
Cconsortium)organisme chargé de la normalisation
et de la recherche sur la technologie Web
 Langage de description de documents
 documents HTML :Textes ascii ponctués par des
séquences <BALISE> et </BALISE>
 Ensemble des balises pour définir les différents
composants d’un document
08:30
12
Programmation statique : HTML
 Les balises:





par "<" et se termine par " >"
Non invisibles pour le visiteur
servent de marqueurs pour le navigateur
2 types de balises : par paire Ou seule
Par paire : Exemple
 <title>Bienvenue sur mon site !</title>
 <TABLE><TR><TD>Bonjour</TD></TR></TABLE>
 Seules : Exemple
 se termine toujours par un slash "/", placé à la fin de la
balise.
 <img src="soleil.jpg"/>
08:30
13
Programmation statique : HTML
 Les attributs
 Permettent de donner des précisions sur une balise
Exemple
 <img src="soleil.jpg"/>
 l'attribut est "src", et il a pour valeur "soleil.jpg" qui
indique l'image à insérer
 </br> : qui indique retour à la ligne suivante ou insertion
d’une ligne
08:30
14
Programmation statique : HTML
 Structure d’un document HTML
<html>
<head>
<Title> Titre de la page </title>
</head>
<body>
Corps du document
</body>
</html>
08:30
15
Programmation statique : HTML
 Explication :






<html> : Balise d’ouverture du document
<head> : Balise de l’entête
<Title> : Tbalise de titre du document
<body> : Balise indiquant le corps du document
Les commentaires
<! ----Commentaire ---- >
 Styles pour les textes
 <B> Affiche le gras
 <I> Affiche l’italique
08:30
16
Programmation statique : HTML
 Styles pour les textes
 <B> Affiche le gras
 <I> Affiche l’italique
 <h1>,<h2> ... <h6> : Définit des titres ou en-tête,
de différentes tailles
 Exemple : <H1> En-tête </H1>




08:30
<CENTER> Pour centrer le texte
<p> nouveau paragraphe
</br> force le retour à la ligne suivante
Etc.
17
Programmation statique : HTML
 Styles pour les textes
 Les listes à puces
<UL>
<LI> Texte 1 </LI>
<LI> texte 2 </LI>
</UL>
ceci affiche
● Texte 1
● Texte 2
08:30
18
Programmation statique : HTML
 Styles pour les textes
 Les listes numérotées
<OL>
<LI> Texte 1 </LI>
<LI> texte 2 </LI>
</OL>
ceci affiche
1. Texte 1
2. Texte 2
08:30
19
Programmation statique : HTML
 Styles pour les textes
 Les liens hypertext
<A HREF="url">un-petit-texte</A>
 Lien absolu : "http://www.iusta-tchad.org
 Lien relatif : par rapport au site interne
 Lien pour envoyer un mail :
href="mailto:[email protected]
 Lien pour une ancre:
 <h2 id="mon_ancre">Titre</h2>
 <a href="#mon_ancre">Aller vers l'ancre</a>
 Les images : <img src= "url_image">
08:30
20
Programmation statique : HTML
 Styles pour les textes
 Les tableaux
 <TABLE> : Indique le début du tableau (finissant par
</TABLE>)
 <TR> : indique une nouvelle ligne (Table Row)
 <TD> : Indique une nouvelle colonne (Table Data)
 la ligne d'en-tête se crée avec un <tr>, mais les cellules
à l'intérieur sont cette fois des <th> et non pas des
<td>
08:30
21
Programmation statique : HTML

Styles pour les textes

Exemple
<table>
<tr>
<th>Nom</th>
<th>Age</th>
<th>Pays</th>
</tr>
<tr>
<td>Carmen</td>
<td>33 ans</td>
<td>Espagne</td>
</tr>
<tr>
<td>Michelle</td>
<td>26 ans</td>
<td>Etats-Unis</td>
</tr>
</table>
08:30
22
Programmation statique : HTML
 Styles pour les textes
 Les formulaires
 Servent aux saisies des données et leur traitement se
fait au niveau de serveur
 Commande form est la balise de base
<form>
<p>Texte à l'intérieur du formulaire</p>
</form>
08:30
23
Programmation statique : HTML
 Styles pour les textes
 Les formulaires
 Pour cela deux attributs sont à indiqués dans la balise
<form>
 Method : deux moyen envoyer les données
 Method : GET: peu adaptée (255 caractère), info
envoyés dans l’adresse (http://…)
 Methode POST:
 Action : c’est l’adresse de la page ou programme qui
traite les informations
08:30
24
Programmation statique : HTML
 Styles pour les textes
 Les formulaires
 Deux problèmes se posent :
 Comment envoyer les textes saisis par le visiteur ?
 Une fois que les données ont été envoyées, comment les
traiter
 Pour cela deux attributs sont à indiqués dans la balise
<from>
 Method : pour indiquer le moyen d’envoi
 Action : pour dire comment les traiter
08:30
25
Programmation statique : HTML
 Styles pour les textes
 Les formulaires
 method: deux moyens pour envoyer les données
 GET : méthode peu adaptée (limitée à 255 caractères),
info envoyées par http:// : pour indiquer le moyen
d’envoi
 POST : méthode la plus utilisée pour les formulaires
 action: adresse de la page qui doit traiter les
informations envoyées (limite du HTML et CSS)
08:30
26
Programmation statique : HTML
 Styles pour les textes
 Les formulaires
Exemple :
<form method="post" action="traitement.php">
<p>Texte à l'intérieur du formulaire</p>
</form>
Ici on ne traite pas encore le php
08:30
27
Programmation statique : HTML
 Les formulaires
 Les zones de textes : deux types
 une ligne et multilignes
 Zone de texte une ligne:
Exemple :
<form action="cible.php" method="post">
<p>
<input type="text" name="prenom" />
<input type="submit" value="Valider" />
</p>
</form>
08:30
28
Programmation statique : HTML
 Les formulaires
 Zone de texte multilignes
Exemple :
<form method="post" action="traitement.php">
<p> <label for="amliorer" > commentaire ici</label><br>
<textarea name="ameliorer" id ="ameloirer" rows="10" cols="50">
</textarea>
</p>
</form>
08:30
29
Programmation statique : HTML
 Les formulaires
 Les cases à cocher
 On utilise toujours <input/> avec la valeur de type=chexbox
<input type= "checkbox" name = "choix" />
Exemple :
<form method="post" action="traitement.php">
<p>
Cochez les aliments que vous manger
<input type="checkbox" name="frites" id="frites" /> <label for="frites">Frites</label><br />
<input type="checkbox" name="steak" id="steak" /> <label for=« steak">Steak haché</label><br />
<input type="checkbox" name="epinard" id="epinard" /> <label for="epinard">Epinard</label><br />
<p>
</form>
08:30
30
Programmation statique : HTML
 Les formulaires
 Les zones à options
 On utilise toujours <input/> avec la valeur de type=radio
Les zones d’option fonctionne par groupe (meme nom)
Exemple :
<form method="post" action="traitement.php">
<p>
Veuillez indiquer la tranche d'âge dans laquelle vous vous situez :<br />
<input type="radio" name="age" value="moins15" id="moins15" />
<label for="moins15">Moins de 15 ans</label><br /><p>
<input type="radio" name="age" value="medium15-25" id="medium15-25" />
<label for="medium15- 25">15-25 ans</label><br />
<p>
</form>
08:30
31
Programmation statique : HTML
 Les formulaires
 Les listes déroulantes
 On utilise la balise <select> et </select> qui indique le debut
et la fin de la liste déroulante
 On ajoute l’attribut name pour donner un nom à la liste
 A l’intérieur de la balise <select></select> on mettra
plusieurs <options></option> (une par choix possible).
 On rajoute un attribut value pour pouvoir identifier ce que le
visiteur à choisi
08:30
32
Programmation statique : HTML
 Les formulaires
 Les listes déroulantes : exemple:
<form method="post" action="traitement.php">
<p>
<label for="pays">Dans quel pays habitez-vous ? </label><br />
<select name="pays" id="pays">
<option value="france">France</option>
<option value="espagne">Espagne</option>
<option value="italie">Italie</option>
<option value="royaume-uni">Royaume-Uni</option>
<option value="canada">Canada</option>
<option value="etats-unis">Etats-Unis</option>
<option value="chine">Chine</option>
<option value="japon">Japon</option>
</select>
</p>
</form>
08:30
33
Le CSS
 Qu’est ce que le CSS
 Cascading Style Sheets", = "Feuilles de style en
cascade«
 Document au format texte comme le HTML
 C’est un document qui indique comment la page HTML
doit être affiché
 Le CCS agit en arrière plan
 Par exemple : en utilisant les styles = affichage lien
dans la couleur de son choix
 Où mettre les codes CSS
08:30
34
Le CSS
 Où mettre les codes CSS :
 En général dans un fichier à part avec l’extension .css
 Un fichier dans lequel on écrit l’apparence de notre site





La couleur et taille de police
La taille des titres
La position des menus
La couleur ou l’image de fond
Etc.
 On peut écrire le code CSS dans 3 endroits différents:
 1er méthode : dans un fichier a part (recommandée)
 2ème méthode :Dans l’entête du fichier html
 3ème méthode : dans les balises
08:30
35
Le CSS
 Liaison page HTML et le CSS :
 On doit ajouter dans le fichier html la ligne
suivante entre les balise <head> </head> :
<link rel="stylesheet" media="screen“
type="text/css" title="Essai_IUSTA"
href="department_IIG.css" />
Ce qui permettra de "dire" au fichier XHTML quel
fichier CSS il doit charger
08:30
36
Le CSS
 Liaison page HTML et le CSS :
 La balise <link> comporte plusieurs attributs
qu’on peut changer deux
 Title : le non de la feuille de style css
 href : l’emplacement où se trouve la feuille
 Dans un CSS, on trouve 3 éléments:
 Nom de la balise : balise qu’on change l’apparence
 Propiété: effet de style : color, …
 valeur
08:30
37
Le CSS
 Exemple
balise1
{
propriete: valeur;
propriete: valeur;
}
balise2
{
propriete: valeur;
}
08:30
38
Le CSS
 Exemple
p
{
color: blue;
font-size: 18px;
}
h1, h2
{
color: red;
}
08:30
39
Le CSS
 Utilisation des attributs class et id
 Pour appliquer un style sur une partie de
paragraphe
 Fonctionne de la meme manière
 Class s’utilise fois sur la page
 Id une seule fois sur la meme page
 Dans le css on precede par un point (.) pr class
 Et par dieze (#) pour id
08:30
40
Le CSS
 Exemple
 Dans la page html
<h1 class="nom"> </h1>
<p class="partie"></p>
<img class="propre" />
 Et dans le CSS
.nom
{
color: red;
font-size: 18px;
}
08:30
41
Le CSS
Classification des balises : 2 catégories
Block et inline (en bloc et en ligne)
Block crée automatiquement un retour à la ligne
Un bloc peu être imbriqué dans un autre bloc
Inline se trouve obligatoirement à l’interieur
d’une balise block
 Inline ne crée pas le retour à la ligne





08:30
42
Le CSS
 Exemple
08:30
43
Le CSS
La taille d’un bloc s’exprime en pixel (px) ou (%)
Hauteur : higth
Largeur : width
Par défaut la taille d’un bloc prend 100% de la
largeur disponible
 Exemple




p{
width: 250px;
height: 100px;
text-align: justify;
}
08:30
p{
width: 50%;
text-align: justify; /* Texte justifié pr voir largeur du bloc */
}
44
Le CSS
 La bordure d’un block
 On utilise 3 valeurs
 La largeur mettre (2px) : mots clés utilisés
 thin : bordure fine (navigateur choisi le nombre de pixel
 Meduim : bordure moyenne
 Thic : bordure épaisse
 La couleur : on utilise un nom ou une valeur
 Black ou (#FF000000)
 Type de bordure : simple ou pointillés ou trait
 None, solide (trait simple), double (double trait), …
08:30
45
Le CSS
 Exemple :













p
{
width: 350px;
}
h2
{
border-bottom: 2px solid black;
}
.haut_bas
{
border-top: 1px dashed red;
border-bottom: 1px dashed red;
}
08:30
46
Plan
 Rappel : Le web, serveurs web, Les protocoles
de communication, Programmation web statique
 Programmation web dynamique
 Les bases du PHP
 Transmission des données via url et
formulaires
 Gestion des informations dans une base
de données
 Hebergement d’un site web
08:30
47
Programmation dynamique
Coté Serveur
08:30
48
Programmation dynamique
 Difference page web statique et dynamique
 Langage de script: ASP, JSP, PHP, RoR, Javascript, etc.
 En Statique (HTML)
 En dynamique (PHP)
08:30
49
Programmation dynamique
 La création d’un site web dynamique nécessite
l’utilisation d’un langage de script
 Un langage de script utilise une base de données
et crée principalement des pages Web HTML
dynamique mais aussi des animations Flash, etc.
 Le
document
HTML
consulté
n'est
pas
nécessairement identique à chaque consultation,
sans que le webmestre n'ait eu à intervenir
manuellement
 Plusieurs langages de script existent parmi
lesquels : ASP, JSP, PHP, RoR, Javascript
08:30
50
Programmation dynamique
 Les ordinateurs clients ne peuvent pas
interpréter les scripts coté serveur (codes php,
ASP, …); ils ne peuvent qu’interpreter le HTML, le
CSS et les scripts coté client (JavaScript)
 C’est donc au serveur de transformer le code
PHP en HTML avant d’envoyer au client
 Un code PHP peut contenir aussi des codes HTML
08:30
51
Plan
 Rappel : Le web, serveurs web, Les protocoles
de communication, Programmation web statique
 Programmation web dynamique
 Les bases du PHP
 Transmission des données via l’url et
formulaires
 Gestion des informations dans une base
de données
 Hebergement d’un site web
08:30
52
Le bases du PHP
08:30
53
Le PHP
 C’est un langage de script le plus actif sur le web
 Il permet d'utiliser une base de données pour
construire un document HTML
 Le document construit n’est pas nécessairement
identique à chaque consultation
 Exemple d’un code PHP
<?php echo("Vous êtes le visiteur n°" , $nbre_visiteurs); ?>
08:30
54
Le PHP
 Syntaxe PHP (voir fichier cours base de langage
PHP joint a ce cours)
08:30
55
Outils de développement
 Plusieurs EDI : Dreamweaver, NetBeans,
PHPEclipse, PHPEdit, WebExpert, Zend Studio, …
 Solution tout en un : contient à la fois un serveur
Apache, une base de données MySQL, un
ensemble complet PHP, (Apache + php + Mysql
+ administration ) :





08:30
EasyPHP (Windows)
XAMP (Windows)
MAMP (Mac OS)
WAMP (Windows)
Zend Core (Linux)
56
Utilisation du PHP
 PHP peut être utilisé de diverses manières :
1. Pour une interface Web : c'est l'utilisation la plus
courante ;
2. En ligne de commandes ("CLI" pour Command Line
Interface) ;
3. Pour produire une interface desktop ("GUI" pour
Graphical User Interface).
08:30
57
Plan
 Rappel : Le web, serveurs web, Les protocoles
de communication, Programmation web statique
 Programmation web dynamique
 Les bases du PHP
 Transmission des données via url et
formulaires
 Gestion des informations dans une base
de données
 Hebergement d’un site web
08:30
58
Transmission des données via
l’URL et les formulaires
08:30
59
Envoyer des parametres via URL
 L’URL (Uniform Resource Locator) permettait de
transmettre des informations d’une page a une autre
 Les paramètres sont ajoutés à la fin de l'URL après le point
d'interrogation ? et sont séparés par &
08:30
60
Recuperer les parametres
 La page qui reçoit les paramètres va automatiquement
créer une variable de type array : $_GET
 On peut donc récupérer ces informations et les traiter
08:30
61
Exemple transmission des données
via URL
 Exemple :
 Fichier index.php
 Fichier bonjour.php
08:30
62
Exemple transmission des données
via URL
 Recommandations :
1. Pour éviter que le visiteur traque l’url, il faut contrôler cette
url en testant la présence des paramètres avant l’execution
du code
La fonction : isset()teste si une variable existe.
08:30
63
Exemple transmission des données
via URL
 Recommandations :
2. L’éxecution des boucles doivent également être controlées
08:30
64
Les formulaires
 Les formulaires servent aux saisies des données et
leur traitement se fait au niveau de serveur
 Commande form est la balise de base
<form method="post" action="cible.php">
<p>
On insèrera ici les éléments de notre formulaire.
</p>
</form>
 Method : pour indiquer le moyen d’envoi
 Action : pour dire comment les traiter
08:30
65
Les formulaires
 Deux attributs sont à indiqués dans la balise
<form>
 Method : 2 moyens pour envoyer les données
 Method : GET: peu adaptée (255 caractères), info envoyés
dans l’adresse (http://…)
 Methode POST:
 Action : c’est l’adresse de la page ou
programme qui traite les informations
envoyées
08:30
66
Les formulaires
 Exemple :
<form method="post" action="traitement.php">
<p>Texte à l'intérieur du formulaire</p>
</form>
08:30
67
Les formulaires de zones de textes
 Les zones de textes : deux types se distinguent
 une ligne et multilignes
 Zone de texte une ligne:
Exemple :
<form action="cible.php" method="post">
<p>
<input type="text" name="prenom" />
<input type="submit" value="Valider" />
</p>
</form>
08:30
68
Les formulaires de zones de textes
 Zone de texte multilignes
Exemple :
<form method="post" action="traitement.php">
<p> <label for="amliorer" > commentaire ici</label><br>
<textarea name="ameliorer" id ="ameloirer" rows="10" cols="50">
</textarea>
</p>
</form>
08:30
69
Les formulaires de zones de textes
 Les cases à cocher
 On utilise toujours <input/> avec la valeur de type=chexbox
<input type= "checkbox" name = "choix" />
Exemple :
<form method="post" action="traitement.php">
<p>
Cochez les aliments que vous manger
<input type="checkbox" name="frites" id="frites" /> <label for="frites">Frites</label><br />
<input type="checkbox" name="steak" id="steak" /> <label for=« steak">Steak haché</label><br />
<input type="checkbox" name="epinard" id="epinard" /> <label for="epinard">Epinard</label><br />
<p>
</form>
08:30
70
Les formulaires de zones de textes
 Les zones à options
 On utilise toujours <input/> avec la valeur de
type=radio
Les zones d’option fonctionne par groupe (meme nom)
<form method="post" action="traitement.php">
<p>
Veuillez indiquer la tranche d'âge dans laquelle vous vous situez :<br />
<input type="radio" name="age" value="moins15" id="moins15" />
<label for="moins15">Moins de 15 ans</label><br /><p>
<input type="radio" name="age" value="medium15-25" id="medium15-25" />
<label for="medium15- 25">15-25 ans</label><br />
<p>
</form>
08:30
71
Les formulaires de zones de textes
 Les listes déroulantes
 On utilise la balise <select> et </select> qui indique le
debut et la fin de la liste déroulante
 On ajoute l’attribut name pour donner un nom à la liste
 A l’intérieur de la balise <select></select> on mettra
plusieurs <options></option> (une par choix possible).
 On rajoute un attribut value pour pouvoir identifier ce
que le visiteur à choisi
08:30
72
Les formulaires de zones de textes
 Les listes déroulantes : exemple:
<form method="post" action="traitement.php">
<p>
<label for="pays">Dans quel pays habitez-vous ? </label><br />
<select name="pays" id="pays">
<option value="france">France</option>
<option value="espagne">Espagne</option>
<option value="italie">Italie</option>
<option value="royaume-uni">Royaume-Uni</option>
<option value="canada">Canada</option>
<option value="etats-unis">Etats-Unis</option>
<option value="chine">Chine</option>
<option value="japon">Japon</option>
</select>
</p>
</form>
08:30
73
Exemple
 formulaire.php : contient un simple formulaire.
 secret.php : contient les "codes secrets" mais
ne les affiche que si on lui donne le mot de
passe
08:30
74
code de la page formulaire.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head> <title>Page protégée par mot de passe</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<p>Veuillez entrer votre mot de passe pour obtenir les codes d'accès</p>
<form action="secret.php" method="post">
<p>
<input type="password" name="mot_de_passe" />
<input type="submit" value="Valider" />
</p>
</form>
<p>Cette page est réservée au personnel du service de maintenance et de l’administrateur
système. Si vous ne faites pas partie de cette équipe vous n’avez plus accès. N’insistez pas !
08:30
Merci, inutile d'insister vous ne trouverez jamais le mot de passe ! ;-)</p>
</body>
</html>
75
code de la page secret.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head> <title>Codes d'accès au serveur central de l’IUSTA</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head>
<body>
<?php
if (isset($_POST['mot_de_passe']) AND $_POST['mot_de_passe'] =="azerty") // Si le mot de
passe est bon
{ // On affiche les codes
?>
<h1>Voici les codes d'accès :</h1>
<p><strong>CRD5-GTFT-CK65-JOPM-V29N-24G1-HH28-LLFV</strong></p>
<p> Les codes d'accès sont changés toutes les semaines.<br /> Merci de votre visite. </p>
<?php
}
else // Sinon, on affiche un message d'erreur
{
echo '<p>Mot de passe incorrect</p>';
08:30 }
76
?> </body> </html>
Plan
 Rappel : Le web, serveurs web, Les protocoles
de communication, Programmation web statique
 Programmation web dynamique
 Les bases du PHP
 Transmission des données via url et
formulaires
 Gestion des informations dans une base
de données
 Hebergement d’un site web
08:30
77
Gestion des informations dans
une base de données
08:30
78
Gestion des informations dans une base de
données
1. Les SGBD les plus utilisés
2. Comment Lire des données a partir de la Base
De Données
3. Comment écrire des données dans la Base De
Données
4. Exprimer des requêtes SQL
08:30
79
Les SGBD les plus utilisés :
 MySQL : libre et gratuit, c'est probablement le SGBD
le plus connu.
 PostgreSQL : libre et gratuit comme MySQL, avec
plus de fonctionnalités mais un peu moins connu.
 SQLite: libre et gratuit, très léger mais très limité en
fonctionnalités.
 Oracle : utilisé par les très grosses entreprises, sans
aucun doute un des SGBD les plus complets mais il
n'est pas libre et on le paie le plus souvent très cher.
 Microsoft SQL Server : le SGBD de Microsoft
 …
08:30
80
MySQL
 La jonction entre l’utilisateur et la base de
données (MySQL) est faite par PHP
1. Le serveur grâce au PHP fait passer le message
2. PHP effectue les actions demandées et communique
avec la base de données MySQL.
3. La base est consultée ;
4. La réponse est renvoyée au serveur par PHP
08:30
81
MySQL
 Il existe plusieurs façons d'accéder à la base de
données et d'y faire des modifications
 On peut utiliser une ligne de commande
(console), exécuter les requêtes en PHP
 ou faire appel à un programme qui permet
d'avoir rapidement une vue d'ensemble :
 phpMyAdmin (livré avec WAMP), un des outils les plus
connus permettant de manipuler une base de données
MySQL.
08:30
82
Création d’une table
1.
2.
08:30
Liste des bases : c'est la liste de bases de données. Le nombre entre
parenthèses est le nombre de tables qu'il y a dans la base.
Pour créer une base de données
83
Création d’une table
 La création des tables dans la base de données
consiste à définir quelques propriétés des
champs par exemple :




08:30
id : premier champ : Le numéro d'identification.
Titre : deuxième champ
contenu :troisième champ
etc.
84
Les requêtes
 Pour exprimer les requêtes on utilise l’outil SQL
Il y a la possibilité d’Importer, d’Exporter, des données, faire des Opérations, …
08:30
85
Comment lire les données ?
 Pour lire une donnée, on procède en deux
étapes:
1. La première est d’abord se connecter à la base
2. La deuxième est la récupération des données
08:30
86
Se connecter à la base
 PHP propose plusieurs moyens de se connecter à
une base de données MySQL :
 L'extension mysql_ : ce sont des fonctions qui
permettent d'accéder à une base de données MySQL.
Leur nom commence toujours par mysql_. Des
fonctions qui ne sont pas recommandées
 L'extension mysqli_ : ce sont des fonctions améliorées
d'accès à MySQL. Elles proposent plus de
fonctionnalités et sont plus à jour
 L'extension PDO : c'est un outil complet qui permet
d'accéder à n'importe quel type de base de données.
On peut donc l'utiliser pour se connecter aussi bien à
MySQL que PostgreSQL ou Oracle
08:30
87
Se connecter à la base
 PHP propose les fonctions :
 Mysql_
 Mysqli_
 PDO
08:30
88
Se connecter à la base
 Normalement, PDO est activé par défaut
 Pour le vérifier, un clic gauche sur l'icône de WAMP
dans la barre des tâches, puis allez dans le menu PHP /
Extensions PHP et vérifiez que php_pdo_mysql est bien
coché
08:30
89
Se connecter à la base
 Il faut ensuite ouvrir le fichier de configuration
de PHP (qui s'appelle généralement php.ini) et
rechercher la ligne qui contient php_pdo_mysql.
Enlevez le point-virgule devant s'il y en a un
pour activer l'extension :
08:30
90
Se connecter à la base
 Une fois que PDO est activé, pour se connecter à
MySQL, il faut avoir renseigné 4 informations :




Le nom de l'hôte : c'est l'adresse de l'ordinateur où MySQL est
installé (l’adresse IP). Si même ordinateur que PHP (localhost). Il est
possible que votre hébergeur web vous indique une autre valeur à
renseigner (par exemple sql.hebergeur.com)
La base : c'est le nom de la base de données à laquelle on désire se
connecter.
Le login : permet l’identification. Le plus souvent (chez un hébergeur
gratuit) c'est le même login qu’on utilise pour FTP
Le mot de passe : il y a des chances pour que le mot de passe soit
le même que celui que vous utilisez pour accéder au FTP, à
renseignez-vous auprès de l’hébergeur
Remarque Par défaut le login est root et le mot de passe est vide
08:30
91
Se connecter à la base
 Par exemple la syntaxe pour se connecter à la
base de données peut se présenter comme suit :
<?php
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', ‘ ');
?>
 On a créé un objet (bdd) représentant la connexion à la
base de données. En indiquant dans l'ordre dans les
paramètres :




08:30
Le
La
Le
Le
nom d'hôte (localhost)
base de données (test)
login (root)
mot de passe (pas de mot de passe, la chaîne est vide)
92
Se connecter à la base
 D’une manière générale, on spécifie un login et
un mot de passe
<?php
$bdd = new PDO('mysql:host=sql.hebergeur.com;dbname=mabase', 'ali.ahmat', 'tr3c3t');
?>
08:30
93
Se connecter à la base
 Pour éviter que le php affiche le mot de passe en cas
d’erreur dans le code, il est préférable de traiter les erreurs
<?php
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', ‘ ',
$pdo_options);
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}?>
En cas d'erreur, PDO renvoie ce qu'on appelle une exception qui permet de
"capturer" l'erreur.
08:30
94
Récupération des données
 Pour récupérer les données, une fois la
connexion est établie, on exprime une requête
SQL
<?php
$reponse = $bdd ->query('Tapez votre requête SQL ici');
?>
 Pour récupérer des informations de la base de
données, nous avons besoin de l’objet (bdd) qui
représente la connexion à la base
08:30
95
Récupération des données
 Exemple : Soit la table (jeux_video) suivante
appartenant à une base de données.
<?php
$reponse = $bdd ->query('SELECT * FROM jeux_video');
?>
$reponse contient maintenant la réponse de MySQL
08:30
96
Récupération des données
 Pour récupérer une entrée, on prend la réponse
de MySQL et on y exécute fetch(), ce qui nous
renvoie la première ligne
<?php
$donnees = $reponse->fetch();
?>

$donnees est un array qui contient champ par champ les valeurs
de la première entrée. Par exemple, si on s’intéresse au champ
console, on utilisera l'array $donnees['console']. Il faudra faire
une boucle pour parcourir chaque entrée une à une. A chaque fois
qu’on appelle $reponse->fetch(), on passe à l'entrée suivante. La
boucle est donc répétée autant de fois qu'il n'y a d'entrées dans
la table
08:30
97
<?php
Try {
// On se connecte à MySQL
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '',
$pdo_options);
// On récupère tout le contenu de la table jeux_video
$reponse = $bdd ->query('SELECT * FROM jeux_video');
// On affiche chaque entrée une à une
while ($donnees = $reponse->fetch()) {
?>
<p>
<strong>Jeu</strong> : <?php echo $donnees['nom']; ?><br />
Le possesseur de ce jeu est : <?php echo
$donnees['possesseur']; ?>, et il le vend à <?php echo
$donnees['prix']; ?> euros !<br />
Ce jeu fonctionne sur <?php echo $donnees['console']; ?> et on peut y jouer à <?php echo $donnees['nbre_joueurs_max']; ?> au maximum<br />
<?php echo $donnees['possesseur']; ?> a laissé ses commentaires sur <?php echo $donnees['nom']; ?> : <em><?php echo
$donnees['commentaires']; ?></em> </p>
<?php
}
$reponse->closeCursor(); // Termine le traitement de la requête
}
catch(Exception $e)
{
}
?>
die('Erreur : '.$e->getMessage()); // En cas d'erreur précédemment, on affiche un message et on arrête tout
08:30
98
Récupération des données
 Pour afficher seulement le contenu de quelques champs
(nom) : la requête SQL est la suivante :
<?php
Try {
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '',
$pdo_options);
$reponse = $bdd ->query('SELECT nom FROM jeux_video');
while ($donnees = $reponse->fetch()) {
echo $donnees['nom'] . '<br />';
}
$reponse->closeCursor();
}
catch(Exception $e) {
die('Erreur : '.$e->getMessage());
}?>
08:30
99
Les critères de sélection :
 Les critères de sélection utilisés peuvent etre :
 WHERE
 ORDER BY
 LIMIT
 La requête INSERT INTO permet d'ajouter une
entrée
 La requête UPDATE permet de modifier une
entrée.
 DELETE : supprimer des données
 Exemple voir fichier cours
08:30
100
Construire des requêtes en
fonction de variables
 Les requêtes peuvent être construites en
fonction de variables en utilisant _GET[‘variable']
 Exemple : $_GET['possesseur']
 On utilise des marqueurs "?
 La requête est exécutée en appelant execute et en lui
transmettant la liste des paramètres sous forme array
08:30
101
Construire des requêtes en
fonction de variables
 S'il y a plusieurs marqueurs, il faut indiquer les
paramètres dans le bon ordre :
 Le premier point d'interrogation de la requête sera
remplacé par le contenu de la variable
$_GET['possesseur']
 Le second point d'interrogation sera remplacé par le
contenu de $_GET['prix_max']
08:30
102
Exemple : Lister les jeux appartenant à une personne et
dont le prix ne dépasse pas une certaine somme :
08:30
103
Écrire les données dans la BDD
 Comment on peut ajouter et modifier des
données dans la base :
 Quelques requêtes SQL fondamentales :
 INSERT
 UPDATE
 DELETE
08:30
104
Insérer une donnée dans la base de
données

Pour ajouter une entrée, on utilise l’instruction INSERT INTO :
Remarque : Le premier champ (ID) est laissé vide car la
propriété est déclarée "auto_increment"
Le champ ID est automatique, il est donc inutile de le lister
08:30
105
Insérer une donnée dans la base de
données
 Le code PHP correspondant à l’ajout
08:30
106
Insertion de données variables grâce
à une requête préparée
on utilise des marqueurs nominatifs pour créer l'array sur
plusieurs lignes
08:30
107
Modification des données dans la BDD
 On utilise l‘instruction UPDATE pour modifier les
données dans la base de données
 Exemple 1: on modifie le prix=10 pour ID=51
 Exemple 2: on modifie le prix=10 pour nom=Battlefield
1942
08:30
108
Modification des données dans la BDD
 Le code PHP correspondant
 en PHP on fait appel à exec() pour effectuer des
modifications :
08:30
109
Modification avec une requête
préparée
 Le code PHP correspondant
08:30
110
DELETE : supprimer des données
 L’Instruction DELETE est utilisée pour supprimer
une entrée de la table
 Exemple
 WHERE : indispensable pour indiquer quelle(s)
entrée(s) doivent être supprimée(s).
 Si on oublie WHERE, toutes les entrées seront
supprimées, Cela équivaut à vider la table
08:30
111
Hébergement d’un site web
08:30
112
MySQL





Se connecter à MYSQL avec PDO
Le nom de l’hote
La base
Le login
Et le mot de passe
08:30
113
Merci de votre Attention
08:30
114
Téléchargement