107
Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Embed Size (px)

Citation preview

Page 1: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Initiation au PHP

A.S: 2006 – 2007Présenté par : Khalifa Anis

Juillet 2007Crefoc de Sousse

Page 2: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

SommaireIntroductionComparatif PHP / JavaScriptDomaines d’utilisation de PHPInstallation d’ EasyPHPDécouvrir PHPLes structures de donnéesLes structures de contrôleLes fichiers et les répertoiresCommunication entre page Web et un script PHPPHP et MySQLQuelques fonctions PHP (voir Annexes)

Page 3: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Introduction

À sa création, en 1994, PHP signifiait Personal Home Page. Maintenant il traduit une désignation plus générale : PHP Hypertext Preprocessor.

Spécialement conçu pour le développement d'application Web. Il peut être intégré facilement au HTML.

PHP est un langage de scripts et non un langage de programmation, car il est conçu pour faire quelque chose à la suite un événement ou lorsqu'un utilisateur soumet un formulaire à un serveur Web.

Page 4: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

PHP, qui s'intègre dans vos pages HTML, permet entre autres de rendre automatiques des tâches répétitives, notamment grâce à la communication avec une base de données (utilisation la plus courante de PHP).

Comment se déroule une requête HTTP : Que se passe-t-il lorsque vous tapez une adresse dans votre navigateur, où interviennent PHP et MySQL (la base de données), et les conséquences que cela implique ?

Voici, en simplifiant, ce qu'il se passe lorsque vous consultez une page html dite statique :

Page 5: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Votre navigateur envoie l'adresse URL (Uniform Ressource Locator) que vous avez tapée

Le serveur Web est un "ordinateur" présent sur l'Internet et qui héberge la page que vous demandez. Sur ce serveur on trouve

Apache, logiciel apte à traiter les requêtes HTTP que vous envoyez lorsque vous demandez une page web. Apache va donc chercher le fichier demandé dans son arborescence et renvoie à votre navigateur la page HTML

Votre navigateur interprète les différents langages se trouvant dans ce fichier (HTML, JavaScript, CSS, etc ...) et affiche la page.

Page 6: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Que se passe lorsque votre page HTML contient du code PHP ?

Votre navigateur envoie l'adresse que vous avez tapée

Le serveur Web cherche dans son arborescence si le fichier existe, et si celui-ci porte une extension reconnue comme une application PHP (.PHP, .PHP3, .PHP4 par exemple). Si c'est le cas, le serveur Web transmet ce fichier à PHP.

PHP va analyser et exécuter le code PHP qui se trouve entre les balises <?PHP et ?>. Si ce code contient des requêtes vers une base de données MySQL, PHP envoie la requête SQL. La base de données renvoie les informations voulues au script qui peut les exploiter (pour les afficher par exemple).

Page 7: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

PHP continue à analyser la page, puis retourne le fichier dépourvu du code PHP au serveur Web.

Le serveur Web renvoie donc un fichier ne contenant plus de PHP, donc seulement du HTML au navigateur qui l'interprète et l'affiche.

Vous remarquez donc que PHP s'exécute côté serveur. Il n'y a plus aucune trace du code PHP lorsque vous regardez le code source de la page dans votre navigateur PHP.

Page 8: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

La base de données la plus couramment utilisée avec PHP est sans aucun doute MySQL.

A quoi sert une base de données ?

Lorsque vous allez produire des informations dans votre script PHP, vous devez les stocker quelque part. Si ce n'est pas le cas, elles seront alors perdues lorsque le serveur renverra la page html au client (votre navigateur).

Pour les stocker, il existe deux solutions: les enregistrer dans un fichier texte sur le serveur (quelque part dans l'arborescence de votre hébergement), ou les enregistrer dans une base de données.

La sauvegarde dans un fichier texte n'est pas l'idéal, notamment lorsque vous souhaitez chercher, modifier ou supprimer une partie de l'information que vous stockez. Les bases de données ont été conçues dans cette optique là.

Page 9: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Les Bases de données suivantes sont toutes supportées par PHP :

•Adabas D•dBase•Empress•File Pro (lecture seule)•Hyperwave•IBM DB2•Informix•Ingres•InterBase•FrontBase•mSQL

•Direct MS-SQL•MySQL•ODBC•Oracle•Ovrimos•PostgreSQL•Solid

•Sybase•Velocis•UNIX dbm

Sommaire

Page 10: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Comparatif PHP / JavaScript PHP JavaScript

S'exécute sur un serveur Web S'exécute chez un client

Il n'existe aucune norme du langage Le langage fait l'objet de la norme ECMA

Peut aborder le trait. de fichiers ou BD sur le serveur où tourne le script ou sur d'autres sites web

Adapté pour réagir en temps réel aux manip. d'utilisateurs et aux évènements de la souris ou du clavier

Permet de générer ou de manipuler des images Gère efficacement une structure de cadres

Autorise l'accès aux variables d'environnement du serveur

Permet l'exploitation de pages écrites en DHTML

Facilite la création de pages Web dynamiques

Permet de créer des pages dynamiques, mais très lourdes

Peut gérer des sessions complètes impliquant une transmission de données entre des pages Web chargées successivement

Pas proposé par tous les fournisseurs et autres hébergeurs, ou se limitent au PHP3

Disponible sur tous les nouveaux navigateurs avec assez peu de variantes

Sa portabilité est réduite du fait des extensions optionnelles

Sa portabilité est satisfaisante

Renferme plus de 2 000 fonctions Ne comporte qu'environ 200 fonctions

Sommaire

Page 11: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Domaines d’utilisation de PHP

PHP est un langage de script coté serveur. Pour

l’exploiter nous aurons besoin de :

Un analyseur PHP (CGI ou module serveur)

Un serveur Web

Un navigateur Web

C’est un langage de programmation en ligne de

commande. Nous pouvons écrire des scripts PHP et

les exécuter en ligne de commande, sans l’aide du

serveur Web et du navigateur, il suffit de disposer

de l’exécutable PHP ;

Écrire des applications graphiques ;

Page 12: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Caractéristiques

PHP est utilisable sur la majorité des systèmes d’exploitation et est reconnu par la plupart des serveurs Web actuels ;Avec PHP, vous avez le choix d’utiliser la programmation procédurale ou objet ou un mélange de deux ;Avec PHP vous n’êtes pas limité à la production de code HTML. Il permet de générer aussi bien des images, des fichiers pdf, des animations FLASH, du texte, …les sauve dans un système de fichiers ou les envoi directement au navigateur Web ;Supporte un grand nombre de bases de données ;Supporte de nombreux protocoles ;Dispose de fonctionnalités pour le traitement de texteIntègre des outils Cybercash et CyberMut, Verisign Payflow Pro et CCVS pour le paiement en ligne Sommaire

Page 13: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Installation de EasyPHP

Lancer l'exécution de easyphp1-8_setup.exe. Un dossier EasyPHP sera créé dans Program Files.

Page 14: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Au démarrage d'EasyPHP, une icône apparaît à côté de l'heure.• Pour automatiser le lancement au démarrage de Windows, double-cliquez sur l'icône de la barre des taches (ou lancez d'abord EasyPHP) et activez la commande « Configuration EasyPhp », une fenêtre qui s’affiche, vous choisissez l’option « Démarrer EasyPhp en même temps que Windows », puis appliquez avant de fermer la boîte :

