Upload
mahdi-ben-alaya
View
3.756
Download
3
Embed Size (px)
DESCRIPTION
PARTIE 2 : Développez une application web dynamique et interactive : Comprendre les Sessions et les Cookies. Manipuler les formulaires et leurs éléments. Présenter Mysql, définir une BD, Comprendre le langage SQL et Apprendre à manipuler phpMyadmin. Faire la connexion avec la base de données et réaliser des opérations CRUD. Tout ceci accompagné avec des exemples et exercices.
Citation preview
1
Le langage PHP (partie II)Présentation réalisée par : Mahdi BEN ALAYAElève-ingénieur à l’ENSI & Secrétaire Général du club Junior ENSI Entreprise (2008)
Version : 22-11-2009
Remerciements
• Avant de commencer, je tiens à présenter mes sincères remerciements à tous ceux qui ont contribué au bon déroulement de cette formation.
• Je tiens à remercier particulièrement M. Marouen Ommezzine et M. Wassime Abbessi qui ont assuré les formations Web2.0 et PHP pour les années 2007 et 2008 au sein du club Junior ENSI Entreprise.
2
Plan• Les sessions• Les cookies• Les formulaires• Exercice « Somme »• Exercice « Commande »• Exercice « Login »• Présentation de MySQL• Les requêtes SQL• L’interface phpMyAdmin• Connexion à une base de données• TP « Mini chat »
3
Les Sessions
4
Les sessions
5
• Le support des sessions en PHP est un moyen de préserver des données, relatives au visiteur, entre plusieurs accès.
• Elles permettent de stocker des types de données simples (texte, nombres, …) mais pas de ressources comme des images ou BD.
Pourquoi utiliser les sessions ?
•Pour conserver, de page en page, les valeurs de certaines variables.
•Pour pister le parcours du visiteur.
•Pour effectuer des statistiques fines en termes de visiteurs réels et pas en hits (nombre d'appel d'un fichier).
6
Démarrer une session
7
<?php session_start(); ?>
Ce code permet de démarrer une session. Si un fichier existe sur le serveur pour cette session, les variables de sessions seront récupérées, sinon un nouveau fichier sera créé.
Aucun code HTML avant le démarrage d'une session !!
Cette fonction permet de créer un tableau $_SESSION qui sera remplie par les variable de session.
Créer une variable de session
8
<?php $_SESSION['variable'] = $valeur ; ?>
Les variables de sessions sont accessibles, une fois que la session est démarrée via un tableau super global $_SESSION
Nous créons ici une variable de session nommée variable qui vaut $valeur.
Utiliser la valeur d’une variable de session
9
<?php if(isset($_SESSION['ensi'])){ echo 'La variable "ensi" existe : ' . $_SESSION['ensi']; }?>
isset() permet de savoir si une variable de session existe ou non.
Supprimer une variable de session
10
<?php unset($_SESSION['variable']); echo 'La variable de session "variable" est détruite';?>
unset() permet de supprimer une variable de session.
Détruire toutes les variables de session
11
<?php session_unset(); ?>
Détruire une session
<?php session_destroy(); ?>
Les cookies
12
Qu'est-ce qu'un cookie ?
13
Un cookie est un fichier que le serveur envoie sur la machine de l'utilisateur. Il est souvent utilisé pour reconnaitre les utilisateurs.Pour explorer le répertoire cookies sous votre machine Windows ; faites Démarrer Exécuter et taper Cookies.
Créer un Cookie
14
<?php setcookie(name, value, expire, path, domain); ?>
La fonction setcookie() doit être placée avant tout code HTML, car le cache du navigateur doit être vide pour que cette fonction marche convenablement.
Créer un Cookie
15
<?php // génère le cookie $contenu = 'léon'; // le contenu de votre cookie setcookie("nom_cookie",$contenu, time()+36000); ?>
L'exemple ci-dessous génère un cookie appelé "nom_cookie" , avec pour contenu "Léon" et pendant une période de 10 heures.
Retrouver la valeur d'un cookie
16
<?php if (isset($_COOKIE["nom_cookie"]))
echo 'Le cookie existe ' . $_COOKIE["nom_cookie"] ;else echo 'Le cookie n\'existe pas';?>
L'exemple ci-dessous test l'existence d'un cookie appelé "nom_cookie" et affiche si le cookie existe ou n'existe pas.
Session VS Cookie
17
La différence entre les sessions et les cookies est que les cookies sont stockés sur le poste du visiteur tandis que les sessions sont dans des fichiers présents sur le serveur.
Les Formulaires
18
Pourquoi un formulaire ?
•Un formulaire permet de saisir des données et échanger des informations entres les pages web et la base de données.
•Ce sont des éléments interactifs permettant de dialoguer avec l’internaute.
19
La balise FORM
20
•La balise FORM permet de regrouper plusieurs éléments de formulaire (boutons, champs de saisie,...) et possède les attributs ACTION et METHOD.
<FORM ACTION="valeur" METHOD ="valeur" >
… </FORM>
La balise FORM
• La valeur POST : correspond à un envoi de données stockées dans le corps de la requête.
• La valeur GET : correspond à un envoi des données codées dans l'URL, et séparées de l'adresse du script par un «?».Exemple: http://www.facebook.com/index.php?id=121
1 – L’attribut : METHOD
• Il indique la méthode avec laquelle seront envoyées les données.
La balise FORM
• ACTION indique l'adresse de réception, c’est-à-dire la page qui va recevoir les données.
22
2 – L’attribut : ACTION
<form action="page.php" method="post" >
…</form>
Les balises du formulaires
• INPUT : Champs de saisie de texte et différents types de boutons .
• SELECT : Listes menus déroulants et ascenseurs.
• TEXTAREA : Zone de saisie de texte libre.
23
La balise INPUT
24
Type Syntaxe Exemple
sans <input name="ident" />
<input name="ident" value="Par défaut" />
submit <input type="submit" value="Envoi" />
checkbo
x
<input type="checkbox" name="pfm" value="linux" checked />
Linux<BR/>
<input type="checkbox" name="pfm" value="dos" /> Dos<BR/>
<input type="checkbox" name="pfm" value="win" /> Windows
25
Type Syntaxe Exemple
radio <input type="radio" name="media" value="cd" checked/> CD-
ROM<BR/>
<input type="radio" name="media" value="dk" /> Disquette
password <input type="password" name="pass" />
reset <input type="reset" value="Efface" />
file <input type="file" name="file" />
La balise INPUT
La balise SELECT
26
Syntaxe Exemple
<select name="menu"><option> Banane</option><option> Orange</option><option > Citron</option><option selected> Pomme </option><option> Pêche</option><option> Poire</option></select >
<select name="menu" size=4>...</select >
<select name="menu" size=4 multiple>...</select >
La balise TEXTAREA
27
<textarea name="comm" rows=10 cols=40>
Tapez vos commentaires ici</textarea>
Manipulation des formulaires
• Dans la page de réception, les informations entrées dans un formulaire sont récupérées sous forme d’une variable de type ARRAY dont le nom dépend de la méthode d'envoi du formulaire POST ou GET.
28
• $_POST['name'] Si method=POST
• $_GET['name'] Si method=GET
Manipulation des formulaires• Les données envoyées sont indexées dans le
tableau $_POST (resp $_GET) par rapport a la valeur de leurs attributs name.
29
<form action= 'acceuil.php' method='post' >
<input name= "prenom" type="text" /><input type="submit" value="Envoi" /></form>
<?phpecho Bonjour . " " . $_POST['prenom'] ;?>
Hamma
Bonjour Hamma
accueil.php
Login.php
Exercice « Somme »
30
Exercice « Somme »
31
•Créez une page web qui permet de saisir deux entier et qui affiche la somme dans une nouvelle page.
AB
C
formulaire.php somme.php
A + B = C
Solution de « Somme »
32
<form action= 'somme.php' method= 'GET' >
A:<input name="a" type="text" />B:<input name="b" type="text" /><input type="submit"
value="Envoyer" /></form>
<?php$somme = $_GET['a'] + $_GET['b'] ; echo "la somme est " , $somme ;
?>
formulaire.php
somme.php
$_GET(a => valeurA, b => valeurB)
Exercice « Commande »
33
Exercice « Commande »
34
•Créez une page web qui permet de sélectionner un produit à partir d’une liste, choisir la quantité et qui affiche la commande dans une nouvelle page.
Vous avez commandé X
Eléments
choix.php commande.php
Solution de « Commande »
35
<body> <h4>Faite votre commande</h4> <form action="commande.php" method="post">
Elément:<select name="item">
<option>Table</option> <option>Chaise</option> <option>Armoire</option>
</select><br/> Quantité: <input name="quantity" type="text" /> <br/><input type="submit" value="Envoyer "/>
</form> </body>
choix.php
Solution de « Commande »
36
<?php $quantity = $_POST['quantity'] ; $item = $_POST['item'] ;
echo "Vous avez commandé ". $quantity . " " . $item ;?>
Commande.php
Exercice « Login »
37
Password
incorrecte
Exercice « Login »
38
• Créez une page web qui permet de saisir un password. Si password = admin alors on affiche une page d’accueil sinon on renvoi vers une page d’erreur.
Password :
BonjourAdmin
login.php
accueil.php
Password =
admin
Password != adminerreur.php
Password
incorrecte
Solution de « Login »
39
BonjourAdmin
accueil.php
Password =
admin
Password != admin
erreur.php
Password :
login.php
Script deVérification
et de redirection
verif.php
Password
incorrecte
Solution de « Login »
40
BonjourAdmin
accueil.php
erreur.php
<form action= " verif.php" method="POST" > Pass:<input type="password" name="pass" /><br/> <input type="submit" value="Envoyer " /> </form>
login.php<?php if ($_POST['pass'] == "admin") { header('Location: accueil.php'); }else{ header('Location: erreur.php'); }?> verif.php
Présentation de MySQL
41
Présentation de MySQL
42
• Mysql est un serveur de Gestion de Base de Données (SGBD) gratuit le plus populaire au monde.
• C’est un ensemble de logiciels qui manipulent le contenu des bases de données. Il sert à effectuer les opérations ordinaires telles que rechercher, ajouter ou supprimer des enregistrements (CRUD).
Définition
43
•Une Base de Données (BD) est un stock d'informations organisé et structuré de manière à pouvoir manipulé facilement et efficacement de très grandes quantités d'informations.
Schéma d’une BD
44
Base de données
TableTable
Table
Id Nom Prenom
1 Ben Saleh Saleh
2 Ben Slim Slim
3 Ben Said Said
45
Les requêtes SQL
•Création d’une table
CREATE TABLE NomTable ( NomColonne1 Type_de_données, NomColonne2 Type_de_données, NomColonneN Type_de_données
)
46
Les requêtes SQL
• SélectionSELECT Champ1,ChampN FROM NomTable WHERE
Champ3='val';
• InsertionINSERT INTO NomTable (Champ1, ChampN) VALUES
(Val1,ValN);
• ModificationUPDATE NomTable SET Champ1 = 'Val1', ChampN = 'ValN' ;
• SuppressionDELETE FROM NomTable WHERE conditions ;
L’interface PHP MyAdmin
47
Présentation de phpMyAdmin
48
•phpMyAdmin est un ensemble de pages PHP. Ce n'est pas un programme, mais des pages PHP toutes prêtes dont on se sert pour manipuler facilement notre base et gagner du temps.
L’interface phpMyAdmin
49
L’interface phpMyAdmin
50
L’interface phpMyAdmin
51
L’interface phpMyAdmin
52
Connexion à une BD
53
54
Bd
Script.php
(Requête SQL)
1
Connexion à une BD
Serveur BD
Table
IP ServerUser Password
Nom BD+
Privilège
Nom Table
Nom champ
55
Fonctions PHP pour la connexionIP ServerUser Password
Nom BD+
Privilège
Nom Table
Nom champ
mysql_connect("IP Server", "User", "Password");
mysql_select_db("Nom BD");
$resultat = mysql_query("Requête SQL");
Fermer la connexion
mysql_close();
Gestion des exceptions Die("msg d’erreur");
56
La fonction mysql_query()
$resultat = mysql_query("Requête SQL");
• mysql_query() est une fonction PHP qui permet d’envoyer des requêtes SQL à un serveur MySQL.
• Pour les requêtes de type SELECT , mysql_Query() retournera une ressource en cas de succès ou FALSE en cas d'erreur.
• Pour les autres types de requêtes INSERT, UPDATE , DELETE , mysql_query() retourne TRUE en cas de succès ou FALSE en cas d'erreur.
57
La fonction mysql_query()• La ressource $resultat retournée contient un
tableau d’enregistrements c’est-à-dire une matrice.
$resultat = mysql_query(“SELECT nom, prenom FROM etudiant");
$resultat
Ben Ahmed Ahmed
Ben Saleh Saleh
Ben Slim Slim
Ben Said Said
58
La fonction mysql_fetch_array()
•Pour extraire les enregistrements un par un on utilise la fonction mysql_fetch_array().
$row = mysql_fetch_array($resultat ) ;
Ben Ahmed Ahmed
Ben Saleh Saleh
Ben Slim Slim
Ben Said Said
$resultat
$row nom prenom
59
Extraction des données
$resultat = mysql_query("SELECT nom, prenom FROM etudiant WHERE age > 20) ;
$row = mysql_fetch_array($resultat ) ;while ($row!=NULL ){
echo $row["nom"] . " " .$row["prenom"]; $row= mysql_fetch_array($result);
}
60
Fonctions utiles
• isset() : teste l’existence d’une variable ( savoir si une variable a été définie ou non).
• is_empty() or empty() : indique qu’un champ d’un formulaire a été rempli ou non.
TP « Mini Chat »
61
62
TP « Mini Chat »
•Réalisez un Mini Chat, vous allez commencer par la conception de la base de données puis créer les pages statiques ensuite faire le script php nécessaire.
63
Solution du « Mini Chat »
1 - Le formulaire
2 - Insertion msg
3 - Affichage des msg
minichat.php bdChat
Commentaire
Id pseudo msg
64
BD & Tables
65
Le Formulaire
66
Insertion de msg dans la BD
67
Affichage des messages
Merci pour votre attention
68