68
1 II) Présentation réalisée par : Mahdi BEN ALAYA Elève-ingénieur à l’ENSI & Secrétaire Général du club Junior ENSI Entreprise (2008) Version : 22-11-2009

PHP (Partie II) Par Mahdi Ben Alaya

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

Page 1: PHP (Partie II) Par Mahdi Ben Alaya

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

Page 2: PHP (Partie II) Par Mahdi Ben Alaya

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

Page 3: PHP (Partie II) Par Mahdi Ben Alaya

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

Page 4: PHP (Partie II) Par Mahdi Ben Alaya

Les Sessions

4

Page 5: PHP (Partie II) Par Mahdi Ben Alaya

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.

Page 6: PHP (Partie II) Par Mahdi Ben Alaya

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

Page 7: PHP (Partie II) Par Mahdi Ben Alaya

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.

Page 8: PHP (Partie II) Par Mahdi Ben Alaya

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.

Page 9: PHP (Partie II) Par Mahdi Ben Alaya

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.

Page 10: PHP (Partie II) Par Mahdi Ben Alaya

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.

Page 11: PHP (Partie II) Par Mahdi Ben Alaya

Détruire toutes les variables de session

11

<?php session_unset(); ?>

Détruire une session

<?php session_destroy(); ?>

Page 12: PHP (Partie II) Par Mahdi Ben Alaya

Les cookies

12

Page 13: PHP (Partie II) Par Mahdi Ben Alaya

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.

Page 14: PHP (Partie II) Par Mahdi Ben Alaya

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.

Page 15: PHP (Partie II) Par Mahdi Ben Alaya

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.

Page 16: PHP (Partie II) Par Mahdi Ben Alaya

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.

Page 17: PHP (Partie II) Par Mahdi Ben Alaya

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.

Page 18: PHP (Partie II) Par Mahdi Ben Alaya

Les Formulaires

18

Page 19: PHP (Partie II) Par Mahdi Ben Alaya

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

Page 20: PHP (Partie II) Par Mahdi Ben Alaya

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>

Page 21: PHP (Partie II) Par Mahdi Ben Alaya

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.

Page 22: PHP (Partie II) Par Mahdi Ben Alaya

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>

Page 23: PHP (Partie II) Par Mahdi Ben Alaya

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

Page 24: PHP (Partie II) Par Mahdi Ben Alaya

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

Page 25: PHP (Partie II) Par Mahdi Ben Alaya

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

Page 26: PHP (Partie II) Par Mahdi Ben Alaya

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 >

Page 27: PHP (Partie II) Par Mahdi Ben Alaya

La balise TEXTAREA

27

<textarea name="comm" rows=10 cols=40>

Tapez vos commentaires ici</textarea>

Page 28: PHP (Partie II) Par Mahdi Ben Alaya

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

Page 29: PHP (Partie II) Par Mahdi Ben Alaya

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

Page 30: PHP (Partie II) Par Mahdi Ben Alaya

Exercice « Somme »

30

Page 31: PHP (Partie II) Par Mahdi Ben Alaya

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

Page 32: PHP (Partie II) Par Mahdi Ben Alaya

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)

Page 33: PHP (Partie II) Par Mahdi Ben Alaya

Exercice « Commande »

33

Page 34: PHP (Partie II) Par Mahdi Ben Alaya

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

Page 35: PHP (Partie II) Par Mahdi Ben Alaya

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

Page 36: PHP (Partie II) Par Mahdi Ben Alaya

Solution de « Commande »

36

<?php $quantity = $_POST['quantity'] ; $item = $_POST['item'] ;

echo "Vous avez commandé ". $quantity . " " . $item ;?>

Commande.php

Page 37: PHP (Partie II) Par Mahdi Ben Alaya

Exercice « Login »

37

Page 38: PHP (Partie II) Par Mahdi Ben Alaya

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

Page 39: PHP (Partie II) Par Mahdi Ben Alaya

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

Page 40: PHP (Partie II) Par Mahdi Ben Alaya

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

Page 41: PHP (Partie II) Par Mahdi Ben Alaya

Présentation de MySQL

41

Page 42: PHP (Partie II) Par Mahdi Ben Alaya

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).

Page 43: PHP (Partie II) Par Mahdi Ben Alaya

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.

Page 44: PHP (Partie II) Par Mahdi Ben Alaya

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

Page 45: PHP (Partie II) Par Mahdi Ben Alaya

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

)

Page 46: PHP (Partie II) Par Mahdi Ben Alaya

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 ;

Page 47: PHP (Partie II) Par Mahdi Ben Alaya

L’interface PHP MyAdmin

47

Page 48: PHP (Partie II) Par Mahdi Ben Alaya

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.

Page 49: PHP (Partie II) Par Mahdi Ben Alaya

L’interface phpMyAdmin

49

Page 50: PHP (Partie II) Par Mahdi Ben Alaya

L’interface phpMyAdmin

50

Page 51: PHP (Partie II) Par Mahdi Ben Alaya

L’interface phpMyAdmin

51

Page 52: PHP (Partie II) Par Mahdi Ben Alaya

L’interface phpMyAdmin

52

Page 53: PHP (Partie II) Par Mahdi Ben Alaya

Connexion à une BD

53

Page 54: PHP (Partie II) Par Mahdi Ben Alaya

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

Page 55: PHP (Partie II) Par Mahdi Ben Alaya

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");

Page 56: PHP (Partie II) Par Mahdi Ben Alaya

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.

Page 57: PHP (Partie II) Par Mahdi Ben Alaya

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

Page 58: PHP (Partie II) Par Mahdi Ben Alaya

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

Page 59: PHP (Partie II) Par Mahdi Ben Alaya

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);

}

Page 60: PHP (Partie II) Par Mahdi Ben Alaya

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.

Page 61: PHP (Partie II) Par Mahdi Ben Alaya

TP « Mini Chat » 

61

Page 62: PHP (Partie II) Par Mahdi Ben Alaya

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.

Page 63: PHP (Partie II) Par Mahdi Ben Alaya

63

Solution du « Mini Chat » 

1 - Le formulaire

2 - Insertion msg

3 - Affichage des msg

minichat.php bdChat

Commentaire

Id pseudo msg

Page 64: PHP (Partie II) Par Mahdi Ben Alaya

64

BD & Tables 

Page 65: PHP (Partie II) Par Mahdi Ben Alaya

65

Le Formulaire 

Page 66: PHP (Partie II) Par Mahdi Ben Alaya

66

Insertion de msg dans la BD 

Page 67: PHP (Partie II) Par Mahdi Ben Alaya

67

Affichage des messages 

Page 68: PHP (Partie II) Par Mahdi Ben Alaya

Merci pour votre attention

68