•Configurer le navigateur afin de« ne pas utiliser le Proxy pour lesadresses locales »

Page 15: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

• Pour vérifier le fonctionnement, relancez Windows.• A l'aide d'un éditeur de texte tapez la ligne :

<? phpinfo(); ?>• Enregistrez dans le dossier EasyPHP\www sous le nom test.php ;• Lancez un navigateur ;• Tapez l'adresse : http://localhost/test.php• Accédez au dossier www et supprimez le fichier index.php. Ainsi, vous pourrez naviguer dans ce répertoire à partir d’un navigateur en tapant http://localhost/ ou http://127.0.0.1/ ou même http://nomposte/

Informations sur l'interpréteur PHP

Sommaire

Page 16: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Découvrir PHPExemplesRègles de base

Sommaire

Page 17: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Exemples Rien que du PHP : (afficher du texte)

1. Saisir ce code PHP et l'enregistrer sous le nom BONJOUR.PHP dans EasyPHP\WWW

2. Accéder à l'adresse http://localhost/bonjour.php

<? print ("Bonjour tout le monde !");?>

bonjour.php

Page 18: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Utiliser les balises HTML pour formater un texte : (voir bonjour02.php et bonjour03.php)

<? echo ' <font face="arial" size="4" color="red">Bonjour le monde !</font> ';?>

<? print("<font face=arial size=4 color=#FF0000>Bonjour le monde !</font> ");?>

Fonction print()

Fonction echo

ou

bonjour02.php

bonjour03.php

Page 19: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Afficher la date et l'heure :

<? $date = date('d-m-Y');$heure = date('h:i:s a');print("Nous sommes le $date et il est $heure");?>

Nous sommes le 11-12-2004 et il est 01:39:40 pm

a - "am" (matin) ou "pm" (après-midi) A - "AM" (matin) ou "PM" (après-midi) d - Jour du mois, sur deux chiffres (éventuellement avec un zéros) : "01" à "31" D - Jour de la semaine, en trois lettres (et en anglais) : par exemple "Fri" (pour Vendredi) F - Mois, textuel, version longue; en anglais, i.e. "January" (pour Janvier) h - Heure, au format 12h, "01" à "12" H - heure, au format 24h, "00" à "23" g - Heure, au format 12h sans les zéros initiaux, "1" à "12" G - Heure, au format 24h sans les zéros initiaux, "0" à "23" i - Minutes; "00" à "59"

j - Jour du mois sans les zéros initiaux: "1" à "31" l - ('L' minuscule) - Jour de la semaine, textuel, version longue; en anglais, i.e. "Friday" (pour Vendredi) L - Booléen pour savoir si l'année est bissextile ("1") ou pas ("0") m - - Mois; i.e. "01" à "12" n - Mois sans les zéros initiaux; i.e. "1" à "12" M - Mois, en trois lettres (et en anglais) : par exemple "Jan" (pour Janvier) s - Secondes; i.e. "00" à "59" S - Suffixe ordinal d'un nom

date_heure.php

Page 20: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

1. Créer la page Web bienvenue.htm suivante :

<html><head><title>Bienvenue</title></head><body><FORM ACTION="http://localhost/bienvenue.php", METHOD="GET">Quel est votre prénom ?

<INPUT TYPE="text" NAME="prénom" VALUE=""><INPUT TYPE="submit" VALUE="Cliquez ici"></FORM></body></html>

Un formulaire HTML qui appelle un script PHP :

Lorsque l'utilisateur clique sur le bouton, il appelle le script bienvenue.php

Page 21: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

2. Créer la page bienvenue.php dans le dossier WWW suivante :

<?print ("<h2>Bonjour, " .$_GET['prénom '] . " !</h2>");?> Variable qui correspond à

l'attribut NAME

PHP admet l'utilisation des caractères accentués dans le nom des variables.Les noms de variables doivent toujours commencer par un $ et sont sensibles à la casse.

Page 22: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Affichage de la source

1 2

Page 23: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

1. Créer la page saluer.php suivante :

On peut tout mettre dans un même fichier PHP (saluer.php)…

<html> <head><title>Bienvenue</title></head><body>

<?php if ($prenom != "") { print ("<h2>Bonjour, $prenom !</h2>"); exit; } ?>

<FORM ACTION="http://localhost/saluer.php", METHOD="POST">

Quel est votre prénom ?

<INPUT TYPE="text" NAME="prenom" VALUE=""><INPUT TYPE="submit" VALUE="Cliquez ici"> </FORM></body></html>

