1Lelangage 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
RemerciementsAvant 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. MarouenOmmezzine et M. WassimeAbbessi qui ont assuré les formations Web2.0 et PHP pour les années 2007 et 2008 au sein du club Junior ENSI Entreprise.2
PlanLes sessionsLes cookiesLes formulairesExercice « Somme »Exercice « Commande »Exercice « Login »Présentation de MySQLLes requêtes SQLL’interface phpMyAdminConnexion à une base de donnéesTP « Mini chat »3
Les Sessions4
Les sessions5 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 session7<?phpsession_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éé.Cette fonction permet de créer un tableau $_SESSION qui sera remplie par les variable de session.Aucuncode HTML avant le démarrage d'une session !!
Créer une variable de session8<?php$_SESSION['variable']=$valeur ;?>Nous créons ici une variable de session nommée variable qui vaut $valeur.Les variables de sessions sont accessibles, une fois que la session est démarrée via un tableau super global $_SESSION
Utiliser la valeur d’une variable de session9<?phpif(isset($_SESSION['ensi'])){echo'La variable "ensi" existe : ' . $_SESSION['ensi'];    }?>isset() permet de savoir si une variable de sessionexiste ou non.
Supprimer une variable de session10<?phpunset($_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 session11<?phpsession_unset(); ?>Détruire une session<?phpsession_destroy(); ?>
Les cookies12
Qu'est-ce qu'un cookie ?13Un cookie est un fichier que le serveur envoiesur 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émarrerExécuter et taper Cookies.
Créer un Cookie14<?phpsetcookie(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 Cookie15L'exemple ci-dessous génère un cookie appelé "nom_cookie"   , avec pour contenu "Léon" et pendant une période de 10 heures.<?php// génère le cookie $contenu = 'léon'; // le contenu de votre cookie setcookie("nom_cookie",$contenu, time()+36000); ?>
Retrouver la valeur d'un cookie16L'exemple ci-dessous test l'existence d'un cookie appelé "nom_cookie" et affiche si le cookie existe ou n'existe pas.<?phpif (isset($_COOKIE["nom_cookie"]))echo'Le cookie existe ' . $_COOKIE["nom_cookie"];elseecho'Le cookie n\'existe pas';?>
Session VS Cookie17La 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 Formulaires18
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 FORM20<FORM ACTION="valeur"  METHOD ="valeur">	… </FORM>La balise FORM permet de regrouper plusieurs éléments de formulaire (boutons, champs de saisie,...) et possède les attributs ACTIONet METHOD.La balise FORMLa 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=1211 – L’attribut : METHODIl indique la méthode avec laquelle seront envoyées les données. La balise FORMACTION indique l'adresse de réception, c’est-à-dire la page qui va recevoir les données.222 – L’attribut : ACTION<formaction="page.php"method="post">		…</form>
Les balises du formulairesINPUT: 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 INPUT24
25La balise INPUT
La balise SELECT26
La balise TEXTAREA27<textareaname="comm" rows=10 cols=40>Tapez vos commentaires ici</textarea>
Manipulation des formulairesDans 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=GETManipulation des formulairesLes données envoyées sont indexées dans le tableau $_POST (resp$_GET) par rapport a la valeur de leurs attributs name.29<formaction= 'acceuil.php'method='post' ><input name= "prenom" type="text" /><input type="submit" value="Envoi" /></form> HammaLogin.php<?phpecho Bonjour . " " . $_POST['prenom'] ;?>Bonjour Hammaaccueil.php
Exercice « Somme »30
Exercice « Somme »31Créez une page web qui permet de saisir deux entier et qui affiche la somme dans une nouvelle page.ABCA + B = Cformulaire.phpsomme.php
Solution de « Somme »<formaction= 'somme.php'method= 'GET' >	A:<input name="a" type="text"/>B:<input name="b"  type="text" />	<input type="submit" value="Envoyer"/></form> formulaire.php$_GET(a => valeurA, b => valeurB)<?php$somme=$_GET['a']+$_GET['b'] ;echo"la somme est " ,$somme ;?>somme.php32
Exercice « Commande »33
Exercice « Commande »34Cré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émentschoix.phpcommande.php
Solution de « Commande »35<body> <h4>Faite votre commande</h4> <formaction="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
Exercice « Login »38Cré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.BonjourAdminaccueil.phpPassword = adminPassword :login.phpPassword incorrectePassword != adminerreur.php
Solution de « Login »39accueil.phpBonjourAdminPassword :Script deVérification et de redirectionPassword = adminPassword incorrectePassword != adminlogin.phpverif.phperreur.php
Solution de « Login »40<formaction=" verif.php" method="POST">Pass:<input type="password" name="pass"  /><br/>  <input type="submit" value="Envoyer "/></form> <?php      if ($_POST['pass']== "admin"){header('Location: accueil.php');      }else{               header('Location: erreur.php');      }?>BonjourAdminlogin.phpverif.phpaccueil.phpPassword incorrecteerreur.php
Présentation de MySQL41
Présentation de MySQL42Mysql est un serveurde 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éfinition43Une 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 BD44Base de donnéesTableTableTable
Les requêtes SQLCréation d’une tableCREATE TABLE NomTable(	NomColonne1 	Type_de_données,	NomColonne2 	 Type_de_données,NomColonneNType_de_données)45
Les requêtes SQLSélectionSELECT Champ1,ChampNFROMNomTableWHERE Champ3='val';InsertionINSERT INTO NomTable(Champ1,ChampN)VALUES (Val1,ValN);ModificationUPDATENomTableSET Champ1 = 'Val1',ChampN = 'ValN' ;SuppressionDELETE FROM NomTableWHERE conditions ;46
L’interface PHP MyAdmin47
Présentation de phpMyAdmin48phpMyAdmin 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 phpMyAdmin49
L’interface phpMyAdmin50
L’interface phpMyAdmin51
L’interface phpMyAdmin52
Connexion à une BD53
Connexion à une BD1BdScript.php(Requête SQL)TableServeur BDIP ServerUser PasswordNom BD+PrivilègeNom TableNom champ54
Fonctions PHP pour la connexionIP ServerUser Passwordmysql_connect("IP Server","User","Password");Nom BD+Privilègemysql_select_db("Nom BD");Nom Table$resultat  = mysql_query("Requête SQL");Nom champGestion des exceptionsDie("msgd’erreur");Fermer la connexionmysql_close();55
La fonctionmysql_query()$resultat = mysql_query("Requête SQL");mysql_query() estunefonction PHP qui permetd’envoyer des requêtes SQL à un serveurMySQL.
Pour les requêtes de type SELECT , mysql_Query() retournera une ressourceen 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.56
La fonction mysql_query()La ressource $resultatretournée contient un tableau d’enregistrements c’est-à-dire une  matrice. $resultat = mysql_query(“SELECT nom, prenom FROM etudiant");$resultat57
La fonction mysql_fetch_array()Pour extraire les enregistrements un par un on utilise la fonction mysql_fetch_array().$row= mysql_fetch_array($resultat) ;nomprenom$row $resultat58
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);}59
Fonctions utilesisset() : testel’existenced’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.60
TP « Mini Chat »  61
TP « Mini Chat » Réalisez un Mini Chat, vousallez commencer par la conception de la base de donnéespuiscréer les pages statiquesensuite faire le script phpnécessaire.62
Solution du « Mini Chat » 1 - Le formulaire2 - Insertion msg3 - Affichage des msgCommentaireminichat.phpbdChat63
BD & Tables 64
Le Formulaire 65
Insertion de msg dans la BD 66
Affichage des messages 67

PHP (Partie II) Par Mahdi Ben Alaya

  • 1.
    1Lelangage PHP (partieII)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
  • 2.
    RemerciementsAvant 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. MarouenOmmezzine et M. WassimeAbbessi qui ont assuré les formations Web2.0 et PHP pour les années 2007 et 2008 au sein du club Junior ENSI Entreprise.2
  • 3.
    PlanLes sessionsLes cookiesLesformulairesExercice « Somme »Exercice « Commande »Exercice « Login »Présentation de MySQLLes requêtes SQLL’interface phpMyAdminConnexion à une base de donnéesTP « Mini chat »3
  • 4.
  • 5.
    Les sessions5 Lesupport des sessions en PHP est un moyen de préserver des données, relatives au visiteur, entre plusieurs accès.
  • 6.
    Elles permettent destocker 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
  • 7.
    Démarrer une session7<?phpsession_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éé.Cette fonction permet de créer un tableau $_SESSION qui sera remplie par les variable de session.Aucuncode HTML avant le démarrage d'une session !!
  • 8.
    Créer une variablede session8<?php$_SESSION['variable']=$valeur ;?>Nous créons ici une variable de session nommée variable qui vaut $valeur.Les variables de sessions sont accessibles, une fois que la session est démarrée via un tableau super global $_SESSION
  • 9.
    Utiliser la valeurd’une variable de session9<?phpif(isset($_SESSION['ensi'])){echo'La variable "ensi" existe : ' . $_SESSION['ensi']; }?>isset() permet de savoir si une variable de sessionexiste ou non.
  • 10.
    Supprimer une variablede session10<?phpunset($_SESSION['variable']);echo'La variable de session "variable" est détruite';?>unset() permet de supprimer une variable de session.
  • 11.
    Détruire toutes lesvariables de session11<?phpsession_unset(); ?>Détruire une session<?phpsession_destroy(); ?>
  • 12.
  • 13.
    Qu'est-ce qu'un cookie?13Un cookie est un fichier que le serveur envoiesur 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émarrerExécuter et taper Cookies.
  • 14.
    Créer un Cookie14<?phpsetcookie(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.
  • 15.
    Créer un Cookie15L'exempleci-dessous génère un cookie appelé "nom_cookie"   , avec pour contenu "Léon" et pendant une période de 10 heures.<?php// génère le cookie $contenu = 'léon'; // le contenu de votre cookie setcookie("nom_cookie",$contenu, time()+36000); ?>
  • 16.
    Retrouver la valeurd'un cookie16L'exemple ci-dessous test l'existence d'un cookie appelé "nom_cookie" et affiche si le cookie existe ou n'existe pas.<?phpif (isset($_COOKIE["nom_cookie"]))echo'Le cookie existe ' . $_COOKIE["nom_cookie"];elseecho'Le cookie n\'existe pas';?>
  • 17.
    Session VS Cookie17Ladiffé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.
  • 18.
  • 19.
    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
  • 20.
    La balise FORM20<FORMACTION="valeur" METHOD ="valeur"> … </FORM>La balise FORM permet de regrouper plusieurs éléments de formulaire (boutons, champs de saisie,...) et possède les attributs ACTIONet METHOD.La balise FORMLa 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=1211 – L’attribut : METHODIl indique la méthode avec laquelle seront envoyées les données. La balise FORMACTION indique l'adresse de réception, c’est-à-dire la page qui va recevoir les données.222 – L’attribut : ACTION<formaction="page.php"method="post"> …</form>
  • 21.
    Les balises duformulairesINPUT: Champs de saisie de texte et différents types de boutons .
  • 22.
    SELECT : Listesmenus déroulants et ascenseurs.
  • 23.
    TEXTAREA : Zonede saisie de texte libre. 23
  • 24.
  • 25.
  • 26.
  • 27.
    La balise TEXTAREA27<textareaname="comm"rows=10 cols=40>Tapez vos commentaires ici</textarea>
  • 28.
    Manipulation des formulairesDansla 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
  • 29.
    $_GET['name'] Si method=GETManipulationdes formulairesLes données envoyées sont indexées dans le tableau $_POST (resp$_GET) par rapport a la valeur de leurs attributs name.29<formaction= 'acceuil.php'method='post' ><input name= "prenom" type="text" /><input type="submit" value="Envoi" /></form> HammaLogin.php<?phpecho Bonjour . " " . $_POST['prenom'] ;?>Bonjour Hammaaccueil.php
  • 30.
  • 31.
    Exercice « Somme »31Créez unepage web qui permet de saisir deux entier et qui affiche la somme dans une nouvelle page.ABCA + B = Cformulaire.phpsomme.php
  • 32.
    Solution de « Somme »<formaction='somme.php'method= 'GET' > A:<input name="a" type="text"/>B:<input name="b" type="text" /> <input type="submit" value="Envoyer"/></form> formulaire.php$_GET(a => valeurA, b => valeurB)<?php$somme=$_GET['a']+$_GET['b'] ;echo"la somme est " ,$somme ;?>somme.php32
  • 33.
  • 34.
    Exercice « Commande »34Créez unepage 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émentschoix.phpcommande.php
  • 35.
    Solution de « Commande »35<body><h4>Faite votre commande</h4> <formaction="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
  • 36.
    Solution de « Commande »36<?php$quantity=$_POST['quantity'];$item =$_POST['item'] ;echo"Vous avez commandé ". $quantity." ".$item ;?>Commande.php
  • 37.
  • 38.
    Exercice « Login »38Créez unepage 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.BonjourAdminaccueil.phpPassword = adminPassword :login.phpPassword incorrectePassword != adminerreur.php
  • 39.
    Solution de « Login »39accueil.phpBonjourAdminPassword:Script deVérification et de redirectionPassword = adminPassword incorrectePassword != adminlogin.phpverif.phperreur.php
  • 40.
    Solution de « Login »40<formaction="verif.php" method="POST">Pass:<input type="password" name="pass" /><br/> <input type="submit" value="Envoyer "/></form> <?php if ($_POST['pass']== "admin"){header('Location: accueil.php'); }else{ header('Location: erreur.php'); }?>BonjourAdminlogin.phpverif.phpaccueil.phpPassword incorrecteerreur.php
  • 41.
  • 42.
    Présentation de MySQL42Mysqlest un serveurde Gestion de Base de Données (SGBD) gratuit le plus populaire au monde.
  • 43.
    C’est unensemble 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éfinition43Une 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 BD44Base de donnéesTableTableTable
  • 44.
    Les requêtes SQLCréationd’une tableCREATE TABLE NomTable( NomColonne1 Type_de_données, NomColonne2 Type_de_données,NomColonneNType_de_données)45
  • 45.
    Les requêtes SQLSélectionSELECTChamp1,ChampNFROMNomTableWHERE Champ3='val';InsertionINSERT INTO NomTable(Champ1,ChampN)VALUES (Val1,ValN);ModificationUPDATENomTableSET Champ1 = 'Val1',ChampN = 'ValN' ;SuppressionDELETE FROM NomTableWHERE conditions ;46
  • 46.
  • 47.
    Présentation de phpMyAdmin48phpMyAdminest 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 phpMyAdmin49
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
    Connexion à uneBD1BdScript.php(Requête SQL)TableServeur BDIP ServerUser PasswordNom BD+PrivilègeNom TableNom champ54
  • 53.
    Fonctions PHP pourla connexionIP ServerUser Passwordmysql_connect("IP Server","User","Password");Nom BD+Privilègemysql_select_db("Nom BD");Nom Table$resultat = mysql_query("Requête SQL");Nom champGestion des exceptionsDie("msgd’erreur");Fermer la connexionmysql_close();55
  • 54.
    La fonctionmysql_query()$resultat =mysql_query("Requête SQL");mysql_query() estunefonction PHP qui permetd’envoyer des requêtes SQL à un serveurMySQL.
  • 55.
    Pour les requêtesde type SELECT , mysql_Query() retournera une ressourceen cas de succès ou FALSE en cas d'erreur.
  • 56.
    Pour les autrestypes de requêtes INSERT, UPDATE , DELETE , mysql_query() retourne TRUE en cas de succès ou FALSE en cas d'erreur.56
  • 57.
    La fonction mysql_query()Laressource $resultatretournée contient un tableau d’enregistrements c’est-à-dire une matrice. $resultat = mysql_query(“SELECT nom, prenom FROM etudiant");$resultat57
  • 58.
    La fonction mysql_fetch_array()Pourextraire les enregistrements un par un on utilise la fonction mysql_fetch_array().$row= mysql_fetch_array($resultat) ;nomprenom$row $resultat58
  • 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);}59
  • 60.
    Fonctions utilesisset() :testel’existenced’une variable ( savoir si une variable a été définie ou non).
  • 61.
    is_empty() or empty(): indique qu’un champ d’un formulaire a été rempli ou non.60
  • 62.
  • 63.
    TP « Mini Chat » Réalisezun Mini Chat, vousallez commencer par la conception de la base de donnéespuiscréer les pages statiquesensuite faire le script phpnécessaire.62
  • 64.
    Solution du « MiniChat » 1 - Le formulaire2 - Insertion msg3 - Affichage des msgCommentaireminichat.phpbdChat63
  • 65.
  • 66.
  • 67.
    Insertion de msgdans la BD 66
  • 68.