Vous êtes sur la page 1sur 86

Master E-logistique

REALISE PAR :

SALAH EDDINE AKAZZOU & DOUNIA ELABADI

Encadr par | Mme MAZRI Majda

Master E-logistique

PHP MySQL
Ce tutorial a t conu pour expliquer le plus simplement et le plus clairement possible la mise en uvre de PHP et de la liaison vers une base de donnes gre sous MySQL. Il traite la plus grande partie des lments basiques du langage PHP. Table des matires 1. Introduction PHP 1.1. Qu'est-ce que le PHP ? 1.2. Ct-client et ct serveur 1.3. Petite histoire de PHP 2. Les outils ncessaires 2.1. Un hbergeur PHP MySQL 2.2. Wamp server en local 2.3. Un diteur de texte 2.4. Une documentation PHP 3. L'implmentation du code 3.1. Implmentation au sein du code Html 3.2. Un exemple se script simple 4. Les caractristiques du langage PHP 4.1. L'interprtation du code 4.2. Les commentaires 4.3. Typologie 5. Les variables en PHP 5.1 Concept de variables avec PHP 5.2. Dfinition des variables 5.3. Variables scalaires 5.4. Variables tableaux 5.5. Variable tableaux associatifs 5.6. Porte des variables 5.7. Dfinition de constantes
Tutorial PHP - MySQL 2012

Page 2

Master E-logistique

6. Les dates et heures 6.1. La fonction date() 6.2. La fonction getdate() 7. Les oprateurs 7.1. Qu'est-ce qu'un oprateur ? 7.2. Les oprateurs de calcul 7.3. Les oprateurs d'assignation 7.4. Les oprateurs d'incrmentation 7.5. Les oprateurs de comparaison 7.6. Les oprateurs logiques 7.7. Autres oprateurs 7.8. Les priorits 8. Les structures conditionnelles 8.1. Qu'est-ce qu'une structure conditionnelle ? 8.2. La notion de bloc 8.3. L'instruction if 8.4. L'instruction if else 8.5. L'instruction if elseif else 8.6. Une faon plus concise (oprateur ternaire) 8.7. L'instruction switch 8.8. Les boucles 8.9. La boucle for 8.10. L'instruction while 8.11. Saut inconditionnel 8.12. Arrt inconditionnel 8.13. Arrt d'excution du script 9. Les fonctions 9.1. La notion de fonction 9.2. La dclaration d'une fonction 9.3. Appel de fonction 9.4. Renvoi d'une valeur par une fonction 9.5. Les arguments d'une fonction 9.6. Travailler sur des variables 9.7. Passage de paramtre par rfrence
Tutorial PHP - MySQL 2012

Page 3

Master E-logistique

9.8. Retourner plusieurs variables 9.9. La rcursivit 9.10. Exemple final 10. Afficher du texte 10.1. La fonction echo 10.2. La fonction print 10.3. La fonction printf 10.4. Afficher un tableau 10.5. L'implantation du code PHP au sein du code Html 11. Traiter les chanes de caractres 11.1. Remplacer un mot 11.2. Rechercher un mot 11.3. Dcouper une chane 11.4. Vrifier si une variable est vide 12. Les variables d'environnement 12.1. Les variables d'environnement dpendant du client. 12.2. Les variables d'environnement dpendant du serveur 12.3. Affichage des variables d'environnement 13. Les fichiers 13.1. La fonction fopen() 14. Les en-ttes HTTP 14.1. Les en-ttes HTTP 14.2. Rcuprer les en-ttes de la requte 15. La rcupration de donnes 15.1. Cration d'un formulaire 15.2. Rcupration et utilisation des donnes 16. La base de donnes MySQL 16.1. MySQL 16.2. La structure d'une base de donnes 16.3. Les formats des donnes en MySql 16.4. Les oprateurs de MySql 16.5. PhpMyAdmin 17. Crer une base de donnes 17.1. Crer une base de donnes avec PhpMyAdmin
Tutorial PHP - MySQL 2012

Page 4

Master E-logistique

18. Se connecter la base de donnes 18.1. La connexion la base de donnes depuis PHP 19. Afficher une table 19.1. Afficher le contenu d'une table 20. Insrer des donnes 20.1. Insrer des donnes partir d'un formulaire 21. Grer une base de donnes 21.1. Modifier un enregistrement 21.2. Supprimer un enregistrement 21.3. Trier une table

Tutorial PHP - MySQL 2012

Page 5

Master E-logistique

1. Introduction PHP 1.1. Qu'est-ce que PHP ?