Appel de l'interpréteur PHP pour exécuter le script

Page 24: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

1

2

Page 25: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Appel d'un fichier php : include()

Il est possible d'appeler, depuis un document HTML, un fichier PHP

1. Créer un document HTML : appel_date_heure.php

<html> <head><title>Appel d'un fichier PHP</title></head><body>

<H2> Afficher la date et l'heure à partir d'un document HTML </H2>

<?include("date_heure.php") //on appelle le fichier?></body></html>

Afficher la date et l'heure à partir d'un document HTML Nous sommes le 11/12/2006 et il est 02:59:04 pm

Page 26: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Règles de base

Écriture des instructions :Un script PHP est généralement placé à l'intérieur

d'un document HTML, mais peut être complètement autonome et indépendant.

Quelque soit le cas, ces instructions doivent être à l'intérieure d'une paire de balises selon 4 modèles :

• Le style XML : C'est le style par défaut, reconnu par tous les interpréteurs.<?PHP Instructions PHP?>

Page 27: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

• Le style court : Ce style est reconnu par défaut par EasyPHP et par la plupart des interpréteurs des fournisseurs d'accès.<? Instructions PHP?>• Le style ASP : Celui utilisé par le langage de script ASP. Pour être reconnu, le paramètre de configuration asp_tags doit avoir la valeur on.<% Instructions PHP%>• Le style JavaScript : C'est le plus proche du HTML car il utilise la balise <SCRIPT>.<SCRIPT LANGUAGE="php"> Instructions PHP</SCRIPT>

Page 28: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

•Les instructions PHP doivent se terminer par un ; sauf après l'accolade fermante d'un bloc d'instructions.•Un fichier contenant un code PHP doit avoir l'extension (.php) Toutefois, certains serveurs peuvent exiger (.php3) ou (.php4)

Espaces blancs :" " (espace ordinaire)

"\t" (tabulation)

"\n" (alinéa)

"\r" (retour chariot)

"\0" ("null")

"\x0B" (tabulation verticale)

Page 29: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Types de variables :

PHP est un langage pauvrement typé.

On ne déclare pas le type des variables ou des constantes.

Une variable peut renfermer successivement n'importe quel type de contenu.

Il est, toutefois, forcer une variable à avoir un type bien déterminé par transtypage (= casting).

PHP manipule des données de 3 catégories : les nombres, les chaînes de caractères et les objets.

Page 30: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Fonctions :On compte plus de 2000 fonctions dans le langage PHP.

Les noms des fonctions ne sont pas sensibles à la casse.

Fichiers inclus :Comme avec JavaScript, il est possible de constituer une

bibliothèque extérieure à partir de laquelle on peut charger les scripts nécessaires plutôt que de les écrire directement dans le document HTML.

Il est aussi possible d'inclure des éléments extérieurs au langage.

La documentation :

Visitez l'URL http://www.php.net/download-docs.php

Page 31: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Les structures de données

Les constantesLes constantes numériquesLes constantes chaînesLes constantes booléennesLes constantes prédéfinies

Les variablesLes variables d'environnementLes variables variables

Les types de données Les tableauxLes objets

Les opérateursSommaire

Page 32: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Les constantes

Les constantes numériques :

PHP reconnaît plusieurs types de constantes.Les constantes sont par défaut sensibles à la casse.

Les constantes entières :

Décimales, octales (le 1er chiffre doit être un zéro),ou hexadécimales (commençant par 0x) : -34, 0651,0x4FPour PHP elles sont de type integer.

Page 33: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Les constantes flottantes :

Exclusivement exprimées en système décimal avecun point décimal : 14.2, 8.08E3Pour PHP elles sont de type double.

Les constantes chaînes de caractères :

Peuvent comporter n'importe quel caractère.Elles doivent être encadrées de guillemets ou d'apostrophes : "c'est à dire"

'c\'est à dire'Si un nom de variable figure dans la chaîne entreguillemets, il sera interprété …

Page 34: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

$tva = 19.6;echo "Le taux de TVA normale est égal à $tva %<p>";echo 'Le taux de TVA normale est égal à \$tva %<p>';

Deux lignes seront affichées :

Le taux de TVA normale est égale à 19.6 %Le taux de TVA normale est égale à $tva %

L'opérateur de concaténation des chaînes est le "." :

"Le chêne, un jour "."dit au roseau"

"Le chêne, un jour dit au roseau"

est équivalent à :

Page 35: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Les constantes booléennes :

Vous pouvez donner un nom symbolique à n'importe quelle constante scalaire (boolean, integer,double ou string).On utilise la fonction define(nom, valeur [,casse]):

Les constantes prédéfinies :

Chaîne de caractères représentant le nom de la cst

Valeur attribuée à cette cste

Indicateur booléen indiquant si le nom donné à la variable sera sensible (FALSE) ou non (TRUE) à la casse

Ne prennent que TRUE ou FALSE.

Page 36: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Exemples :

<?

define(PI, 3.1415926535);$r=20;$circ=2 * pi * $r;echo "Circonférence du cercle de rayon, $r est : $circ"; ?>

1Sensible à la casse

Circonférence du cercle de rayon, 20 est : 0

<?

define(PI, 3.1415926535,TRUE);$r=20;$circ=2 * pi * $r;echo "Circonférence du cercle de rayon, $r est : $circ"; ?>

2Pas sensible à la casse

Circonférence du cercle de rayon, 20 est : 125.66370614

const_predef01.php

const_predef.php

Page 37: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

On accède à la valeur d'une constante en spécifiant simplement son nom. On ne doit PAS préfixer le nom de la constante avec $. On peut utiliser la fonction constant(), pour lire dynamiquement la valeur d'une constante, dont on obtient le nom dynamiquement (retour de fonction, par exemple).Utilisez la fonction get_defined_constants() pour connaître la liste de toutes les constantes définies.

Page 38: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Quelques constantes système prédéfinies

Nom Signification__FILE__ Nom du fichier actuellement exécuté

__LINE__ N° de la ligne actuellement exécutée

PHP_VERSION Version de PHP

PHP_OS Nom du système d’exploitation utilisé

E_ERROR Erreur autre qu’une erreur de décodage

Page 39: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Nom SignificationM_E e (2.718281828459)

M_LOG2E log_2(e)=1.442695040889

M_LOG10E

log_10(e)=0.43429448190325

M_LN2 log_e(2)=LN(2)

M_LN10 log_e(10)=LN(10)

M_PI π

M_PI_2 π /2

M_PI_4 π/4

M_LNPI log_e(π)

Quelques constantes mathématiques prédéfinies

Nom SignificationM_1_PI 1/ π

M_2_PI 2/ π

M_SQRTPI sqrt(π)

M_2_SQRTPI 2/sqrt(π)

M_SQRT2 sqrt(2)

M_SQRT3 sqrt(3)

M_SQRT1_2 1/ sqrt(2)

M_EULER Constante d’Euler

Page 40: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Les variables

Ce sont des objets pouvant recevoir n'importe quelle valeur sans distinction du type.Le nom peut comporter un nombre qcq de lettres, de chiffres et blanc souligné (_)Une variable est toujours préfixée d'un $isset() permet de savoir si une variable contient bien quelque chose.

Page 41: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Les variables d'environnement

Les variables d'environnement sont désignées dans un script en majuscules.

Ces données concernent l'environnement du script au niveau du serveur et du client.

Les variables d'environnement sont stockées directement dans les variables associées à leur nom.

Exemple : Obtenir le type du navigateur du visiteur

<?echo "Avec HTTP_USER_AGENT : $HTTP_USER_AGENT<br>"; echo "Avec getenv() : ".getenv("HTTP_USER_AGENT");?>

Avec HTTP_USER_AGENT : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T312461)Avec getenv() : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; T312461)

var_envir.php

Page 42: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

<? phpinfo(); ?>

Il est possible d'avoir la liste des variables environnement à l'aide de phpinfo(); voir fichier test.php

Nom Description (exemple)DOCUMENT_ROOT Racine du serveur (/home/www/phpfrance)

HTTP_ACCEPT_LANGUAGE Langage accepté par le navigateur client (fr,ie-ee;q=0.5)

HTTP_HOST Nom de domaine du serveur (phpfrance.com)

HTTP_USER_AGENT Navigateur (et système) et client (Mozilla/4.0 (compatible; MSIE 5.01; Windows 98))REMOTE_ADDR Adresse IP du client (212.78.54.36)

REMOTE_PORT Port sur lequel la requête HTTP a été envoyée au serveur (1211)

SERVER_ADDR Adresse IP du serveur (209.15.23.241)

SERVER_ADMIN Adresse de l'administrateur du serveur ([email protected])

SERVER_NAME Nom local du serveur (localhost)

SERVER_SIGNATURE Type de serveur (Apache/1.3.12 Server at 127.0.0.1 Port 80)

REQUEST_METHOD Méthode d'appel du script (GET)

QUERY_STRING Liste des paramètres passés au script (id=14&page=3&action=voir)

REQUEST_URI Chemin du script (/chemin/script.php?id=14&page=3&action=voir)

PATH_INFO Chemin web du script (/chemin/script.php)

PATH_TRANSLATED Chemin complet du script (/home/www/phpfrance/chemin/script.php)

En voici quelques unes :

Page 43: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Les variables variablesPHP offre la possibilité de créer des variables elles-mêmes variables.

<?

$a="Chat";

$$a="Minet"; //Nous avons ainsi 2 variables $a et $Chat

echo "Mon $a s'appelle $Chat <br>";

echo "Mon $a s'appelle ${$a} <br>";

echo "Mon $a s'appelle $$a <br>";

?> Mon Chat s'appelle Minet Mon Chat s'appelle Minet Mon Chat s'appelle $Chat

var_var.php

Page 44: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Les types de données

PHP3 n'est pas un langage fortement typé. C'est PHP3 qui décide à l'exécution, en fonction de son contenu, quel type est sera le plus indiqué pour la variable.Quand vous utilisez une variable, vous n'avez pas besoin de la déclarer au préalable.

Les types de données standards :• integer • double • string • array • object

Deux types spéciaux :• ressource• null

Page 45: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Il est possible de forcer le transtypage en "castant" les variables vers le type de votre choix. Les casts autorisés sont les suivants :

• (int), (integer) - cast en un integer • (real), (double), (float) - cast en un double • (string) - cast en une chaîne • (array) - cast en un tableau • (object) - cast en un objet

De même, une variable peut changer de type en fonction de son contenu …

$a = "0"; // $a est une chaîne(ASCII 48) $a++; // $a est la chaîne "1" (ASCII 49) $a += 1; // $a est maintenant un entier (2) $a = $a + 1.3; // $a est un réel (3.3)

Page 46: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Les tableaux :Un tableau PHP est une association ordonnée (map). Une associationest un type qui fait correspondre des valeurs à des clés.

Comme une valeur peut elle-même être un tableau, on peut facilement simuler un arbre.

Syntaxe :$tableau = array(clé => valeur, clé => valeur,…)

Les tableaux jouent un rôle important parce que de nombreuses fonctions, en particuliers celles de MySQL, renvient leurs résultats sousforme de tableaux.

clé est soit un entier ou une chaîne.

Page 47: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Exemples :

<?

$t=array(0=>"chien",1=>"orange",2=>"crysral");

$r=array("animal"=>"chien","fruit"=>"orange","mineral"=>"crystal");

echo 'premier élément de $t ',$t[0],'<br>'; //chien

echo 'premier élément de $r ',$r["animal"]; //chien $arr = array("untableau"=>array(6=>5,13=>-3, "a"=>4,2=>"tt")); //tableau à 2 dimensions

echo $arr["untableau"][2]; //tt ?>

1créationcreer_tab.php

Page 48: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

<?

$ar=array(5=>12,14=>3);