PHP pour Pr HyperText Processor, est un langage de script excut par le serveur Web qui hberge le site (comme les scripts CGI, ASP, ) et non par le navigateur du visiteur (comme une page Html, un script crit en JavaScript ou une applet Java qui s'excutent directement sur votre ordinateur...). La syntaxe du langage PHP est fortement inspire de celles du langage C et du Perl.

Ses principaux atouts sont : _ La gratuit et la disponibilit du code source (PHP est distribu sous licence GNU GPL). _ sa richesse fonctionnelle : PHP comporte plus de 1000 fonctions. la simplicit d'criture des scripts . _ la disponibilit sur le Web de nombreux scripts PHP prts l'emploi. _ la possibilit d'inclure le script PHP au sein d'une page Html. _ la simplicit de liaison avec des bases de donnes. De nombreux systmes de base de donnes sont supports, mais le plus utilis avec le PHP est MySQL, un systme de base de donnes gratuit et Disponible sur les plateformes Unix, Linux, et Windows. Ce langage de programmation permet essentiellement de construire des sites Web dynamiques, particulirement lorsquils sont relis une base de donnes.

1.2. Ct-client et ct-serveur Ct-client


Tutorial PHP - MySQL 2012

Page 6

Master E-logistique

Dans votre apprentissage des langages de publication sur le Web, vous avez avec le langage Html, le JavaScript ou le VBscript utilis des applications dites ct-client car elles sont utilises en local par le navigateur (le client) de l'utilisateur final.

Dtaillons ce qu'il se passe lorsque vous consultez une page Html dite statique : - Votre navigateur envoie l'adresse URL (Uniform Ressource Locator) que vous avez encode. - Le serveur Web (l'ordinateur) qui hberge la page que vous demandez, va chercher le fichier demand dans son disque dur et vous envoie la page Html telle qu'elle votre navigateur. - Votre navigateur interprte les diffrents langages se trouvant dans ce fichier (Html, JavaScript, CSS, etc.) et affiche la page. Ct-serveur Les langages utiliss ct-client sont, pour des raisons videntes de scurit, assez limitatifs. Les applications plus complexes seront traites dans l'espace plus scuris qu'est le serveur qui hberge le site Web. Les traitements sont alors excuts ct-serveur et seuls les rsultats seront envoys au navigateur de l'utilisateur.

Tutorial PHP - MySQL 2012

Page 7

Master E-logistique

Dtaillons ce qu'il se passe lorsque vous consultez une page Html dite dynamique : - Votre navigateur envoie l'adresse que vous avez encode. - 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, .phtml). Si c'est le cas, le serveur Web transmet ce fichier PHP. - PHP interprte le fichier, c'est--dire qu'il va analyser et excuter le code PHP. Si ce code contient des requtes vers une base de donnes MySQL, PHP envoie la requte SQL. La base de donnes renvoie alors les informations voulues au script qui peut les exploiter (pour les afficher par exemple). PHP continue d'interprter la page, puis retourne le fichier dpourvu du code PHP (puisqu'il est excut) au serveur Web. Le serveur Web renvoie finalement le fichier au navigateur de l'utilisateur. Ce fichier ne contient plus que du Html.

Vous remarquez que le code PHP s'excute ct-serveur. Il n'y a ainsi plus aucune trace du code PHP lorsque vous consultez le code source de la page dans votre navigateur PHP, au contraire du JavaScript o le code source reste visible.Il est important de noter : - que tout ce qui a trait la prsentation de la page (couleur, police, mise en forme du texte, etc..) est l'affaire du Html et des feuilles de style CSS.
Page 8

Tutorial PHP - MySQL 2012

Master E-logistique

- que PHP n'a donc rien voir avec le design de votre page. - que tout ce qui touche au comportement du navigateur est du domaine du JavaScript, lui aussi excut par le client.

Tutorial PHP - MySQL 2012

Page 9

Master E-logistique

1.3. Petite histoire du PHP Le langage PHP a t mis au point au dbut d'automne 1994 par Rasmus Lerdorf. Ce langage de script lui permettait de conserver la trace des utilisateurs venant consulter son CV en ligne sur son site, grce l'accs une base de donnes par l'intermdiaire de requtes SQL. Ainsi, tant donn que de nombreux internautes lui demandrent ce programme, Rasmus Lerdorf mit en ligne en 1995 la premire version de ce programme qu'il baptisa Personal Sommaire Page Tools, puis Personal Home Page v1.0. Etant donn le succs de PHP 1.0, Rasmus Lerdorf dcida d'amliorer ce langage en y intgrant des structures plus avances telles que des boucles, des structures conditionnelles, et y intgra un package permettant d'interprter les formulaires qu'il avait dvelopp (FI, Form Interpreter) ainsi que le support de MySQL. C'est de cette faon que la version 2 du langage, baptise pour l'occasion PHP/FI version 2, vit le jour durant l't 1995. Il fut rapidement utilis sur de nombreux sites (15000 fin 1996, puis 50000 en milieu d'anne 1997). A partir de 1997, Zeev Suraski et Andi Gurmans rejoignirent Rasmus pour former une quipe de programmeurs afin de mettre au point PHP 3 (Stig Bakken, Shane Caraveo et Jim Winstead les rejoignrent par la suite). C'est ainsi que la version 3.0 de PHP fut disponible le 6 juin 1998. la fin de l'anne 1999, une version 4 de PHP est apparue. 2. Les outils ncessaires 2.1. Un hbergeur PHP-MySQL Pour utiliser les bases de donnes avec le duo PHP - MySQL, il faut que votre hbergeur accepte ces techniques et vous permette de grer votre propre base de donnes. Ce sera gnralement le cas des serveurs qui fonctionnent sous Unix. Pour l'accs une base de donnes, cela dpendra souvent de votre type d'abonnement.

Tutorial PHP - MySQL 2012

Page 10

Master E-logistique

Si votre hbergeur fonctionne sous Windows, il y a peu de chances qu'il accepte le PHP et il faudra dans ce cas vous tourner vers les techniques spcifiques de Windows pour ce genre de manipulations, soit ASP et SQL. 2.2. wamp server en local Cependant pour tester vos scripts, il deviendrait trs vite pesant de "uploader" chaque fois vos fichiers par FTP. C'est pourquoi installer un serveur Web en local sur son ordinateur se rvle indispensable pour tester vos scripts en direct. Vous pourrez ainsi programmer en PHP sans avoir besoin d'tre connect Internet, ce qui peut tre intressant pour les personnes ne disposant pas (encore) de connexions au forfait. Il existe un outil incontournable pour le PHP, c'est wamp server. Ce programme permet d'installer automatiquement en quelques secondes un environnement de travail complet : soit un serveur Apache, PHP, MySql, PHPMyAdmin, etc. Vous pourrez ainsi tester localement sous Windows vos scripts PHP et vos bases de donnes.

Tutorial PHP - MySQL 2012

Page 11

Master E-logistique

Son installation ne devrait pas poser de problmes. Sinon de nombreux articles explicatifs et autres FAQs vous attendent sur le Web. 2.3. Un diteur de texte Un script PHP est, comme la plupart des langages de programmation, un simple fichier texte (ASCII 7 bits sans caractres accentus). Ainsi, un simple diteur de texte comme le Bloc-notes (Notepad) de Windows fera trs bien l'affaire. 2.4. Une documentation PHP Lorsqu'on crit des sites dynamiques en PHP, on ne gardera pas en tte les 1000 et quelques fonctions du PHP. On fonctionne de faon pragmatique. On retient bien entendu les fonctions et rgles de base, mais on se plongera dans la documentation pour les points plus spcifiques. 3. L'implantation du code 3.1. Implantation au sein du code Html Pour que le script soit interprt par le serveur, deux conditions sont ncessaires : _ le fichier contenant le code doit avoir l'extension .php et non .html. _ le code PHP contenu dans le code HTML doit tre dlimit par les balises <?php et ?>. Pour des raisons de conformit avec certaines normes (XML et ASP par exemple), plusieurs balises peuvent tre utilises
Tutorial PHP - MySQL 2012

Page 12

Master E-logistique

pour dlimiter un code PHP : <?php ... ?> La plus acadmique. Obligatoire si vous envisagez d'inclure du PHP dans des fichiers XML ou XHTML. La plus utilise. Cette notation abrge doit tre active dans le fichier de configuration php.ini. Ce qui est gnralement le cas. La plus longue la faon de la dclaration des scripts JavaScript ou VBscript. Pour le compatibilit avec ASP.

<? ?>

<script language="php"> </script>

<%php %>

3.2. Un exemple de script simple On ouvre le Bloc-notes de Windows et on encode ce qui suit : <html> <head> <title>Exemple</title> </head> <body> <?php echo "Bonjour"; ?> </body> </html> On notera ce stade que la fonction echo permet d'afficher une chane de caractres dlimite par des guillemets. On enregistre le fichier sous le nom "exemple .php" et dans le dossier (www) de wamp server (Program Files wampserver www).
Tutorial PHP - MySQL 2012

Page 13

Master E-logistique

On lance Wampserver pour mettre en uvre le trinme Apache PHP - MySQL qui activera ainsi le rseau local.

On ouvre ensuite Microsoft Internet Explorer. Aprs avoir encod l'adresse de la page soit http://localhost/exemple.php ou de faon quivalente http://127.0.0.1/exemple.php, on obtient ainsi dans le navigateur.

Tutorial PHP - MySQL 2012

Page 14

Master E-logistique

S'il nous prend la fantaisie d'afficher la source dans le navigateur (pour Internet Explorer Affichage Source), vous remarquerez que toute trace de votre script en PHP a disparu.

Pour agrmenter la prsentation du texte, on utilise du code Html. En effet, PHP ne s'occupe pas du formatage du texte car il dlgue en quelque sorte ce travail au Html. <html> <head> <title>Exemple</title> </head> <body> <?php echo "<p align=center><b><font face=Arial size=5 color=red>Bonjour</font></b></p>"; ?> </body> </html>

Tutorial PHP - MySQL 2012

Page 15

Master E-logistique

4. Les caractristiques du langage PHP 4.1. L'interprtation du code Un code PHP (celui compris entre les dlimiteurs <?php et ?>) est un ensemble d'instructions se terminant chacune par un point-virgule (comme en langage C). En PHP, toutes les instructions doivent se terminer par un point-virgule.Le langage PHP se montre sur ce point nettement plus strict que le Javascript Lorsque le code est interprt, les espaces, retours chariot et tabulation ne sont pas pris en compte par le serveur. Il est tout de mme conseill d'en mettre afin de rendre le code plus lisible (pour vous, puisque les utilisateurs ne peuvent lire le code source: il est interprt). 4.2. Les commentaires Une autre faon de rendre le code plus comprhensible consiste insrer des commentaires, des lignes qui seront tout simplement ignores par le serveur lors de l'interprtation. Pour ce faire, il est possible, comme en langage C, d'utiliser des balises qui vont permettre de dlimiter les lignes d'explications afin que l'interprteur les ignore et passe directement la suite du fichier.
Tutorial PHP - MySQL 2012

Page 16

Master E-logistique

Ces dlimiteurs sont /* et */ Un commentaire sera donc not de la faon suivante : /* Voiciun commentaire ! */ Il y a toutefois quelques rgles respecter : o Les commentaires peuvent tre placs n'importe o l'intrieur des dlimiteurs de script PHP. o Les commentaires ne peuvent contenir le dlimiteur de fin de commentaire (*/). o Les commentaires ne peuvent tre imbriqus. o Les commentaires peuvent tre crits sur plusieurs lignes. o Les commentaires ne peuvent pas couper un mot du code en deux.

Une autre faon d'ajouter des commentaires est le double slash (//) qui permet de mettre, sur une seule ligne, tout ce qui se situe droite de ce symbole en commentaires. // Voici un commentaire ! 4.3. Typologie La manire d'crire en langage PHP a son importance. Le langage PHP est par exemple sensible la casse (en anglais case sensitive), cela signifie qu'un nom contenant des majuscules est diffrent du mme nom crit en minuscules. Toutefois, cette rgle ne s'applique pas aux fonctions, les spcifications du langage PHP prcisent que la fonction print peut tre appele print(), Print() ou PRINT(). 5. Les variables en PHP 5.1. Concept de variable avec PHP
Tutorial PHP - MySQL 2012

Page 17

Master E-logistique

Une variable est un objet repr par son nom, pouvant contenir des donnes, qui pourront tre modifies lors de l'excution du programme. Les variables en langage PHP peuvent tre : o des scalaires (variables normales) o des tableaux o des tableaux associatifs Quelque soit le type de variable, son nom doit obligatoirement tre prcd du caractre dollar ($). Contrairement de nombreux langages de programmation, comme le langage C, les variables en PHP n'ont pas besoin d'tre dclares, c'est--dire que l'on peut commencer les utiliser sans en avoir averti l'interprteur au pralable. Ainsi, si la variable existait prcdemment, son contenu est utilis, sinon l'interprteur lui affectera la valeur en lui assignant 0 par dfaut. De cette faon si vous ajoutez 3 une nouvelle variable (non dfinie plus haut dans le code), sa valeur sera 3.

5.2. Dfinition des variables Avec PHP, les noms de variables doivent rpondre certains critres : o un nom de variable doit commencer par une lettre (majuscule ou minuscule) ou un "_" (pas par un chiffre). o un nom de variables peut comporter des lettres, des chiffres et le caractre _ (les espaces ne sont, bien entendu, pas autoriss !). Quelques exemples :

Nom de variable $Variable correct


Tutorial PHP - MySQL 2012

Page 18

Master E-logistique

$Nom_De_Variable $nom_de_variable $nom_de_variable_123 $nom_2_variable

Nom de variable incorrect $Nom de Variable

Raison comporte des espaces

$123Nom_De_Variable commence par un chiffre $toto@mailcity.com caractre spcial @ $Nom-de-variable nom_de_variable signe - interdit ne commence pas par $

Les noms de variables sont sensibles la casse (PHP fait la diffrence entre majuscules et minuscules), il faut donc veiller utiliser des noms comportant la mme casse !

5.3. Variables scalaires Le langage PHP propose trois types de variables scalaires: _ Entiers : nombres naturels sans dcimale (sans virgule). _ Rels : nombres dcimaux (on parle gnralement de type double, car il s'agit de nombre dcimaux double prcision). _ Chanes de caractres : suite de caractres. Il n'est pas ncessaire en PHP de typer les variables, c'est--dire de dfinir leur type, il suffit de leur assigner une valeur pour en dfinir le
Tutorial PHP - MySQL 2012

Page 19

Master E-logistique

type : _ Entiers : nombre sans virgule. _ Rels : nombres avec une virgule (en ralit un point). _ Chanes de caractres : ensembles de caractres entre guillemets simples ou doubles.

Instruction $Variable = 0; $Variable = 12; $Variable = 0.0; $Variable = 12.0; $Variable = "0.0";

Type de la variable type entier type entier type rel type rel type chane

$Variable = "Bonjour tout le type chane monde";

Exemple : <?php $a = 1; $b = 3.34; $c = "Le monde entier"; echo $a,"<br>",$b,"<br>",$c; ?>


Tutorial PHP - MySQL 2012

Page 20

Master E-logistique

Il existe des caractres reprs par un code ASCII spcial permettant d'effectuer des oprations particulires. Ces caractres peuvent tre reprsents plus simplement en langage PHP grce au caractre '\' suivi d'une lettre, qui prcise qu'il s'agit d'un caractre de contrle.

Caractre \" \' \\ \r \n \t

Description guillemet apostrophe barre oblique inverse retour chariot (backslash) retour la ligne tabulation

D'une part, certains de ces caractres ne pourraient pas tre reprsents autrement (un retour la ligne ne peut pas tre reprsent l'cran). D'autre part, les caractres repris par le code du langage PHP comme \ et " ne peuvent pas faire partie d'une chane de caractre, pour des raisons vidente d'ambigut. 5.4. Variables tableaux Les variables, telles que nous les avons vues, ne permettent de stocker qu'une seule donne la fois. Or, pour de nombreuses donnes, des variables distinctes seraient beaucoup trop lourdes grer. Heureusement, PHP propose des structures de donnes permettant de stocker l'ensemble de ces donnes dans une "variable commune".

Ce sont les variables tableaux. Ainsi, pour accder ces valeurs, il suffit de parcourir la variable de type complexe compose de "variables" de type simple.
Tutorial PHP - MySQL 2012

Page 21

Master E-logistique

Les tableaux stockent des donnes sous forme de liste. Les donnes contenues dans la liste sont accessibles grce un index (un numro reprsentant l'lment de la liste). Contrairement des langages tels que le langage C, il est possible de stocker des lments de types diffrents dans un mme tableau. Ainsi, pour dsigner un lment de tableau, il suffit de faire suivre au nom du tableau l'indice de l'lment entre crochets : $Tableau[0] = 12; $Tableau[1] = "Bonjour"; Avec PHP, il n'est pas ncessaire de prciser la valeur de l'index lorsque l'on veut remplir un tableau, car il assigne la valeur 0 au premier lment (si le tableau est vide) et incrmente les indices suivants. Le code prcdent est quivalent : $Tableau[] = 12; $Tableau[] = "Bonjour"; Il est important de noter que : - les indices de tableau commencent zro. - tous les types de variables peuvent tre contenus dans un tableau. Une autre faon de crer un tableau est de passer par l'lment du langage PHP, array(). <?php $Tableau = array(12,"Bonjour"); ?> Lorsqu'un tableau contient d'autres tableaux, on parle de tableaux multidimensionnels. Il est possible de crer directement des tableaux multidimensionnels en utilisant plusieurs paires de crochets pour les index (autant de paires de crochets que la dimension souhaite). Par exemple, un tableau deux dimensions pourra tre dclar comme suit :

Tutorial PHP - MySQL 2012

Page 22

Master E-logistique

$Tableau[0][0] = 12; $Tableau[0][1] = "lehtml"; $Tableau[1][0] = 1245.652; $Tableau[1][1] = "Au revoir"; 5.5. Variables tableaux associatifs PHP permet l'utilisation de chanes de caractres au lieu de simples entiers pour dfinir les indices d'un tableau, on parle alors de tableaux associatifs. Cette faon de nommer les indices peut parfois tre plus facile utiliser. $Auteur["Nom"] = "Van Lancker"; $Auteur["Prenom"] = "Luc"; $Auteur["Code_Postal"] = 7700; Ou avec array() : <?php $Auteur = array(Nom=>"Van Lancker",Prenom=>"Luc",Code_Postal=>7700); ?> 5.6. Porte (visibilit) des variables Selon l'endroit o on dclare une variable, celle-ci pourra tre accessible (visible par PHP) partout dans le code ou bien uniquement dans une portion confine de celui-ci ( l'intrieur d'une fonction par exemple), on parle alors de la porte (ou la visibilit) d'une variable. Lorsqu'une variable est dclare dans le code mme, c'est--dire l'extrieur de toute fonction ou de tout bloc d'instruction, elle est accessible de partout dans le code (n'importe quelle fonction du programme peut faire appel cette variable). On parle alors de variable globale. Lorsque l'on dclare une variable l'intrieur d'un bloc d'instructions (entre des accolades), sa porte se confine l'intrieur du bloc dans
Tutorial PHP - MySQL 2012

Page 23

Master E-logistique

lequel elle est dclare. On parle alors de variable locale.

D'une manire gnrale il est prfrable de donner des noms diffrents aux variables locales et globales pour des raisons de lisibilit et de comprhension du code. 5.7. Dfinition de constantes Une constante est une variable dont la valeur est inchangeable lors de l'excution d'un programme. Avec PHP, les constantes sont dfinies grce la fonction define(). La syntaxe de la fonction define() est la suivante: define("Nom_de_la_variable", Valeur); Le nom d'une constante dfinie l'aide de la fonction define() ne doit pas commencer par le caractre $ (de cette faon aucune affectation n'est possible). 6. Les dates et heures PHP possde de nombreuses fonctions qui permettent de manipuler la date et l'heure sur le serveur qui excute PHP. On peut utiliser ces fonctions pour formater la date et l'heure de nombreuses faons. N'oubliez pas que la date et l'heure affiches seront celle du serveur (qui excute le code) et non celle du visiteur (en JavaScript, c'est le navigateur sur le poste client qui interprte le code et donc affiche l'heure de l'ordinateur du visiteur). 6.1. La fonction date() La fonction date(format) retourne une date sous forme d'une chane, au format demand .
Tutorial PHP - MySQL 2012

Page 24

Master E-logistique

Forma tA A D D F H H G G I J M M N S Y Y Par exemple :

Description "am" ou "pm" minuscules "AM" ou "PM" majuscules jour du mois jour de la semaine en 3 lettres nom du mois heure (format 12 heures avec 0 en entte) (format 24 heures avec 0 en enheure tte) (format 12 heures sans 0 en enheure tte) (format 24 heures sans 0 en enheure tte) minutes jours du mois (pas de 0 en en-tte) mois de l'anne (0 en en-tte) mois de l'anne en 3 lettres mois de l'anne; pas de 0 en entte secondes anne en 2 chiffres anne en 4 chiffres

Exemple pm PM 07 /12 Mon May 12 08 4 10 44 3 04 jul 4 30 02 2003

<?php $date_du_jour = date("d-m-Y"); echo "Nous sommes le ".$date_du_jour; ?> 6.2. La fonction getdate() La fonction getdate(champ) retourne un tableau associatif contenant les
Tutorial PHP - MySQL 2012

Page 25

Master E-logistique

informations de date et d'heure avec les champs suivants : Champ s Second s Minute s hours mday wday mon year yday Description secondes minutes heures de la journe de 0 23 jour du mois de 1 31 jour de la semaine de 0 6 mois de l'anne anne en 4 chiffres jour de l'anne de 0 365 Exemple 23 7 16 18 5 4 2003 185

Weekd nom du jour de la semaine Monday ay (en anglais) month mois de l'anne (en anglais) January

Par exemple : <?php $aujourdhui = getdate(); $mois = $aujourdhui['month']; $jour = $aujourdhui['mday']; $annee = $aujourdhui['year']; echo "$jour/$mois/$annee"; ?> 7. Les oprateurs 7.1. Qu'est-ce qu'un oprateur? Les oprateurs sont des symboles qui permettent de manipuler des variables, c'est--dire effectuer des oprations, valuer des variables, etc On distingue plusieurs types d'oprateurs : - les oprateurs de calcul - les oprateurs d'assignation - les oprateurs d'incrmentation - les oprateurs de comparaison - les oprateurs logiques
Tutorial PHP - MySQL 2012

Page 26

Master E-logistique

7.2. Les oprateurs de calcul Les oprateurs de calcul permettent de modifier mathmatiquement la valeur d'une variable. Oprate Dnomination ur Addition + * / = Soustraction Multiplication Division Oprateur d'affectation Effet Ajoute deux valeurs Soustrait deux valeurs Multiplie deux valeurs Divise deux valeurs Affecte une valeur une variable Exempl Rsultat e $x+3 10 $x-3 $x*3 $x/3 $x=3 4 21 2.3333333 Met la valeur 3 la variable $x

Tutorial PHP - MySQL 2012

Page 27

Master E-logistique

Exemple : <?php $a = 8; $b = 3; echo $a + $b."<br>"; echo $a - $b."<br>"; echo $a * $b."<br>"; echo$a / $b."<br>"; ?>

7.4. Les oprateurs d'incrmentation Ces oprateurs permettent de simplifier des oprations telles que ajouter une valeur dans une variable et stocker le rsultat dans celle-ci. Une telle oprations s'crirait habituellement de la faon suivante par exemple: $x=$x+2 Avec les oprateurs d'assignation il est possible d'crire cette opration sous la forme suivante: $x+=2 Ainsi, si la valeur de x tait 5 avant opration, elle sera de 7 aprs Les oprateurs de ce type sont les suivants: Oprateu r += -= *= /= %= Effet addition deux valeurs et stocke le rsultat dans la variable ( gauche). soustrait deux valeurs et stocke le rsultat dans la variable. multiplie deux valeurs et stocke le rsultat dans la variable. divise deux valeurs et stocke le rsultat dans la variable. donne le reste de la division deux valeurs et stocke le rsultat dans la variable.

Tutorial PHP - MySQL 2012

Page 28

Master E-logistique

|= ^= &= .=

Effectue un OU logique entre deux valeurs et stocke le rsultat la exclusif variable. Effectue dans un OU entre deux valeurs et stocke le Effectue un Et logique entre deux valeurs et stocke le rsultat dans la variable. Concatne deux chanes et stocke le rsultat dans la variable.

7.4. Les oprateurs d'incrmentation Ce type d'oprateur permet d'augmenter ou de diminuer, de faon concise, une variable d'une unit. Ces oprateurs sont trs utiles pour des structures telles que les boucles qui ont besoin d'un compteur (variable qui augmente de un en un). Un oprateur de type $x++ permet de remplacer des notations lourdes telles que $x=$x+1 ou bien $x+=1 Oprate Dnomination Effet ur Incrmentation Augmente d'une ++ unit la variable -Syntax Rsultat e $x++ 6 (avec x = 5) 4 (avec x = 5)

Dcrmentation Diminue d'une unit $x-la variable

Exemple avec a=8 et b=3 : <?php $a = 8; $b = 3; $a++; echo $a."<br>"; $b--; echo $b."<br>"; ?>

Tutorial PHP - MySQL 2012

Page 29

Master E-logistique

7.5. Les oprateurs de comparaison Ce type d'oprateur permet de comparer la grandeur de deux donnes. Oprateur Dnomination == oprateur d'galit Effet Compare deux valeurs et vrifie leur galit Vrifie qu'une variable est strictemet infrieure une valeur Vrifie qu'une variable est infrieure ou Vrifie gale qu'une une variable est valeur strictement suprieure une valeur Exemple Rsultat $x==3 Retourne 1 si $x est gal 3, sinon 0 Retourne 1 si $x est infrieur 3, sinon 0 Retourne 1 si $x est infrieur 3, Retourne sinon 0 1 si $x est suprieur 3, sinon 0
Page 30

<

oprateur d'infriorit stricte oprateur d'infriorit oprateur de supriorit stricte

$x<3

<= >

$x<=3 $x>3

Tutorial PHP - MySQL 2012

Master E-logistique

>=

oprateur de supriorit oprateur de diffrence

!=

Vrifie qu'une variable est suprieure ou gale une Vrifie qu'une valeur variable est diffrente d'une valeur

$x>=3

$x!=3

Retourne 1 si $x est suprieur ou gal 3, Retourne 1 si sinon $x est0 diffrent de 3, sinon 0

Ne pas confondre l'oprateur d'galit (==) avec le signe d'affectation (=). 7.6. Les oprateurs logiques (boolens) Ce type d'oprateur permet de vrifier si plusieurs conditions sont vraies :

Oprateur Dnomination Effet || ou OR && ou AND XOR ! OU logique ET logique OU exclusif NON logique Vrifie qu'une des conditions Vrifie queest toutes les conditions sont ralise ralises

Syntaxe ((condition1)||(conditi on2)) ((condition1)&&(condit ion2))

7.7. Autres oprateurs

Oppos du OU logique ((condition1)XOR(condi tion2)) Inverse l'tat d'une (!condition) variable boolenne (retourne la valeur 1 si la variable vaut 0, 0 si elle vaut 1)
Page 31

Tutorial PHP - MySQL 2012

Master E-logistique

Les oprateurs suivants ne peuvent pas tre classs dans une catgorie spcifique mais ils ont tout de mme leur importance ! Oprate Dnomination Effet Syntaxe Rsultat ur Concatnation Joint deux chanes bout "Bonjour"."A "Bonjour . bout u Au revoir" revoir" Rfrenceme Permet de dfinir une $MaVariable $ = nt de Proprit d'un variable Permet d'accder aux $MonObjet-> objet donnes > 2; variable membres d'une classe Propriete 7.8. Les priorits Lorsque l'on associe plusieurs oprateurs, il faut que l'interprteur PHP sache dans quel ordre les traiter. Voici donc dans l'ordre dcroissant les priorits de tous les oprateurs : Priorit des oprateurs 1 () [] ~ 2 -- ++ ! / % 3 * + 4 5 < <= >= > 6 == != 7 & 8 ^ | 9 10 && 11 | | : 12 ? &= ^= 13 = += -= *= /= %= <<= >>= >>> = 14 AN D 15 XOR

| =

Tutorial PHP - MySQL 2012

Page 32

Master E-logistique

8. Les structures conditionnelles 8.1. Qu'est-ce qu'une structure conditionnelle ? On appelle les structures conditionnelles, les instructions qui permettent de tester si une condition est vraie ou non, c'est--dire si la valeur de son expression vaut 0 ou 1 (le PHP associe le mot cl true 1 et false 0). Ces structures conditionnelles peuvent tre associes des structures qui se rptent suivant la ralisation de la condition. On appelle ces structures des structures de boucle. 8.2. La notion de bloc Une expression suivie d'un point-virgule est appele instruction. Par exemple a++; est une instruction. Lorsque l'on veut regrouper plusieurs instructions, on peut crer ce que l'on appelle un bloc, c'est-- dire un ensemble d'instructions (suivies respectivement par des points-virgules) et comprises entre les accolades { et }. Les instructions if, while et for peuvent par exemple tre suivies d'un bloc d'instructions excuter. 8.3 L'instruction if L'instruction if est la structure de test la plus basique. On la retrouve dans tous les langages de programmation. Elle permet d'excuter une srie d'instruction si une condition est ralise. La syntaxe de cette expression est la suivante : if (condition ralise) { liste d'instructions } Remarque : la condition doit tre mise entre des parenthses.
Tutorial PHP - MySQL 2012

Page 33

Master E-logistique

il est possible de dfinir plusieurs conditions remplir avec les oprateurs ET et OU (&& et ||)

Ainsi par exemple: if ((condition1)&&(condition2)) teste si les deux conditions sont vraies . if ((condition1)||(condition2)) excutera les instructions si l'une ou l'autre des deux conditions est vraie. _ s'il n'y a qu'une instruction, les accolades ne sont pas indispensables. 8.4. L'instruction if ... else L'instruction if dans sa forme basique ne permet de tester que la ralisation d'une condition. Or la plupart du temps on aimerait pouvoir choisir les instructions excuter en cas de non ralisation de la condition. L'expression if ... else permet d'excuter une autre srie d'instruction en cas de non-ralisation de la condition. La syntaxe de cette expression est la suivante : if (condition ralise) { liste d'instructions } else { autre srie d'instructions (en cas de non-ralisation). } Exemple avec a=8 et b=3 : <?php $a = 8; $b = 3; if ($a < $b) { echo "a est plus petit que b"; }
Tutorial PHP - MySQL 2012

Page 34

Master E-logistique

else { echo "a n'est pas plus petit que b"; } ?>

8.5. L'instruction if ... elseif ... else Il est parfois ncessaire de tester plusieurs conditions de faon exclusive, c'est--dire que sur toutes les conditions une seule sera ralise ... L'expression if ... elseif ... else permet d'enchaner une srie d'instructions et vite d'avoir imbriquer des instructions if. La syntaxe de cette expression est la suivante: if (condition ralise) { liste d'instructions } elseif (autre condition ralise) { autre srie d'instructions } ... else (dernire condition ralise) {

Tutorial PHP - MySQL 2012

Page 35

Master E-logistique

srie d'instructions }

8.6. Une faon plus concise (oprateur ternaire) Il est possible de faire un test avec une structure beaucoup moins lourde grce la structure suivante, appele oprateur ternaire : (condition) ? instruction1 si vrai : instruction2 si faux Remarques : o la condition doit tre entre des parenthses. o lorsque la condition est vraie, l'instruction1 est excute. o lorsque la condition est fausse, l'instruction2 est excute. 8.7. L'instruction switch L'instruction switch permet de faire plusieurs tests de valeurs sur le contenu d'une mme variable. Ce branchement conditionnel simplifie beaucoup le test de plusieurs valeurs d'une variable. Cette opration aurait t complique (mais possible) avec des if imbriqus. Sa syntaxe est la suivante : switch (Variable) { case Valeur1: Liste d'instructions break; case Valeur1: Liste d'instructions break; case
Tutorial PHP - MySQL 2012

Page 36

Master E-logistique

Valeurs...: Liste d'instructions break; default: Liste d'instructions break; }

Les parenthses qui suivent le mot cl switch indiquent une expression dont la valeur est teste successivement par chacun des "case". Lorsque l'expression teste est gale une des valeurs suivant un case, la liste d'instruction qui suit celui-ci est excute. Le mot cl break indique la sortie de la structure conditionnelle. Le mot cl default prcde la liste d'instructions qui sera excute si l'expression n'est jamais gale une des valeurs. N'oubliez pas d'insrer des instructions break entre chaque test, ce genre d'oubli est difficile dtecter car aucune erreur n'est signale... 8.8. Les boucles Les boucles sont des structures qui permettent d'excuter plusieurs fois la mme srie d'instructions jusqu' ce qu'une condition ne soit plus ralise. On appelle aussi ces structures des instructions rptitives ou bien des itrations. La faon la plus commune de faire une boucle, est de crer un compteur (une variable qui s'incrmente, c'est--dire qui augmente de 1 chaque tour de boucle) et de faire arrter la boucle lorsque le compteur dpasse une certaine valeur. 8.9. La boucle for
Tutorial PHP - MySQL 2012

Page 37

Master E-logistique

L'instruction for permet d'excuter plusieurs fois la mme srie d'instructions. Dans sa syntaxe, il suffit de prciser le nom de la variable qui sert de compteur (et ventuellement sa valeur de dpart), la condition sur la variable pour laquelle la boucle s'arrte (par exemple une condition qui teste si la valeur du compteur dpasse une limite) et enfin une instruction qui incrmente (ou dcrmente) le compteur. La syntaxe de cette expression est la suivante : for (compteur; condition; modification du compteur) { liste d'instructions }

Par exemple: <?php for ($i=1; $i<6; $i++) { echo "$i<br>"; } ?>

Tutorial PHP - MySQL 2012

Page 38

Master E-logistique

Cette boucle affiche 5 fois la valeur de $i, c'est--dire 1, 2, 3, 4, 5. Elle commence $i=1, vrifie que $i est bien infrieur 6, jusqu' atteindre la valeur $i=6, pour laquelle la condition ne sera plus ralise. Alors la boucle s'interrompra et le programme continuera son cours. Notons que le langage PHP autorise la dclaration de la variable de boucle dans l'instruction for elle- mme ! Par exemple : <?php for ($i=0; $i<10; $i++) { echo "$i<br>"; } ?>

- Il faudra toujours vrifier que la boucle a bien une condition de sortie. - Une instruction echo dans votre boucle est un bon moyen pour vrifier la valeur du compteur pas pas en l'affichant !

Tutorial PHP - MySQL 2012

Page 39

Master E-logistique

- Il faut bien compter le nombre de fois que l'on veut faire excuter la boucle: o for ($i=0;$i<10;$i++) excute 10 fois la boucle ($i de 0 9). o for ($i=0;$i<=10;$i++) excute 11 fois la boucle ($i de 0 10). o for ($i=1;$i<10;$i++) excute 9 fois la boucle ($i de 1 9). o for ($i=1;$i<=10;$i++) excute 10 fois la boucle ($i de 1 10). 8.10. L'instruction while L'instruction while reprsente un autre moyen d'excuter plusieurs fois la mme srie d'instructions. La syntaxe de cette expression est la suivante : while (condition ralise) { liste d'instructions } Cette instruction excute la liste d'instructions aussi longtemps que (while en anglais) la condition est ralise.

La condition de sortie pouvant tre n'importe quelle structure conditionnelle, les risques de boucle infinie (boucle dont la condition est toujours vraie) sont grands. Une boucle infinie risque de provoquer un plantage du serveur. 8.11. Saut inconditionnel Il peut tre ncessaire de faire sauter la boucle une ou plusieurs valeurs sans pour autant mettre fin celle-ci. La syntaxe de cette expression est "continue;" (cette instruction se place dans une boucle). On l'associe gnralement une structure conditionnelle sinon les lignes situes entre cette instruction et la fin de La boucle ne serait jamais utilise.

Tutorial PHP - MySQL 2012

Page 40

Master E-logistique

Exemple: Imaginons que l'on veuille imprimer pour $x allant de 1 10 la valeur de 1/($x-7) ... Il est vident que pour $x=7 il y aura une erreur. Heureusement, grce l'instruction continue il est possible de traiter cette valeur part puis de continuer la boucle! <?php $x=1; while ($x<=10) { if ($x == 7) { echo "division par 0 <br>"; $x++; continue; } $a = 1/($x-7); echo "$a<br>"; $x++; } ?>

Tutorial PHP - MySQL 2012

Page 41

Master E-logistique

8.12. Arrt inconditionnel A l'inverse, on peut vouloir arrter prmaturment la boucle, pour une autre condition que celle prcise dans l'en-tte de la boucle. L'instruction break permet d'arrter une boucle (for ou while). Il s'agit, tout comme l'instruction continue, de l'associer une structure conditionnelle, sans laquelle la boucle ne ferait jamais plus d'un tour! Dans l'exemple prcdent, il serait possible de faire arrter la boucle en cas d'annulation du dnominateur, pour viter une division par zro. <?php for ($x=1; $x<=10; $x++) { $a = $x-7; if ($a == 0) { echo "division par 0 - arrt !"; break; } echo "1/$a<br>";
Tutorial PHP - MySQL 2012

Page 42

Master E-logistique

} ?>

8.13. Arrt d'excution du script PHP autorise l'utilisation de la commande exit, qui permet d'interrompre totalement l'interprtation du script, ce qui signifie que le serveur n'envoie plus d'informations au navigateur. Le script est arrt dans son tat. Cette instruction est particulirement utile lors de l'apparition d'erreurs 9. Les fonctions 9.1. La notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'excuter dans diffrentes parties du programme une srie d'instructions. Cela permet une simplification du code et donc une taille de programme rduite au minimum. 9.2. La dclaration d'une fonction
Page 43

Tutorial PHP - MySQL 2012

Master E-logistique

PHP recle de nombreuses fonctions intgres permettant d'effectuer des actions courantes. Toutefois, il est possible de dfinir des fonctions, dites fonctions utilisateurs, afin de simplifier l'excution d'instructions rptitives.

Contrairement de nombreux autres langages, PHP ncessite que l'on dfinisse une fonction avant que celle-ci puisse tre utilise, car pour l'appeler dans le corps du programme il faut que l'interprteur la connaisse, soit qu'il connaisse son nom, ses arguments et les instructions qu'elle contient. La dfinition d'une fonction s'appelle "dclaration" et peut se faire n'importe o dans le code. La dclaration d'une fonction se fait grce au mot-cl function, selon la syntaxe suivante : function Nom_de_la_fonction(argument1, argument2, ...) { liste d'instructions } Remarques : o Le nom de la fonction suit les mmes rgles que les noms de variables : - le nom doit commencer par une lettre. - un nom de fonction peut comporter des lettres, des chiffres et les caractres _ et &. Les espaces ne sont pas autoriss. - le nom de la fonction, comme celui des variables est sensible la casse (diffrence entre les minuscules et majuscules). o Les arguments sont facultatifs mais s'il n'y a pas d'arguments, les parenthses doivent rester prsentes. o Il ne faut pas oublier de refermer les accolades. Le nombre d'accolades ouvertes (fonction, boucles et autres structures) doit tre gal au nombre d'accolades fermes! La mme chose s'applique pour les parenthses, les crochets ou les
Tutorial PHP - MySQL 2012

Page 44

Master E-logistique

guillemets! Une fois la fonction dfinie, celle-ci ne s'excutera pas tant que l'on ne fait pas appel elle quelque part dans la page. 9.3. Appel de fonction Pour excuter une fonction, il suffit de faire appel celle-ci en crivant son nom (une fois de plus en respectant la casse) suivie d'une parenthse ouverte avec ventuellement des arguments puis d'une parenthse ferme :

Nom_de_la_fonction(); Remarques : _-le point virgule signifie la fin d'une instruction et permet l'interprteur de distinguer les diffrents blocs d'instructions. -si jamais vous avez dfini des arguments dans la dclaration de la fonction, il faudra veiller les inclure lors de l'appel de la fonction (le mme nombre d'arguments spars par des virgules). Nom_de_la_fonction(argument1, argument2); 9.4. Renvoi d'une valeur par une fonction La fonction peut renvoyer une valeur (et donc se terminer) grce au motcl return. Lorsque l'instruction return est rencontre, la fonction value la valeur qui la suit puis la renvoie au programme appelant (programme partir duquel la fonction a t appele). La syntaxe de l'instruction return est simple : return valeur_ou_variable; 9.5. Les arguments d'une fonction Il est possible de passer des arguments une fonction, c'est--dire lui fournir une valeur ou le nom d'une variable afin que la fonction puisse effectuer des oprations sur ces arguments.
Tutorial PHP - MySQL 2012

Page 45

Master E-logistique

Le passage d'arguments une fonction se fait au moyen d'une liste d'arguments (spars par des virgules) entre parenthses suivant immdiatement le nom de la fonction. Les arguments peuvent tre de simples variables, mais aussi des tableaux ou des objets. A noter qu'il est possible de donner une valeur par dfaut ces arguments en faisant suivre le nom de la variable par le signe "=" puis la valeur que l'on affecte par dfaut la variable. Lorsque vous voulez utiliser un argument dans le corps de la fonction en tant que variable, celui-ci doit tre prcd par le signe $.

<?php function hello($qui, $texte = 'Bonjour') { if(empty($qui)){ // $qui est vide, on retourne faux return false; else{ echo "$texte $qui"; // on affiche le texte return true; // fonction excute avec succs } } ?> Ainsi cette fonction peut tre appele de deux faons diffrentes : <?php // Passage des deux paramtres hello("cher ami", "Bienvenue"); // affiche "Bienvenue cher ami" // Utilisation de la valeur par dfaut du deuxime paramtre hello("cher ami"); // affiche "Bonjour cher ami" ?>
Tutorial PHP - MySQL 2012

Page 46

Master E-logistique

9.6. Travailler sur des variables Lorsque vous manipulerez des variables dans des fonctions, il vous arrivera de constater que vous avez beau modifier la variable dans la fonction, celle-ci retrouve sa valeur d'origine ds que l'on sort de la fonction. La raison se trouve dans la porte des variables, c'est--dire si elles ont t dfinies comme variables globales ou variables locales. Il existe plusieurs niveaux de dfinition de variables : -Une variable prcde du mot cl global sera visible dans l'ensemble du code, c'est--dire que sa porte ne sera pas limite la fonction seulement. Ainsi, toutes les fonctions pourront utiliser et modifier cette mme variable. -Le niveau static permet de dfinir une variable locale la fonction, qui persiste durant tout le temps d'excution du script. -Par dfaut, la variable possde le niveau local, c'est--dire que la variable ne sera modifi qu' l'intrieur de la fonction et retrouvera la valeur qu'elle avait juste avant l'appel de fonction la sortie de celleci. <?php $chaine = "Nombre de camions : "; function ajoute_camion($mode='') { global $chaine; static $nb=0; $nb++; // on incrmente le nombre de camions if($mode == "affiche"){ echo $chaine.$nb; // on affiche le nombre de camions } } ajoute_camion(); // nb == 1 ajoute_camion(); // nb == 2 ajoute_camion(); // nb == 3 ajoute_camion("affiche"); // affiche Nombre de camions : 4
?>

9.7. Passage de paramtre par rfrence


Tutorial PHP - MySQL 2012

Page 47

Master E-logistique

Une autre mthode pour modifier une variable consiste la faire prcder du caractre &, prcisant qu'il s'agit alors d'un alias. La valeur de la variable est modifie la sortie de la fonction. On parle alors de passage par rfrence. Dans ce cas on passe la rfrence (adresse mmoire) de la variable la fonction, ce qui permet de modifier sa valeur.

<?php function hello($qui, &$texte) { $texte = "Bienvenue $qui"; } $chaine = "Bonjour "; hello("cher ami",$chaine); echo $chaine; // affiche "Bienvenue cher ami" ?> 9.8. Retourner plusieurs variables Lorsque vous souhaitez qu'une fonction retourne plusieurs valeurs, le plus simple est d'utiliser un tableau.
Tutorial PHP - MySQL 2012

Page 48

Master E-logistique

<?php function nom_fonction() { ..... return array( $variable1, $variable2, $variable3 ); // on retourne les valeurs voulues dans un tableau } $retour = nom_fonction(); echo "$retour[0] - $retour[1] - $retour[2]"; ?> 9.9. La rcursivit Les fonctions rcursives sont des fonctions qui s'appellent elles-mmes. Ce type de fonction se rvle indispensable pour parcourir une arborescence par exemple. Voici un exemple. <?php function fonction_recursive($n=0) { $n++; echo "$n <br>"; if($n < 10){ // si n est infrieur 10 on continue fonction_recursive($n); } } fonction_recursive(); // affiche les nb de 1 10 ?> 9.10. Exemple final <html> <head> <title>Exemple de PHP</title> </head> <body>
Tutorial PHP - MySQL 2012

Page 49

Master E-logistique

<?php function moyenne($a, $b) { $media=($a+$b)/2; return $media; } echo moyenne(4,6),"<br>"; echo moyenne(3242,524543),"<br>"; ?> </body> </html>

10. Afficher du texte Le but de PHP est de permettre la cration de pages Web dynamiques, ainsi son but premier est de pouvoir envoyer des donnes au navigateur.
Tutorial PHP - MySQL 2012

Page 50

Master E-logistique

PHP fournit 3 fonctions permettant d'envoyer du texte au navigateur. Ces fonctions ont la particularit de pouvoir insrer dans les donnes envoyes des valeurs variables, pouvant tre fonction d'une valeur rcupre par exemple par l'excution d'un script ou aprs consultation d'une base de donnes. C'est ce qui rend possible la cration de pages dynamiques. Les 3 fonctions sont les suivantes : o echo o print o printf 10.1. La fonction echo La fonction echo permet d'envoyer au navigateur la chane de caractres (dlimite par des guillemets) qui la suit. La syntaxe de cette fonction est la suivante : echo Expression; L'expression peut tre une chane de caractres ou une expression que l'interprteur value echo "Chane de caractres"; echo (1+2)*87; Ainsi, tant donn que la chane de caractres est dlimite par des guillemets, l'insertion de guillemets doubles dans la chane provoquerait une erreur. C'est la raison pour laquelle les guillemets doubles, ainsi que tous les caractres spciaux, doivent tre prcds d'un backslash. Voici un rcapitulatif des caractres spciaux ncessitant l'ajout d'un backslash

Caractre \"

Description guillemet
Page 51

Tutorial PHP - MySQL 2012

Master E-logistique

\$ \\ \r \n \t

caractre $ barre oblique inverse (backslash) retour chariot retour la ligne tabulation

Le caractre $ a un rle particulier dans la mesure o l'interprteur le comprend comme une variable, ce qui signifie que lorsque le caractre $ est rencontr dans la chane qui suit la fonction echo, l'interprteur rcupre le nom de la variable qui suit le caractre $ et le remplace par sa valeur. Dans l'exemple suivant par exemple, on assigne la date actuelle une variable appele $madate, puis on l'affiche sur le navigateur: <html> <head> <title>Affichage de l'heure</title> <body> <?php // Rcupration de la date // et stockage dans une variable $MaDate = date("Y"); echo "<HTML>"; echo "Nous sommes en $madate"; ?> </body> <html> 10.2. La fonction print La fonction print est similaire la fonction echo la diffrence que l'expression afficher est entre parenthses. La syntaxe de la fonction print est la suivante : print(expression);

Tutorial PHP - MySQL 2012

Page 52

Master E-logistique

L'expression peut, comme pour la fonction echo, tre une chane de caractres ou une expression que l'interprteur value : print("chane de caractres"); print ((1+2)*87); 10.3. La fonction printf La fonction printf (emprunte au langage C) est rarement utilise car sa syntaxe est plus complexe. Toutefois, contrairement aux deux fonctions prcdentes, elle permet un formatage des donnes. Ce qui signifie que l'on peut choisir le format dans lequel une variable sera affiche l'cran. La syntaxe de printf est la suivante: printf (chane formate); Une chane formate est une chane contenant des codes spciaux permettant de reprer l'emplacement d'une valeur insrer et de son format (sa reprsentation). A chaque code rencontr doit tre associ une valeur ou une variable que l'on retrouve en paramtre la fin de la fonction printf. Les valeurs insrer dans la chane formate sont spares par des virgules et doivent apparatre dans l'ordre o les codes apparaissent dans la chane formate. Les codes de formatage des types de donnes sont les suivants : Code %b %c %d %e %f %o %s %x %X %% Type de format Entier en notation binaire Caractre cod par son code ASCII Entier en notation dcimale Type double (nombre virgule) au format scientifique (1.76e+3) Type double (nombre virgule) Entier en notation octale Chane de caractres Entier en notation hexadcimale (lettres en minuscules) Entier en notation hexadcimale (lettres en majuscules) Caractre %
Page 53

Tutorial PHP - MySQL 2012

Master E-logistique

Imaginons que l'on dfinisse une variable en virgule flottante afin d'obtenir une prcision de calcul plus grande qu'avec un entier mais qu'on dsire l'afficher en tant qu'entier. Dans ce cas la fonction printf prend toute son importance : <?php $Pi = 3.1415927; $R = 24.546; $Perimetre = 2 * $Pi * $R; printf ("Le primtre du cercle est %d",$Perimetre); ?> 10.4. Afficher un tableau On se servira une boucle pour afficher un tableau. On utilisera la fonction foreach(). Notons que cette fonction fait partie de PHP4. <?php $tableau = array('lehtml.com','PHP4','MySQL'); foreach ( $tableau as $contenu ){ print $contenu.'<br>'; } ?>

Tutorial PHP - MySQL 2012

Page 54

Master E-logistique

Tutorial PHP - MySQL 2012

Page 55

Master E-logistique

10.5. L'implantation du code PHP au sein du code Html Le code PHP peut tre aisment implant au sein du code Html. Cette caractristique n'est pas ngliger car le fait d'crire uniquement du code PHP l o il est ncessaire rend la programmation plus simple. Il est en effet plus facile d'crire du code Html que des fonctions echo ou print, dans lesquelles les caractres spciaux doivent tre prcds d'un backslash sous peine de voir des erreurs lors de l'excution. Un exemple parlant concerne les pages dynamiques dont l'en-tte est toujours le mme. Dans ce cas, le code PHP peut ne commencer qu' partir de la balise <body>, soit au moment o la page peut s'afficher diffremment selon une variable par exemple. Mieux, il est possible d'crire plusieurs portions de script en PHP, spares par du code Html statique car les variables ou fonctions dclares dans une portion de script seront accessibles dans les portions de scripts infrieures. Exemple : <html> <head> <title>Exemple de PHP</title> </head> <body> Partie de HTML normal. <br><br> <?php echo "Partie de PHP<br>"; for($i=0;$i<5;$i++) { echo "Ligne ".$i."<br>"; } ?> </body> </html>
Tutorial PHP - MySQL 2012

Page 56

Master E-logistique

11. Traiter les chanes de caractres Comme tout langage de programmation, PHP permet d'agir sur les chanes de caractres. Il propose cet effet de nombreuses fonctions. En voici quelques unes : Fonction strtolower() strtoupper() ucfirst() nl2br() htmlspecialshars () addslashes() stripslashes() ltrim() trim() Description Mise en minuscules Mise en majuscules Mise en majuscule de l'initiale Remplace le \n par <br> pour affichage Convertit les caractres html Fait prcder les caractres spciaux d'un \ Supprime les \ Supprime les espaces initiaux Supprime les espaces en dbut et fin 11.1 Remplacer un mot

Soit la phrase de dpart : $chaine = "Le PHP est un language de script."; Par la fonction str_replace(), on peut remplacer language par langage.
Tutorial PHP - MySQL 2012

Page 57

Master E-logistique

$chaine1 = str_replace("language","langage",$chaine) ; La mme chose est possible avec la fonction ereg_replace(). $chaine1 = ereg_replace("language","langage",$chaine) ;

11.2. Rechercher un mot On peut utiliser la fonction ereg ( mot recherch, chane). La recherche est sensible la casse. Exemple : <?php if( ereg('PHP',$chaine)) { print 'le mot PHP est bien dans la phrase'; } else{ print 'le mot n\'est pas prsent'; } ?> 11.3. Dcouper une chane La fonction split() scinde une chane en un tableau aprs lui avoir Fourni un sparateur.On dcoupe, par exemple, la chane avec comme sparateur l'espace. $resultat = split(" ",$chaine); Le rsultat obtenu est sous forme de tableau. Le tableau obtenu se prsente comme ceci : 0 Le 1 PHP 2 est 3 langage 4 de
Tutorial PHP - MySQL 2012

Page 58

Master E-logistique

5 script. 11.4. Vrifier si une variable est vide La fonction empty() vrifie si la variable est vide

if( empty($variable__verifier)) { print "La variable est vide"; } else{ print "c'est ok"; } Le contraire de empty() est la fonction isset() qui vrifie si la variable est attribue. if( isset($variable__verifier)) { print "OK) la variable est attribue"; } else{ print "la variable est vide"; } 12. Les variables d'environnement Les variables d'environnement sont, comme leur nom l'indique, des donnes stockes dans des variables permettant au programme d'avoir des informations sur son environnement. L'environnement, dans le cas du PHP est soit le serveur soit le client. Ces variables sont cres par le serveur chaque fois que le script PHP est appel. Le serveur les lui fournit en paramtres cachs lors de
Tutorial PHP - MySQL 2012

Page 59

Master E-logistique

l'excution de l'interprteur. Elles permettent notamment d'avoir des informations sur le type de serveur, son administrateur, la date laquelle le script a t appel, l'adresse IP et le type de navigateur du client. On peut donc classer les variables d'environnement en deux catgories: o les variables d'environnement dpendant du client o les variables d'environnement dpendant du serveur 12.1. Les variables d'environnement dpendant du client

Variable d'environnement $AUTH_TYPE

Description Il s'agit de la mthode d'authentification qui a t utilise par le client pour accder au script PHP. Localisation de l'interprteur de commandes sur la machine (Sous Windows). Type de donnes contenues dans le corps de la requte. Il s'agit du type MIME des donnes. Racine des documents sur le serveur. Adresse du script PHP en relatif ( partir de la racine du serveur). Types MIME reconnus par le serveur (spars par des virgules). Types d'encodage que le serveur peut raliser (gzip,deflate). Langue utilise par le serveur (par dfaut en-us). Type de connexion ouverte entre le client et le serveur (par exemple Keep-Alive). Nom d'hte de la machine du client (associe l'adresse URL de laIP). page qui a appel le script PHP. Cette variable permet d'avoir des informations sur le type de navigateur utilis par le client, ainsi que son systme d'exploitation.
Page 60

COMSPEC $CONTENT_TYPE $DOCUMENT_ROOT $DOCUMENT_URI $HTTP_ACCEPT $HTTP_ACCEPT_ENCODIN G $HTTP_ACCEPT_LANGUAG E $HTTP_CONNECTION $HTTP_HOST $HTTP_REFERER $HTTP_USER_AGENT

Tutorial PHP - MySQL 2012

Master E-logistique

$LAST_MODIFIED $PATH $PATH_INFO $PHP_SELF $REDIRECT_STATUS $REDIRECT_URL $QUERY_STRING

$REMOTE_ADDR REMOTE_PORT SCRIPT_FILENAME SCRIPT_NAME

Date et heure de dernire modification du fichier. Il s'agit du chemin d'accs aux diffrents rpertoires sur le serveur. Chemin d'accs au script PHP en relatif (de la racine du serveur jusqu'au script PHP. PHP). Nom du script Etat de la redirection (chec ou succs). L'URL vers laquelle le navigateur du client a t redirig. Il s'agit de la partie de l'URL (ayant servie accder au script PHP) situe aprs le point d'interrogation. C'est de cette manire que sont transmises les Cette variable l'adresse IP du donnes d'uncontient formulaire dans le client cas de la appelant le script mthode GET. CGI. Cette variable permet de savoir le port sur lequel la requte HTTP a t envoye au serveur Chemin d'accs complet au script PHP. Sous Windows, il sera de la forme: c:/php/php.exe Chemin d'accs relatif (par rapport au chemin d'accs la racine Web ($DOCUMENT_ROOT)) au script PHP.

12.2. Les variables d'environnement dpendant du serveur Variable d'environnement Description $DATE_GMT Date actuelle au format GMT. $DATE_LOCAL $DOCUMENT_ROOT $GATEWAY_INTERFACE $HTTP_HOST $SERVER_ADDR $SERVER_ADMIN $SERVER_NAME $SERVER_PORT
Tutorial PHP - MySQL 2012

Date actuelle au format local. Racine des documents Web sur le serveur. Version des spcifications CGI utilises par le serveur. Nom de domaine du serveur. Adresse IP du serveur. Adresse de l'administrateur du serveur. Nom donn au serveur en local. Numro de port associ au protocole HTTP sur le serveur.
Page 61

Master E-logistique

$SERVER_PROTOCOL $SERVER_SOFTWARE

Nom et version du protocole utilis pour envoyer la requte au script PHP. Type (logiciel) du serveur Web.

12.3. Affichage des variables d'environnement Il est possible de crer un script permettant d'afficher l'ensemble des variables d'environnement. La premire faon consiste utiliser la fonction phpinfo() qui affiche un tableau rcapitulatif des paramtres du serveur et de l'interprteur PHP, ainsi qu'un tableau des variables d'environnement. <?php phpinf o(); ?>

PHP fournit aussi la fonction getenv() permettant de retourner la valeur de la variable d'environnement passe en paramtre. <?php echo getenv("HTTP_USER_AGENT"); ?> Cette variable contient l'adresse IP du client appelant le script. <?php echo getenv("$REMOTE_ADDR"); ?> 13. Les fichiers
Tutorial PHP - MySQL 2012

Page 62

Master E-logistique

Vous pourrez tre amen travailler avec des fichiers texte pour y stocker des informations diverses pour votre site. Avec PHP, la cration ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions ddies l'utilisation des fichiers. 13.1. La fonction fopen() La fonction de base est la fonction fopen(). C'est elle qui permet d'ouvrir un fichier, que ce soit pour le lire, le crer, ou y crire. Voil sa syntaxe : fopen(nom_du_fichier, mode); Le mode indique le type d'opration qu'il sera possible d'effectuer sur le fichier aprs son ouverture. Il s'agit d'une lettre (en ralit une chane de caractres) indiquant l'opration possible : Mod Description e ouverture en lecture seulement. r w a r+ w+ a+ ouverture en criture seulement (la fonction cre le fichier s'il n'existe pas). ouverture en criture seulement avec ajout du contenu la fin du fichier (la fonction cre le fichier s'il n'existe pas). ouverture en lecture et criture. ouverture en lecture et criture (la fonction cre le fichier s'il n'existe pas). ouverture en lecture et criture avec ajout du contenu la fin du fichier (la fonction cre le fichier s'il n'existe pas).

Exemple d'ouverture du fichier monfichier.txt (situ dans le dossier www) en criture, en supprimant les donnes qu'il contient dj et d'criture dans le fichier. <?php $fichier = 'monfichier.txt'; $fp = fopen($fichier,'w'); fwrite($fp,"ici la phrase que vous souhaitez \n"); fclose($fp); ?>
Tutorial PHP - MySQL 2012

Page 63

Master E-logistique

Pour crire dans un fichier vous pouvez aussi utiliser la fonction fputs() qui fonctionne comme fwrite(). Un fichier ouvert avec la fonction fopen() doit tre ferm, la fin de son utilisation, par la fonction fclose() en lui passant en paramtre l'entier retourn par la fonction fopen(). 14. Les en-ttes HTTP 14.1. Les en-ttes HTTP Lors de chaque change par le protocole HTTP entre votre navigateur et le serveur, des donnes dtes d'en-ttes contenant des informations sur les donnes envoyer (dans le cas d'une requte) ou envoyes (dans le cas d'une rponse) sont cres. Les informations en question, gnralement sur une page Web ou une image, suivent ces en-ttes. Les en-ttes HTTP permettent aussi d'effectuer des actions sur le navigateur comme le transfert de cookies ou bien une redirection vers une autre page. Ces en-ttes sont les premires informations envoyes au navigateur (pour une rponse) ou au serveur (dans le cas d'une requte), elles se prsentent sous la forme : en-tte: valeur

La syntaxe doit tre rigoureusement respecte, c'est--dire qu'aucun espace ne doit figurer entre le nom de l'en-tte et les deux points (:). Un espace doit par contre figurer aprs celui-ci ! PHP fournit une fonction permettant d'envoyer trs simplement des enttes HTTP manuellement du serveur au navigateur (il s'agit alors d'une rponse HTTP).
Tutorial PHP - MySQL 2012

Page 64

Master E-logistique

La syntaxe de cette fonction est la suivante : header(chane en-tte HTTP) Etant donne que les en-ttes HTTP sont les premires informations envoyes, la fonction header() doit tre utilise avant tout envoi de donnes Html au navigateur (le script qui la contient doit donc tre plac avant la balise <html> et avant toute fonction echo(),print ou printf()). La fonction header() sera utilise, par exemple, pour rediriger le navigateur vers une nouvelle page : <?php header("location: http://www.lehtml.com/php/index.php"); ?> 14.2. Rcuprer les en-ttes de la requte Alors que la fonction header() permet d'envoyer des en-ttes HTTP au navigateur, PHP fournit une seconde fonction permettant de rcuprer dans un tableau l'ensemble des en-ttes HTTP envoyes par le navigateur. Voici la syntaxe de cette fonction : Tableau getallheaders(); Le tableau retourn par la fonction contient les en-ttes indexs par leur nom. Voici un script permettant par exemple de rcuprer des en-ttes particuliers. <?php $entetes = getallheaders; echo $entetes["location"]; ?>

15. La rcupration de donnes PHP rend trs simple la rcupration de donnes envoyes par l'intermdiaire de formulaires Html. 15.1. Cration d'un formulaire
Tutorial PHP - MySQL 2012

Page 65

Master E-logistique

Grce la balise <form> du langage Html, il est possible de crer des formulaires comprenant : o o o o o des champs de saisie des cases cocher des boutons radio des listes choix multiples ...

Pour utiliser un tel formulaire capable d'envoyer des informations un script PHP, il suffit de mettre le nom du fichier PHP qui rceptionnera les informations en tant que valeur de l'attribut action de la balise <form>. Voici ce quoi peut ressembler un formulaire en Html, permettant d'envoyer les coordonnes d'une personne un fichier PHP nomm test.php: <html> <head> <title>Formulaire</title> </head> <body> <form Method="GET" Action="test.php"> Nom : <input type=text size=20 name=nom><br> Prnom : <input type=text size=20 name=prenom><br> Age : <input type=text size=2 name=age><br> <input type=submit value=Envoyer> </form> </body> </html> Le rsultat de ce code est le suivant :

Tutorial PHP - MySQL 2012

Page 66

Master E-logistique

15.2. Rcupration et utilisation des donnes Lorsque l'on soumet un formulaire un fichier PHP, toutes les donnes des formulaires lui sont passes en tant que variables, c'est--dire chacun des noms associs aux champs (ou boutons) du formulaire prcds du caractre $. Ainsi, dans l'exemple prcdent, le fichier test.php reoit les variables: o $nom o $prenom o $age Si jamais un des champs du formulaire n'tait pas rempli, il possde la valeur "", c'est--dire une chane vide. Voici par exemple ce quoi pourrait ressembler le fichier test.php, dont le but est d'afficher les informations saisies par l'utilisateur l'cran, ainsi que de vrifier que tous les champs ont bien t correctement rempli. Voici le fichier test.php :

Tutorial PHP - MySQL 2012

Page 67

Master E-logistique

<html> <head> <title>Affichage des donnes d'un formulaire</title> </head> <body> <?php if (($nom=="")||($prenom=="")||($age=="")){ if($nom=="") print("Veuillez saisir votre nom !<br>\n"); if($prenom=="") print("Veuillez saisir votre prnom !<br>\n"); if($age=="") print("Veuillez saisir votre ge !<br>\n"); } else { echo "Rcapitulatif des informations saisies<br>\n <ul> <li>Nom : $nom</li> <li>Prenom : $prenom</li> <li>Age : $age</li> </ul> "; } ?> </body> </html>

Tutorial PHP - MySQL 2012

Page 68

Master E-logistique

16. La base de donnes MySQL La communication avec les bases de donnes se fait l'aide de requtes SQL, un langage de quatrime gnration reconnu par l'ensemble des systmes de base de donnes. 16.1. MySQL Dans le cas du binme Apache - PHP, c'est le systme de gestion de bases de donnes MySQL qui est gnralement utilis. MySQL est un systme de base de donnes gratuit et rapide, fonctionnant (entre autres) sous Linux. Etant donn que la majorit des serveurs Web (dont le fameux serveur Apache) fonctionnent sous Linux, MySQL est de ce fait le systme de base de donnes le plus utilis avec PHP.

16.2. La structure d'une base de donnes Une base de donnes contient une ou plusieurs table(s).
Tutorial PHP - MySQL 2012

Page 69

Master E-logistique

Une table contient plusieurs enregistrements.

Un enregistrement contient un ou plusieurs champs.

Un champ contient des donnes.

Tutorial PHP - MySQL 2012

Page 70

Master E-logistique

16.3. Les formats des donnes en MySQL Les donnes numriques : Les donnes numriques peuvent tre signes (signed) ou non signes (unsigned). Type de champ TINYINT SMALLINT MEDIUMINT INT BIGINT FLOAT Description Trs petit entier. Compris entre -128 et 127 en signed et entre 0 et 256 en unsigned. Petit entier. Compris entre -32 768 et 32 0767 en signed et entre 0 et 65535 en unsigned. Entier moyen. Compris entre -8 388 608 et 8 388 607 en signed et entre 0 et 16 777 Compris 215 en unsigned. Entier. entre 2 147 483 648 et 2 147 483 647 en signed et entre 0 et 4 294 967 295Compris en unsigned. Grand entier. entre -9 233 372 036 854 et 9 223 372 036 854 775 807 en signed entreflottante 0 et 18 446 744 073 709 551 L'intervalle 615 en Nombre et virgule en prcision simple. de validit va de unsigned. 3.402823466E+38 -38 -1.175494351E-38 en signed et entre 0 et de 1.175494351E 3.402823466E+38 en unsigned. . DOUBLE Nombre virgule flottante en prcision double. L'intervalle de validit va de -308 1.7976931348623157E+308 -2.2250738585072014E -308 en signed et entre 0 et +308 de 2.2250738585072014E 1.7976931348623157E en unsigned. Nombre virgule flottante sign. Les nombres sont enregistrs sous forme de chanes de caractres.
Page 71

DECIMAL

Tutorial PHP - MySQL 2012

Master E-logistique

Pour plus de prcisions, reportez-vous la documentation de MySQL. Les chanes de caractres : Type de champ CHAR(x) VARCHAR(x) TINYTEXT TEXT Description Chane de caractres de longueur fixe o x (compris entre 1 et 256) est le nombre decaractres caractres. Chane de de longueur variable o x (compris entre 1 et 256) est le Chane caractres maximum. nombrede de256 caractres.

Chane de 65 585 caractres maximum. MEDIUMTEXT Chane de 16 777 215 caractres maximum. Chane de 4 294 967 295 caractres maximum. LONGTEXT Pour plus de prcisions, reportez-vous la documentation de MySQL. 16.4. Les oprateurs de MySQL Les oprateurs arithmtiques : Oprateur + * / Description Addition Soustraction Multiplication Division

Les oprateurs de comparaison : Oprateur = != <= < >= < Description Egal Ingal Infrieur ou gal Infrieur Suprieur ou gal Suprieur

Les oprateurs logiques : Oprateur Description NOT ou | NON logique


Tutorial PHP - MySQL 2012

Page 72

Master E-logistique

OR ou || OU logique AND ou && ET logique

16.5. PhpMyAdmin PhpMyAdmin qui se prsente comme un site Web (en local), est un ensemble de scripts PHP permettant de grer aisment et visuellement MySQL sans devoir passer par l'apprentissage du langage SQL. PhpMyAdmin peut ainsi : o o o o o crer et supprimer des bases de donnes. crer, modifier et supprimer des tables. diter et ajouter des champs. insrer des donnes. grer de multiples utilisateurs avec des permissions diffrentes.

Tutorial PHP - MySQL 2012

Page 73

Master E-logistique

17. Crer une base de donnes 17.1. Crer une base de donnes avec PhpMyAdmin Pour la suite de l'apprentissage de MySQL, nous aurons besoin d'une base de donnes que nous allons crer par PhpMyAdmin. Crons la base de donnes base sur le serveur MySQL.

Dans cette base de donnes, nous allons crer la table liste. La table liste comportera 3 champs : - un index id, un entier qui servira de cl primaire. - un champ nom qui pourra contenir une chane de 50 caractres. - un champ email qui pourra contenir une chane de 70 caractres. Parmi les multiples possibilits offertes par PhpMyAdmin, retenons celle qui permet d'encoder les requtes SQL. CREATE TABLE liste ( id int NOT NULL auto_increment PRIMARY KEY, nom varchar(50) NOT NULL, email varchar(70) NOT NULL )

Tutorial PHP - MySQL 2012

Page 74

Master E-logistique

Ou tout simplement :

Insrons un enregistrement de donnes. INSERT INTO liste VALUES ('', 'Van Lancker Luc', 'vanlancker.luc@lehtml.com');

Tutorial PHP - MySQL 2012

Page 75

Master E-logistique

Ou tout simplement :

18. Se connecter la base de donnes 18.1. La connexion la base de donnes depuis PHP Pour pouvoir vous connecter depuis une page PHP votre base de donnes MySQL, il faudra spcifier plusieurs paramtres : o o o o l'hte (le serveur sur lequel MySQL est install). le login utilisateur. le mot de passe. le nom de la base de donnes.
Page 76

Tutorial PHP - MySQL 2012

Master E-logistique

Par dfaut, les paramtres mis en place par EasyPHP sont : o hte ou serveur : "localhost". o username ou login : "root". o mot de passe : "". La connexion au serveur MySQL s'effectue par la fonction msql_connect(). Sa syntaxe est : msql_connect ( 'hte', 'login', 'mot de passe' ) La fonction retourne TRUE si la connexion est russie et FALSE sinon. Il est possible d'interrompre le processus afin d'viter les erreurs en cascade. Deux mthodes permettent d'effectuer cette opration : Le stockage du rsultat de l'excution de la fonction dans une variable. Par exemple : $connect = mysql_connect('localhost','root','');

Tutorial PHP - MySQL 2012

Page 77

Master E-logistique

o L'utilisation de la fonction die() en cas d'erreur d'excution. Si la fonction retourne la valeur 0 (c'est--dire s'il y a une erreur) la fonction die() [traduisez meurt] renvoie un message d'erreur. La fonction die() est quivalente la fonction exit(). Par exemple : $connect = mysql_connect('localhost', 'root', '') or die("Erreur de connexion au serveur."); La connexion la base de donnes s'effectue par msql_select_db (nom de la base, identifieur de connexion). La fonction retourne aussi TRUE en cas de succs et FALSE en cas d'erreur. mysql_select_db('base", $connect) or die("Erreur de connexion la base"); Ainsi tous vos scripts utilisant MySQL commenceront par : $connect = mysql_connect('localhost','root','') or die ("erreur de connexion"); mysql_select_db('base',$connect) or die ("erreur de connexion base"); Comme tous vos scripts commenceront par les mmes lignes, il serait assez lgant de les inclure dans une librairie qu'il suffira d'appeler chaque script. Voici le script de librairie externe connexion.php : <?php $connect = mysql_connect('localhost','root','') or die ("erreur de connexion"); mysql_select_db('base',$connect) or die ("erreur de connexion base"); ?> Pour appeler cette librairie depuis le script, on ajoutera : include("connexion.php")

Tutorial PHP - MySQL 2012

Page 78

Master E-logistique

19. Afficher une table 19.1. Afficher le contenu d'une table Pour afficher le contenu d'une table, aprs s'tre connect la base, il faudra d'abord slectionner la table liste. Lorsque l'on effectue une requte de slection l'aide de la fonction mysql_query, il est essentiel de stocker le rsultat de la requte (les enregistrements de la table) dans une variable, que l'on peut nommer $result. $result = mysql_query("SELECT id,nom,email from liste"); Toutefois, cette variable contient l'ensemble des enregistrements demands et n'est donc pas exploitable telle quelle. Ainsi on utilise une autre fonction, la fonction mysql_fetch_array(), qui dcoupe les lignes de rsultat et les affecte une variable de type tableau associatif dans l'ordre o elles arrivent. L'affichage s'effectuera par une boucle qui va parcourir les lments du tableau. while ( $row = mysql_fetch_array($result)){ echo $row[id].' - '.$row[nom].' - '.$row[email].'<br>'; } Une fois le script termin, il est conseill de clore la connexion. mysql_close();

Tutorial PHP - MySQL 2012

Page 79

Master E-logistique

Le script complet devient : <?php $connect = mysql_connect('localhost','root','') or die ("erreur de connexion"); mysql_select_db('base',$connect) or die ("erreur de connexion base"); $result = mysql_query("SELECT id,nom,email from liste"); while ( $row = mysql_fetch_array($result)){ echo $row[id].' - '.$row[nom].' - '.$row[email].'<br>'; } mysql_close(); ?> On peut ainsi afficher notre table liste qui ne contiendra ce stade qu'un seul enregistrement.

20. Insrer des donnes


Tutorial PHP - MySQL 2012

Page 80

Master E-logistique

20.1. Insrer des donnes partir d'un formulaire Dans un site dynamique, il est intressant de prvoir la possibilit d'insrer des donnes en ligne. Soit un formulaire d'inscription :

<html> <head> <title>formulaire</title> <head> <body> Pour vous inscrire :<br> <form method="post" action="insert.php"> Nom : <input type="text" name="nom"><br> Email : <input tupe="text" name="email"><br> <input type="submit" name="submit" value="Insrer"> </form> </body> </html> La page d'insertion insert.php : <?php $connect = mysql_connect('localhost','root','') or die ("erreur de connexion"); mysql_select_db('base',$connect) or die ("erreur de connexion base"); mysql_query("INSERT INTO liste VALUES ('','$nom','$email') "); mysql_close(); ?>
Tutorial PHP - MySQL 2012

Page 81

Master E-logistique

Un petit dtour par PhpMyAdmin vous confirmera que l'enregistrement a bien t effectu. 21. Grer une base de donnes 21.1. Modifier un enregistrement La fonction update vous permet de modifier les enregistrements d'un ou plusieurs champs dans votre table. Le formulaire de modification :

<html> <head> <title>formulaire</title> <head> <body> Pour modifier votre mail :<br> <form method="post" action="modif.php"> Nom : <input type="text" name="nom"><br> Email : <input tupe="text" name="email"><br> <input type="submit" name="submit" value="Modifier"> </form> </body> </html> Le fichier modif.php : <?php $connect = mysql_connect('localhost','root','') or die ("erreur de connexion"); mysql_select_db('base',$connect)
Tutorial PHP - MySQL 2012

Page 82

Master E-logistique

or die ("erreur de connexion base"); mysql_query("UPDATE liste SET email=$email WHERE nom==$nom"); mysql_close(); ?> Un petit dtour par PhpMyAdmin vous confirmera que l'enregistrement a bien t modifi. 22.2. Supprimer un enregistrement Supprimer 1 seul enregistrement, on choisit l'id numro 1 <?php $connect = mysql_connect('localhost','root','') or die ("erreur de connexion"); mysql_select_db('base',$connect) or die ("erreur de connexion base"); mysql_query("DELETE FROM liste WHERE nom='Emile' "); mysql_close(); ?>

La clause where vous permet de choisir l'enregistrement que vous souhaitez supprimer, si vous n'utilisez pas cette clause, la table sera compltement vide de son contenu. L'instruction delete est donc manipuler avec attention ! Vous pouvez utilisez plusieurs instructions avec la clause where, par exemple. $req = MySQL_query("DELETE FORM liste WHERE nom =$nom AND email=$email "); 22.3. Trier une table Nous allons trier la table par ordre ascendant sur les noms des utilisateurs. Le rsultat sera affich dans un tableau Html. ORDER BY vous permet de choisir un ordre pour laffichage, en prcisant ASC vous aurez une sortie en ordre croissant, et avec DESC, la sortie sera
Tutorial PHP - MySQL 2012

Page 83

Master E-logistique

en ordre dcroissant. <html> <head> <title>Trier</title> <head> <body> <table border="1" cellpadding="0" cellspacing="0"> <tr> <th>Nom</th> <th>Email</th> </tr> <?php // Connexion au serveur $connect = mysql_connect('localhost','root','') or die ("erreur de connexion"); mysql_select_db('base',$connect) or die ("erreur de connexion base"); // Cration et envoi de la requte $result = mysql_query("SELECT nom,url FROM sites ORDER ASC BY nom"); // Rcupration des rsultats while($row = mysql_fetch_row($result)){ $Nom = $row[1]; $Email = $row[2];

echo "<tr>\n <td>$Nom</td>\n <td>$Email</td>\n </tr>\n"; } // Dconnexion de la base de donnes mysql_close(); ?> </tr> </table> </body> </html>
Tutorial PHP - MySQL 2012

Page 84

Master E-logistique

Dans l'exemple ci-dessus, on utilise la fonction mysql_fetch_row() qui est assez semblable la fonction mysql_fetch_array() mais cette fonction stocke les enregistrements non dans un tableau associatif mais dans un tableau index normal. 22. Conclusion Nous ne pouvons que reprendre ce qui avait t signal en introduction. Ce tutorial a dlibrment t conu comme une prsentation lmentaire des fonctionnalits des scripts PHP et de sa possibilit de connexion avec une base de donnes. La mise en uvre d'un site dynamique ncessitera n'en pas douter d'lments supplmentaires que vous trouverez sur le Web.

Tutorial PHP - MySQL 2012

Page 85

Tutorial PHP MySQL 2012 /2013

Page 86