$ar[]=-6; //revient à assigner –6 à l'élément 15

$ar["e"]=23; //revient à assigner 23 à l'élément "e"

unset($ar[5]); //efface l'élément 5

unset($ar); //efface tout le tableau

?>

manipulation

On peut connaître la taille d'un tableau à l'aide de la fonction count()

$x=array(3=>"r",6=>5);Count($x); //vaudra 2

manip_tab.php

Page 49: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

<?

$tab=array("nom"=>"Belhassen","prenom"=>"ali","profession"=>"enseignant");

$vect=$tab; //suffit à copier ce tableau?>

Recopier un tableau

Page 50: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Explorer un tableau

Action Déplacement du pointeurreset() Recale le pointeur au début du tableau et renvoie le 1er élément du tableau

end() Recale le pointeur à la fin du tableau et renvoie le dernier élément du tableau

current() ou pos() Renvoie l'élément courant du tableau

next() Fait avancer le pointeur courant de façon qu'il pointe l'élément suivant dont elle renvoie la valeur

prev() Fait reculer le pointeur courant de façon qu'il pointe l'élément précédent dont elle renvoie la valeur

key() Renvoie l'indic de l'élément courant du tableau

each() Extrait l'élément courant et fait avancer le pointeur d'une unité

list($indice,$valeur) Associée à each(), elle affecte indice et valeur de l'élément courant à 2 variables qcq

foreach() Permet de traiter tout un tableau sans avoir recours au structures itératives. Elle renvoie l'indice et la valeur de l'éléments courant et avance d'un cran

Page 51: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

<?

$vente_hebdo = array("lundi"=>1742,"mardi"=>1562,"mercredi"=>1920,"jeudi"=>1239,"vendredi"=>2012,"samedi"=>720) ; $vente_totale = 0; reset($vente_hebdo); while (list($key, $value) =each($vente_hebdo)) { echo "<BR> Vente de $key : $value unités\n"; $vente_totale += $value; } echo "<BR>Vente sur la semaine : $vente_totale unités\n";

?>

Exemple : parcourir un tableau

balayer_tab02.php

Page 52: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

<?php// recuperation de l'adresse ip$ip =getenv("REMOTE_ADDR");echo $ip;// inversion$array = explode(".",$ip);//explose une chaîne selon le séparateur indiquéend($array); // on se place à la finwhile (key($array)!=0) // tant qu'on est pas arrivé au début{$iip = $iip.pos($array)."."; // mise à jour de la variableprev($array); // on revient en arrière d'un élément}$iip = $iip.pos($array); echo"<hr>$iip"; // premier élément?>

Exemple : Afficher une adresse IP dans un ordre inverse

ip_inverse.php

Page 53: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Tableau à 2 dimensions :

<?

$livres =

array ("informatique" =>

array("PHP", "Java", "Internet", "Architecture"),

"dictionnaires" =>

array("Médical", "Automobiles"),

"cuisine" =>

array("tunisienne", "française", "asiatique")

);

Exemple : deuxdim.phpdéclaration

../..

Page 54: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

../.. Manipulation

echo "<b>Contenu du tableau \$livres :</b><br>";

while (list($k, $v) = each($livres)){ echo "<br>$k => "; while (list($kk, $vv) = each($v)) { echo "$vv "; }} echo "<br>";reset($livres);

for ($i=0; $i<count($livres); $i++){ list($k,$v) = each($livres); echo "<br>$k => "; for ($j=0; $j<count($v); $j++) { echo $livres[$k][$j]." "; }}

../..

Page 55: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

echo "<p>";

reset($livres);

for ($i=0; $i<count($livres); $i++)

{ list($k,$v) = each($livres);

echo "Le tableau \"$k\" a ".count($v)." éléments<br>";

}?>

../..

Contenu du tableau $livres :

informatique => PHP Java Internet Architecture dictionnaires => Médical Automobiles cuisine => tunisienne française asiatique

informatique => PHP Java Internet Architecture dictionnaires => Médical Automobiles cuisine => tunisienne française asiatique

Le tableau "informatique" a 4 élémentsLe tableau "dictionnaires" a 2 élémentsLe tableau "cuisine" a 3 éléments

Page 56: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Opérateurs et expressions

Affectations : = affectation += addition puis affectation -= soustraction puis affectation *= multiplication puis affectation /= division puis affectation %= modulo puis affectation

$n = 1; $n += 2; // $n vaut 3 $n *= 6; // $n vaut 18 $r= $n % 5; // 18 modulo 5 => $r = 3if ( ++$n == 20 ) echo "pas de chance !"; /* pre-increment le test renvoie vrai*/

$n=($a=8) - 2 //$n reçoit maintenant 6 et $a reçoit 8

Page 57: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Opérateurs arithmétiques :

Opérateur sur les chaînes : (concaténation)

$a = "Hello "; $b = $a . "World!"; // maintenant $b contient "Hello World!"

$a + $b $a - $b $a * $b $a / $b $a % $b ++ --

Addition Somme de $a et $b. Soustraction Reste de la différence de $b et $a. Multiplication Produit de $a par $b. Division Dividende de $a par $b. Modulo Reste de la division entière de $a par $b Incrément Décrément

Page 58: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Opérateurs binaires :

Il s'agit des opérateurs binaires dits "bit à bit", et non pas des opérateurs logiques booléens.

$a & $b And Les bits qui sont à 1 dans $a ET dans $b sont mis à 1. $a | $b Or Les bits qui sont à 1 dans $a OU dans $b sont mis à 1.$a ^ $b Xor Les bits différents sont mis à 1~ $a Not Les bits sont inversés.$a << $b Décalage à gauche des bits de $a $b fois$a >> $b Décalage à droite des bits de $a $b fois

$a = 5; // 0000 0101

$b = 12; // 0000 1100

$c = $a & $b; // $c vaut donc 0000 0100 soit 4 $d = $a | $b; // $d vaut donc 0000 1101 soit 13

$e = ~ $a; // $e contient le complément de 5, soit 1111 1010

// (avec devant autant de 1 que vous voulez) ce qui vaut -6

Page 59: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Opérateurs de comparaison :

== égalité > inférieur strict < supérieur strict<= inférieur ou égal>= supérieur ou égal!= différent<> différent

Opérateur conditionnel : (? :)

($a = = $b) ? $c=5 : $c=10; // affecte 5 à $c si $a est égale à $b

Opérateurs logiques :

&& (and) et || (or) ouxor ou exclusif ! (not) négation

Page 60: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Les structures de contrôles

Page 61: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Les conditionsLa structure if =>

if ($temps=="ensoléillé") {echo 'il fait beau'; }

else{echo 'il ne fait pas beau';}

Il est possible d'enchaîner plusieurs structures If sans avoir à les imbriquer, à l'aide de elseif

if ($nombre > 1){

  echo "\$nombre est supérieur à 1";} elseif ($nombre < 1) { echo "\$nombre est inférieur à 1";} else { echo "\$nombre est égal à 1";}

Page 62: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

L'opérateur ternaire =>

echo ($nombre == 1) ? "\$nombre est égal à 1" : "\$nombre n'est pas égal à 1";

La condition doit obligatoirement se trouver entre parenthèses. Si la condition est vérifiée, la valeur de gauche est retournée, sinon, c'est celle de droite.

Page 63: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

L'instruction switch =>

switch ($nombre)

{ case 1: echo "\$nombre est égal à 1";

break;

case 2: echo "\$nombre est égal à 2";

break;

case 3: echo "\$nombre est égal à 3";

break;

default: echo "\$nombre est inférieur à 1 ou supérieur à 3";

break;}

Page 64: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Les bouclesLa structure for =>

for (compteur; condition; compteur)

{

liste d'instructions

}

for ( $i = 1; $i <= 10 ; $i++ )

{

echo "$i ";

}

Syntaxe :Exemple :

La structure while=>

while (condition){

liste d'instructions

}

$i = 1;

while ( $i <= 10 )

{ echo "$i "; $i++;}

Syntaxe :

Exemple :

Page 65: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

<?php

function pgcd($a, $b)

{ if ($a < $b)

list ($a, $b) = array ($b, $a); //Permutation

do

{ $r = $a % $b;

if ($r == 0) return $b ; $a = $b; $b = $r; } while ($r > 0);

}

$n1 = 98; $n2 = 70; $pgcd = pgcd($n1, $n2); echo "Le PGCD de $n1 et $n2 est $pgcd<hr>";?>

do{ liste d'instructions

} while ( condition);

Syntaxe :

Exemple : PGCD

La structure do…while =>

pgcd.php

Page 66: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Les fichiers et les répertoires

Quelques fonctions de manipulation de fichiers

L’ouverture et la fermeture d’un fichierLa lecture d’un fichierExemple :• Compteur de visiteurs

Page 67: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Les fonctions de manipulation de fichiers (voir annexe) :

Contrairement à JavaScript, PHP permet de créer, lire modifier et supprimer les fichiers mais aussi les répertoires.

Création de fichier : La création se fait en ouvrant un fichier qui n’existe pas encore.

Ouverture d’un fichier : Ce fait à l’aide de la fonction fopen(nom fichier, mode);mode est une chaîne de caractères spécifiant comment doit être ouvert le fichier.

Les fichiers et les répertoires

Page 68: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

mode Significationr Ouverture en lecture. Le pointeur est placé au début du fichierr+ Ouverture en lecture et écriture. Le pointeur est placé au début du fichier

w Ouverture en lecture. La longueur du fichier est ramenée à 0 et le pointeur est placé au début. S'il n'existe pas, il est créé

w+ Ouverture en lecture et écriture. La longueur du fichier est ramenée à 0 et le pointeur est placé au début. S'il n'existe pas, il est créé

a Ouverture en écriture. Place le pointeur à la fin. S'il n'existe pas, il sera créé

a+ Ouverture en lecture et écriture. Place le pointeur à la fin. S'il n'existe pas, il sera créé

b Cette option n'est utile que sur les systèmes qui font la différence entre les fichiers binaires et les fichiers textes

Si l’opération spécifiée est réalisée avec succès, la fonction renvoie un handle (pointeur) vers le fichier. Sinon, elle renvoie FALSE.Le handle servira à désigner le fichier sur lequel on va opérer.

<?

$fp=fopen("monfichier.txt","w");

?> Le fichier est prêt à recevoir un contenu par fputs() ou fwrite()

open_file.php

Les fichiers et les répertoires

Page 69: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Fermeture d’un fichier : Lorsqu’un fichier est devenu inutile, il faut le refermer. fclose(handle);

<? $fp=fopen("monfichier.txt","w"); fclose($fp);?>

open_close_file.php

Lecture d’un fichier : Il existe plusieurs façons de lire un fichier.

fgets(handle,longueur); longueur = nombre de caractères à lire +1.L’exécution se termine qd : - les caractères ont été incorrectement lus- un caractère (new line) a été lu (fin de ligne)- fin de fichier

Les fichiers et les répertoires

Page 70: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

<?

$fd = fopen ("monfichier.txt", "r");

while (!feof ($fd)) {

$buffer = fgets($fd, 10);

echo "$buffer <br>";

}

fclose ($fd);

?>

read_file_fgets.php

Exemple :

1. Ouvrez le fichier monfichier.txt avec le bloc-note2. Saisissez votre nom et prénom3. Enregistrez et quittez

Kalifa

Anis

Page 71: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Exemple : Compteur de visiteurs.

1. Créez (dans le même dossier que la page d’accueil de votre site) un fichier texte contenant la valeur 0

2. Enregistrez le fichier sous le nom compteur.txt3. Intégrez le code suivant dans la page d’accueil index.php

<?

$fp=fopen("compteur.txt","r+"); //On ouvre le fichier en mode lecture/écriture

$nbvisites=fgets($fp,11); //On récupère le nombre dans le fichier

$nbvisites++; //On incrémente le compteur

fseek($fp,0); //On place le pointeur au début du fichier

fputs($fp,$nbvisites); //On écrit le nouveau nombre ds le fichier

fclose($fp); //On ferme le fichier

echo "Vous êtes le visiteur n° : $nbvisites";

?>

visites.php

Fichiers & répertoires

Page 72: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Communication entre pages web et scripts PHP

Les formulaires

Page 73: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Les formulaires :

Quand l’utilisateur clique sur le bouton de validation « submit », cette action appelle le script qui figure dans l’attribut ACTION de la balise <form>.Quelque soit la valeur de l’attribut METHOD (GET ou POST), les informations qu’il a fournit vont s’acheminer du navigateur vers le serveur, accompagnées du nom indiqué dans l’attribut NAME.Une fois arrivées à l’interpréteur PHP, il y a 2 manières de les reconnaître et de les interpréter :

En prenant le nom de l’attribut NAME et le préfixant de $ En exploitant le contenu de l’une des deux variables

d’environnement : HTTP_GET_VARS ou HTTP_POST_VARSLes éléments y sont transmis sous forme de tableaux associatifs

Page 74: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

PHP et MySQL

PHP offre une panoplie de fonctions pour exploiter les BD dont MySQL.

ConnexionRequêteAdministrationEtc …

Cependant, PHP doit être compilé avec les bons paramètres.

Page 75: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Architecture Apache-PHP-MySQLAPACHE

G ET /PAG E.PHP

Réperto iresw eb

PHP

SQ

L

MySQL

Page 76: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Architecture réseau

HTTPTCP:80

M YSQLTCP:3306

ServeurHT T P

ServeurM ySQ L

ParefeuClient w eb

Page 77: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

PHP, séquence de requête

1. Définition de la connexion2. Connexion3. Exécution de la requête4. Extraction des résultats de la

requête5. Fin de la connexion, implicite ou

spécifiée

Page 78: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Instructions PHP pour MySQL

Définition de la connexionmysql_connect ("hostname", "username", "password")

Sélection de la base de donnéesmysql_select_db ("database_name")

Exécution de la requêtemysql_query (identifiant)

Extraction des résultatsmysql_fetch_array (identifiant)

Fin de la connexionmysql_close ("hostname")

Page 79: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

3. Sécurité

Page 80: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

MySQL et la sécuritéMySQL supporte une structure de sécurité au niveau des utilisateurs. Une table USER contient les infos concernant les utilisateurs : nom, mot de passe (qui peut-être chiffré), de quelle adresse IP celui-ci provient et les fonctions qu’il peut utiliser.Il existe également une table pour les hôtes, table HOST, qui indique quelle BD qu’un hôte peut exploiter.L’échange du mot de passe entre le client et le serveur lors de l’authentification est chiffré.Il peut nécessaire de filtrer les accès au port réservé à MySQL (port TCP 3306).La sécurité au niveau des applications (PHP).

Page 81: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

4. Appropriation de la technologie

Page 82: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

EasyPHPhttp://www.easyphp.org/

EasyPHP installe et configure automatiquementun environnement de travail complet permettantde mettre en oeuvre toute la puissance et lasouplesse qu'offrent le langage dynamiquePHP et son support efficace des bases dedonnées. EasyPHP regroupe un serveurApache, une base de donnée MySQL, lelangage PHP ainsi que des outils facilitant ledéveloppement de vos sites ou de vosapplications.

Page 83: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Package EASYPHP

EasyPHP http://www.easyphp.org/

Permet d’installer le serveur web Apache, la base de données MySQL ainsi que la console de gestion PHPmyADMIN dans un environnement Win9x/NT/2000/Me/XP.

Page 84: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Administration des bases de données

Page 85: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse
Page 86: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Pages de gestion

Page 87: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Nous suivrons un exemple tout au long de cette partie, pour illustrer les concepts mis en oeuvre dans l'interfaçage entre le langage php et les bases de données gérées sous MySQL.

Il y aura trois intervenants en interaction :- Le client qui interprète le HTML généré par le php- Le serveur PHP qui interagit avec les deux autres

intervenants- Le serveur de bases de données, géré via MySQL

Interfaçage entre PHP et MySQL

Page 88: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Création d’une base de données FastFood

Pour illustrer ce cours nous prendrons un exemple d'une société qui vend des plats sur Internet. Sa base MySQL nommée fastfood comporte notamment une table produits qui comporte les colonnes id_plat, plat, prix, description.

Page 89: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Création d’une base de données avec l’outil PHP MyAdmin

1- Cliquez avec le bouton droit de la souris sur l’icône EasyPhp

2- choisissez l’option Administration

Page 90: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

3- une fenêtre d’administration de la base de données s’affiche

Cliquez sur Gestion BDD

Page 91: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

4- Vous trouvez maintenant la page d’outil PHP MyAdmin

Taper le nom de la

base

Cliquer sur le bouton Créer

Page 92: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

5- Vous trouvez maintenant la page création des tables de la base Fastfood

Taper le nom de la

table

…puis le nombre des champs

Appuyer sur le bouton Exécuter

Page 93: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

6- Vous trouvez maintenant la page structure de la table Produits Remplir les

champs

Non null

Clé primaire

Page 94: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Interfaçage avec la base de données, administration en ligne

L'entreprise du fast-food qui propose ses repas sur le net a une interface pour gérer sa base de données. Elle utilise un formulaire qui appelle des scripts php qui modifient ou suppriment des entrées et qui en créent.L'interface est composée de deux cadres, celui de gauche affiche la liste des plats de la base, et le cadre de droite contient une fiche d'un plat. Un clic sur un plat dans la liste provoque l'affichage de la fiche du plat. Dans l'image ci-dessous le clic sur Macaronie a provoqué l'affichage de la fiche du plat.Il y a donc eu une lecture des informations de la base pour ce plat, et un affichage de ces informations dans les champs du formulaire.Dans ce cas on peut supprimer ou modifier la fiche.

Index.php

Page 95: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Pour réaliser cette page il faut donc être capable

● d'afficher des données dans un tableau,

● d'ouvrir la base et de la fermer et

● de lire les données.Nous allons présenter ces

étapes ci-dessous. Chaque action est stockée dans une fonction php qui est ensuite appelée dans le programme principal. Ceci permet de réutiliser les fonctions dans de nombreux scripts.

Page 96: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Afficher des données dans un tableau

Pour afficher les données dans un tableau il suffit d’écrire un code PhP avec du Html pour dessiner un tableau.

Voir fichier listeplats.php

Page 97: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Ouvrir et fermer la base depuis un script php

Pour se connecter à une base de données dans un script php, il faut utiliser mysql_connect.La connexion à la base étant assez fréquente, et utilisée dans de nombreux scripts php du site fast-food, elle a été placée dans un fichier gerebase.php.De même la fonction pour se déconnecter de la base est placée dans le fichier gerebase.php.

Page 98: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Lire les données dans la baseNous savons maintenant ouvrir et fermer la base depuis un script, présenter des données dans un tableau, il ne reste plus qu'à apprendre à récupérer les données que l'on souhaite placer dans le tableau. Dans notre exemple c'est bien sûr les rangées de la table produits de la base fastfood. Le fichier listeplats.php génère dynamiquement une page web, dont le titre est «Liste des plats». Ce script incorpore le fichier gerebase.php qui contient les fonctions OuvrirBase(), FermerBase().

Page 99: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Lire les données dans la base (suite…)

Pour lire les données dans la base il est nécessaire de l'ouvrir, c'est la fonction OuvrirBase() qui s'en charge.La requête consiste à demander la colonne plat pour toutes les lignes, les lignes seront présentées par ordre alphabétique de plat.La fonction php mysql_query se charge de transmettre la requête au serveur MySQL, elle retourne un résultat. S'il est non nul c'est qu'il y a des lignes qui correspondent à la requête et dans ce cas on les affiche dans un tableau.Chaque ligne étant lue par mysql_fetch_row. La connexion à la base est fermée avec la fonction FermerBase() et le script est terminé.

Page 100: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Pour créer une nouvelle fiche il suffit d'appuyer dans le cadrede gauche sur le bouton Nouveau plat, un formulaire dont leschamps sont vides est affiché dans le cadre de droite, une foisqu'il est complété il est possible de l'envoyer afin d'ajouter leplat dans la base.

Voir fichier Fichevide.html

Page 101: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Générer dynamiquement une liste de liens vers des fiches

Le cadre de gauche affiche la liste des plats contenus dans la base,chaque item est un lien, quand on clique dessus on obtient les données concernant ce plat.Pour l'affichage de cette liste on utilise le script listeplats.php qui utilise lui-même les fonctions communes stockées dans des fichiers (celles décrites dans la lecture des données).Ce script affiche une liste qui est un tableau ce plusieurs lignes, est qu'on n'affiche que le nom du plat et qu'un lien est placé sur ce nom.Ce lien est un identificateur (celui stocké dans la base sous le nom de id_plat), il permet d'indiquer le plat qui nous intéresse au script qui va afficher toutes les informations sur le plat.

Page 102: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Afficher les informations d'une ligne de la base dans un formulaire

Lorsqu'on clique sur un lien dans la liste des plats, le script ficheplat.php est appelé avec passé dans l'url un identificateur stocké dans id. Il est donc possible dans le script d'y accéder par l'intermédiaire de la variable php $_GET[‘id’].Le script utilise lui aussi les fonctions des fichiers séparés, il se connecte à la base et envoie une requête dans laquelle il demande la rangée qui correspond à l'identificateur qu'il a dans son url (c'est à dire au plat qui a été sélectionné dans la liste du cadre de gauche).A partir de la réponse de mysql, il stocke les informations du nom, prix et description dans les variables $txtplat, $txtprix, $txtdesc. Il présente le formulaire dans un tableau avec dans chaque ligne un intitulé de champ (plat, prix, description) et le champ avec la valeur qui correspond au plat.Deux boutons sont proposés, un pour modifier la fiche et un pour la supprimer, les champs cachés choix et id servent respectivement à indiquer l'opération (suppression ou modification) et l'identificateur du plat. Ils seront transmis au script qui va effectuer les modifications dans la base de données.

Page 103: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Création, modification et suppression dans la base

Page 104: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Quand on clique sur le bouton Ajouter le plat pour créer un nouveau plat dans la table produits, ou sur le bouton Modifier pour modifier l'enregistrement d'un produit, ou encore sur Supprimer pour supprimer le plat de la table, c'est le script modifbase.php qui est appelé.Ce script connaît les données envoyées par le formulaire (plat, prix, description, id, choix), par l’intermédiaire du tableau associatif $_GET. Le champ choix lui permet de savoir s'il faut faire une insertion, une mise à jour ou une suppression dans la table. id lui donne l'identificateur id_plat(pour les suppressions et modifications).

Page 105: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

La création est traitée dans le cas 'c' du switch.Si tout se passe bien un message qui informe de la création du plat est affiché dans le cadre droit. La liste dans le cadre gauche est automatiquement mise à jour (la liste qui comporte les plats créés est affichée en même temps que le message qui informe de la création).C'est le code JavaScript en bas du fichier qui permet de recharger le script qui génère la liste à gauche (si ce script n'était pas rappelé, alors le nouveau plat n'apparaîtrait pas dans la liste).La modification est traitée dans le cas 'm' du switch.La suppression est traitée dans le cas 's' du switch.

Page 106: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

C'EST LA FIN !!!

Page 107: Initiation au PHP A.S: 2006 – 2007 Présenté par : Khalifa Anis Juillet 2007 Crefoc de Sousse

Merci à votre Attention

Tout droit réservé Khalifa Anis ©® [email protected]