Documente Academic
Documente Profesional
Documente Cultură
Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
PHP
Mourad Oudghiri
FSO - Dpartement Math-Info Mourad.Oudghiri@math.univ-lille1.fr
Novembre 2011
F.S.O
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
Au dbut de sa cration par Rasmus Lerdorf (1994), PHP signiait Personal Home Page. En 1997, le coeur de PHP a t redvelopp et est devenu labrviation de Hypertext Preprocessor. PHP est Open Source et gratuit PHP permet daccder facilement aux bases de donnes. PHP sexcute sur le serveur et renvoie le code HTML au client. Le code PHP est protg et ne peut pas tre vu par le client. PHP est un descendant du langage C.
F.S.O
Matriel et Logiciels
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
Serveur Web : Sous Linux : Serveur LAMP (Linux, Apache, MySQL, PHP) Sous Windows : WAMP (Windows, Apache, MySQL, PHP) Sous Mac : MAMP (Macintosh, Apache, MySQL, PHP) diteur : NeatBeans, Pspad, ou tout simplement un diteur de texte comme bloc-notes sous Windows et gedit sous Linux. Un navigateur : Mozilla, Internet Explorer, Opra, ...
F.S.O
Fonctionnement de WampServer
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
Une fois Wamp server est dmarr, une icne se place dans la barre des tches cot de lhorloge. Un clic permet : daccder la page localhost dans laquelle on trouve :
les versions de Apache, MySQL et PHP. un lien vers phpmyadmin qui permet de grer les bases de donnes. la liste des projets.
daccder directement phpmyadmin. daccder aux chiers log des erreurs gnres par Apache, MySQL et PHP. de dmarrer, darrter et de redmarrer Apache et MySQL.
F.S.O
Un site web est form par plusieurs chiers de diffrentes extensions (html, php, css, pdf, doc, jpg, ...) quon mette dans un seul rpertoire nomm par exemple MonSite. Il est impratif de placer le dossier MonSite dans le dossier www de Wampserver. LURL du site sera : http://localhost/MonSite. Les pages qui seront afches par dfault sont index.html, index.html. En labsence de toutes ces pages, le navigateur afche une page vide.
F.S.O
<html> <head> <title> Ma premire page en PHP </title> </head> <body> Aujourdhui : <?php print (Date("l F d, Y")); ?> </body> </html> Afchage : Wednesday November 16, 2011
Balises php Le code php doit tre mis entre une des balises suivantes : <?php print (Date("l F d, Y")); ?> <script language="php"> print (Date("l F d, Y")); </script> <? print (Date("l F d, Y")); ?> Syntaxe En php, chaque instruction se termine par un point virgule ;
Fonctions : print et echo : permettent dafcher lcran. Syntaxe : print(toto); et echo toto;. Date : retourne la date courante. Les paramtres l F d, Y dtermine le format de la date.
F.S.O
<html> <head> <title>Ma premire page en PHP</title> </head> <body> Aujourdhui : Wednesday November 16, 2011 </body> </html>
Le code source dune page php afche dans un navigateur ne contient aucune balise php. Un chier php ne peut pas souvrir directement par le navigateur.
F.S.O
Les commentaires
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
PHP permet dinsrer des commentaires qui naffectent pas linterprtation du script. Il existe deux type de commentaires : Commentaire de n de ligne : Il commence par // ou # et se termine automatiquement la n de la ligne. Commentaire en bloc : Il commence par /* et se termine par */. Lintrt principal est quon peut mettre plusieurs lignes en commentaire.
<?php //cette ligne ne sera pas afche # celle-l aussi /*Ce bloc sera lui aussi ignor */ ?>
F.S.O
Fonctions
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
Les fonctions (resp. procdures) regroupent des instructions rutilisables par simple appel de la fonction (resp. procdure).
function NomFonction (arg1, arg2, ..., argN){ Instruction1; Instruction2; . . . }
Diffrence entre fonction et procdure : Une fonction renvoie une valeur la n de son excution, cependant une procdure nen renvoie aucune.
//Exemple de procdure function division($x,$y){ print($x/$y); } // afche : 0.5
F.S.O
Variables
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
Une variable correspond une zone de mmoire tiquete par un nom et sert enregistrer une valeur. En php, une variable est reprsente par le signe $ suivi dun nom, commenant par une lettre (a-z,A-Z) ou un soulign (_), suivi de lettres, chiffres ou souligns. Elle reoit une valeur avec loprateur daffectation =. PHP nexige pas une dclaration explicite du type dune variable. Le type sera dtermin aprs laffectation dune valeur.
$nom=toto; $AnnNaiss=1983; $nom : type chane de caractres $AnnNaiss : type entier
Types de variables integer : entier positif ou ngatif. double : nombre virgule ottante : 1.23, 0.123e1, 12.3e-1. string : chane de caractres. boolean : boolenne (TRUE,FALSE).
F.S.O
PHP change dynamiquement le type dune variable lorsque son contenu change.
$AnnNaiss=Avrile 1983; gettype($AnnNaiss) retourne string
Autres fonctions Les fonctions suivantes retournent une valeur boolenne en comparant le type recherch celui de la variable : is_integer($var), is_double($var), is_string($var), is_bool($var), is_array($var), is_null($var). Conversion de type La fonction (type_voulu)$var permet de convertir la valeur de $var dans le type type_voulu. Le paramre type_voulu prend les valeurs : integer, double, string, bool.
F.S.O
isset($var) Elle retourne false si la variable $var nest pas initialis ou possde la valeur null, et true dans le cas contraire.
$var1=null; $var2=0; isset($var1) retourne 0 isset($var2) retourne 1
empty($var) Elle retourne true si la variable $var nest pas initialis ou possde la valeur null ou 0, et true dans le cas contraire.
empty($var1) et empty($var2) retournent 1
F.S.O
Affectation
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
Affectation par valeur Linterprteur PHP cre la variable $a. Puis il affecte la valeur de $a la variable $b. Par la suite, si la valeur de $a est modie, celle de $b restera inchange. Affectation par rfrence Avec loprateur de rfrence &, $b devient un alias de la variable $a. Les deux variables pointent alors vers la mme section de mmoire, et donc sur le mme contenu. Ainsi toute modication apporte lune des deux variables est rpercute dans lautre.
<?php $a=3; $b=$a; $a=10; echo $b=.$b.<br>; echo $a=.$a; //Rsultat : $b=3 $a=10 ?> <?php $a=3; $b=&$a; echo $b=.$b.<br>; $a=10; echo $a=.$a.<br>; echo $b=.$b; //Rsultat : $b=3 $a=10 $b=10 ?>
F.S.O
Variable locale Une variable dclare dans une fonction a une porte locale cette fonction. Elle nest pas accessible en dehors de la fonction. Variable globale Toute variable dclare dans le code en dehors, et avant, toute fonction, ou structure de contrle, a une porte globale. Son appel dans une fonction se fait en utilisant le mot-cl global. Variable statique An dempcher quune variable locale dune fonction soit rinitialise, on la dclare statique. Ainsi, la variable conserve sa valeur dun appel lautre de la fonction.
F.S.O
<?php //Script 1 $a =2; function teste(){ $a = 7; echo $a.<br>; } teste(); echo $a; //Ce code afche : 7 2 ?>
<?php //Script 2 $a =2; function teste(){ global $a; echo $a.<br>; $a++; } teste(); echo $a; //Ce code afche : 2 3 ?>
<?php //Script 3 function teste(){ static $i = 0; $i++; echo $i.<br>; } teste(); teste(); //Ce code afche : 1 2 ?>
F.S.O
Script 1 : 7 reprsente la valeur de $a dans la fonction teste(), cependant 2 est la valeur de $a en dehors de la fonction teste(). Script 2 : La variable $a conserve sa valeur 2, affecte au dbut du script, dans la fonction teste(). Lappel de la fonction incrmente de 1 la valeur initiale de $a. Script 3 : Le premier appel de la fonction teste() incrmente de 1 la valeur de la variable statique $i. La nouvelle valeur est conserve et sera incrment lors du deuxime appel de la fonction.
Transmission de paramtres par valeur <?php Le contenu de la variable $a na pas t function teste($a, $b=2){ $a *=$b; modi aprs lappel de la fonction teste(). } En effet, le code cre dabord la variable $a=5; teste($a); globale $a et lui affecte la valeur 5. Lappel echo $a; de la fonction teste() produit la cration //Rsultat : 5 dune nouvelle variable $a dune porte ?> locale et possdant la valeur 5 de la variable globale $a. Le changement de valeur de $a dans la fonction naffectera pas celle de la variable globale $a. Transmission de paramtres par rfrence Il consiste passer en paramtre une rfrence qui pointe sur la variable dorigine. Ainsi, toute modication de la valeur de $a dans la fonction se rpercutera sur celle de la valeur dorigine. Pour indiquer quun paramtre est pass par rfrence, on le prcde par &.
<?php function teste($a, $b=2){ $a *=$b; } $a=5; teste(&$a); echo $a; //Rsultat : 10 ?>
F.S.O
Les constantes
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
Une constante est un identiant qui reprsente une valeur qui ne peut jamais subir des modications durant lexcution du script. Le choix du nom dune constante suit les mme rgles que celui dune variable. Par convention, le nom dune constante est toujours en majuscule.
F.S.O
Les tableaux
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
En PHP, un tableau est une association ordonne de valeurs des cls. Il existe deux manires de dnir un tableau : tableau array La syntaxe crochets
$person= array( "nom" => "toto", "AnnNaiss" => "1983") echo $person["nom"]; Afchage : toto $person["nom"] = "toto"; $person[] = "1983"; //la cl attribue 1983 sera 0 echo $person[0]; Afchage : 1983
Tableau multidimensionnel
$tab = array( "a1" => array("a11" => "cel 11", "a12" => "cel 12"), "a2" => array("a21" => "cel 21", "a22" => "cel 22")); print($tab[a2][a21]); // Afchage : cel 21
extract($tab) cre les variables dont les noms sont les cls et leur affecte la valeur associe.
F.S.O
$tab= array(prenom => ali, nom => yousse); extract($tab); echo "$prenom $nom";// afche "ali yousse "
count($tab) : retourne le nombre dlments affects current($tab) : retourne la valeur de llment en cours key($tab) : retourne la cl de llment en cours next($tab) : dplace le pointeur llment suivant prev($tab) : dplace le pointeur llment prcdent reset($tab) : dplace le pointeur au premier lment sort(,$tab) : trie les lments du tableau selon lordre alpha-numrique et raffecte les cls (0, 1, ...) asort(,$tab) : trie les lments du tableau selon lordre alpha-numrique en conservant les cls rsort(,$tab) : mme fonction que sort mais inverse lordre arsort(,$tab) : mme fonction que asort main inverse lordre ksort(,$tab) : trie par valeur de cl krsort$tab) : mme fonction que ksort mais inverse lordre
F.S.O
array_push($tab,v1,v2,...,vN) Elle permet de rajouter les valeurs v1,v2,...,vn la n du tableau $tab. Pour les rajouter au dbut du tableau, on utilise la fonction array_unshift.
$tab1 = array(0 => a,1 => b,2 => c, dd => d, ee => e); array_push($tab1,h,k) retourne array(0 => a,1 => b,2 => c, dd => d, ee => e, 3 => h, 4 => k)
array_pop($tab) Elle supprime le dernier lment du tableau et retourne cet lment sil existe ou la valeur null dans le cas contraire. Pour supprimer le premier lment on utilise la fonction array_shift($tab).
print(array_pop($tab1)) imprime e et retourne $tab1 = array(0 => a,1 => b,2 => c, dd => d);
unset($tab[$c])
F.S.O
Extraction et fusion
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
array_slice($tab,$d,$l) Elle extrait la partie du tableau de taille $l et commenant par llment la position $d. Si $d est ngatif, le compte du premier lment se fait partir de la n. Si $l est ngatif, le tableau extrait commence par llment la position $d et se termine par llment la position $l-1.
$tab1 = array(0 => a,1 => b,2 => c, dd => d, ee => e); $tab2 = array(a,b,c,d,e); array_slice($tab1,2,2) retourne array(0=>c,dd => d) array_slice($tab2,-2,2) retourne array(0=>d,1 => e) array_slice($tab2,2,-2) retourne array(0=> c)
array_merge($tab1,$tab2,...,$tabN) Elle retourne un tableau o sont rassembles les valeurs des tableaux, passs en paramtres. Si les tableaux ont des cls en commun, la dernire valeur rencontre crasera lancienne.
$tab1 = array(2 => a, bb => b); $tab2 = array(c, d); $tab3= array(ee => e, bb => f); array_merge($tab1,$tab2,$tab3) retourne array(0=>a,bb=>f,1=>c,2=>d,ee=>e)
F.S.O
Chane de caractres
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
Une chane de caractres est une suite de caractres contenus entre des guillemets simples () ou doubles ("). $nom ="toto"; $prenom=tati; Pour inclure un guillemet simple (resp. double) dans une chane dlimite par des guillemets simples (resp. double) il faut le prcder par un antislash \. $nom =M\hamed; Si une chane dlimite par des guillemets doubles contient une variable, alors celle-ci est value. $nom="toto"; echo "Je mappelle $nom"; Rsultat : Je mappelle toto
F.S.O
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
Une chane de caractres peut se voir comme un tableau dont chaque lettre est un lment.
$chaine="abcd"; for($i=0;$i<strlen($chaine);$i++){ print("Lettre dindice $i est : $chaine[$i] <br>"); }
Lettre dindice 0 est : Lettre dindice 1 est : Lettre dindice 2 est : Lettre dindice 3 est :
a b c d
F.S.O
strlen($ch) Elle retourne le nombre de caractres dans la chane $ch. strlen("abcd") retourne 4 strtolower($ch) Elle retourne la chane $ch avec toutes les caractres en miniscule. strtolower("MySql Php") retourne "mysql php" strtoupper($ch) Elle retourne la chane $ch avec toutes les caractres en majuscule. strtoupper("MySql Php") retourne "MYSQL PHP" ucwords($ch) Elle retourne la chane avec toutes les initiales des mots qui la composent en majuscules. ucwords("mySql php") retourne "MySql Php"
F.S.O
ucrst($ch) Elle retourne la chane avec la premire lettre en majuscule. ucrst("mySql php") retourne "MySql php" Fonctions : ltrim($ch,$l), rtrim($ch,$l) et trim($ch,$l) Ces trois fonctions suppriment de la chane $ch une liste de caractres dnis dans $l. ltrim agit sur le dbut de la chane $ch : ltrim("b .e abc.de . b e"," .be") retourne "abc.de . b e" rtrim agit sur la n de la chane $ch : rtrim("b .e abc.de . b e"," .be") retourne "b .e abc.d" trim agit sur le dbut et la n de la chane $ch : trim("b .e abc.de . b e"," .be") retourne "abc.d" En labsence du paramtre $l, uniquement les espaces vides seront crass.
F.S.O
addslashes($ch) Elle rajoute le caractre dchappement \devant les caractres spciaux : Guillemet , double guillemets ", antislash \, le caractre null (espace). addslashes("Mhamed\Nagy") retourne "M\hamed\\Nagy" htmlspecialchars($ch) htmlspecialchars($ch) remplace certains caractres spciaux dans $ch par leurs quivalents en HTML : &, ", , <, >.
htmlspecialchars("<a href=mapage>Tome & Jerry</a>") "<a href=mapage>Tome & Jerry</a>"
retourne
F.S.O
strstr($ch,$ch1) Elle recherche $ch1 dans $ch. Selle est prsente, la fonction retourne la portion de $ch allant de la premire occurence de $ch1 jusqu la n de $ch; sinon elle ne renvoie rien. La recherche est sensible la casse. Pour effectuer une recherche ne tenant pas compte de la casse, on utilise la fonction stristr($ch;$ch1). strstr(abcdabcd,bc) retourne bcdabcd strrchr($ch, $l) Elle retourne la portion de $ch commenant partir de la dernire occurrence de $l. strrchr("a%c a%dea%fg","a%") retourne a%fg
F.S.O
substr($ch,$n,$l) Elle retourne la portion de $ch de longueur $l qui commence au caractre $n. Cas $n ngatif : la portion commence au caractre numro $n compter de la n de $ch. Cas $l ngatif : la portion se termine au caractre numro -$l-1. Cas dabsence de $l : la portion se termine la n de $ch.
substr("abcdefgh","1","2") retourne "bc" substr("abcdefgh","-5","3") retourne "def" substr("abcdefgh","1","-2") retourne "bcdef" substr("abcdefgh","-5","-3") retourne "de"
F.S.O
substr_count("abcdabefabgh","ab") retourne 3
str_replace($ch1,$r,$ch) Elle retourne une chane dont toutes les occurrences de $ch1 dans $ch sont remplaces par $r.
str_replace("ab","%","abcdabefabgh") retourne "%cd%ef%gh"
Chanes et tableaux explode($sep,$ch) : retourne un tableau dont les lments sont les portions de $ch spares par $sep.
F.S.O
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
Expressions Une expression est forme par des constantes et des variables relis par des oprateurs. $x = $y + 5 : est une expression obtenue en appliquant loprateur + aux oprandes $y et $5. En PHP, il existe deux type doprateurs arithmtiques : Oprateurs binaires Ils porte sur deux oprandes : +, -, /, *. PHP dispoe aussi de loprateur modulo % : $a%$b retourne le reste de la division de $a par $b. Oprateurs unaires Ils font intervenir un seul oprande : -$a retourne loppos de $a.
F.S.O
Oprateur daffectation
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
Laffectation est lopration dattribuer une valeur une variable. Elle se fait avec loprateur =. Exemple : $x = 2. Il est impratif que loprande gauche soit une variable. Le membre droit peut tre une constante, une variable, ou une expression quelconque : $y=$x+2. Laffectation est une expression qui possde une valeur gale celle de son membre droit : lexpression $x = 2 a la valeur 2. loprateur daffectation possde une associativit de droite gauche : lexpression $z = $x = 2 signie que $x = 2 sera dabord value, et puis sa valeur sera attribue $z. Oprateur += -= *= /= %= Syntaxe a += b a -= b a *= b a /= b a %= b Signication a =a+b a =a-b a =a*b a = a /b a =a% b
F.S.O
En Java, il existe deux oprateurs unaires ++ et -- qui permettent respectivement dincrmenter et de dcrmenter de 1 la valeur dun oprande de type numrique. Oprateurs de post-incrmentation et post-dcrmentation La valeur de lexpression de post-incrment $x++ (resp. post-dcrment $x--) est celle de loprande $x. Cette expression a pour effet de bord lincrmentation (resp. la dcrmentation) de la valeur $x. Oprateurs de pr-incrmentation et pr-dcrmentation La valeur de lexpression de pr-incrment ++$x (resp. pr-dcrment --$x) est celle de loprande $x aprs incrmentation (resp. dcrmentation).
$i=1; print($i++); // afche la valeur 1 et puis incrmente de 1 print($i);// afche la valeur 2 print(++$i);// afche la valeur 3
F.S.O
Oprateurs de comparaison
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
PHP dispose des oprateurs qui permettent de comparer des expressions. Le rsultat retourn est lune des deux valeurs boolennes : TRUE ou FALSE. Les oprateurs de comparaisons dexpressions arithmtiques. Oprateur signication < infrieur strictement > suprieur strictement <= infrieur ou gale >= suprieur ou gale Les oprateurs suivants sappliquent tous les types de variables. Oprateur signication == gale != diffrent <> diffrent
F.S.O
Oprateurs logiques
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
PHP dispose doprateurs logiques avec lesquels on peut former des expressions de valeur boolenne. Oprateur Ngation Et binaire Et logique Ou binaire Ou logique Ou exclusif Syntaxe !A A && B A&B A || B A|B AB
Valeur retourne retourne true lorsque A est fausse, et false dans le cas contraire retourne true uniquement lorsque A et B sont vrais. A et B sont toujours values retourne true uniquement lorsque A et B sont vrais. B nest value que si A est vraie retourne true lorsquau moins A ou B est vrai. A et B sont toujours values retourne true lorsquau moins A ou B est vrai. B nest value que si A est fausse retourne true uniquement lorsque un et un seul des oprandes A et B est vrai
F.S.O
Oprateur conditionnel
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
Il sagit de loprateur ternaire ? : . Syntaxe : expr1 ? expr2 : expr3 Cette expression est value expr2 si expr1 est valu TRUE, et expr3 si expr1 est valu FALSE.
$i=5; echo $i%2==0 ? pair : impair;// afche impair
F.S.O
Oprateur de concatnation
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
PHP dispose de deux oprateurs de concatnations de chanes de caractres : Oprateur . Il retourne la concatnation de ces deux arguments essentiellement de type string.
$nom = "yousse"; $prenom = "Kamal"; echo "Vous vous appelez : ".$nom." ".$prenom; //afche Vous vous appelez : yousse Kamal
F.S.O
Ce code produit un message derreur qui correspond la division par 0. Pour viter lafchage des messages derreur de PHP dans le navigateur, il suft de prcder lappel dune fonction par le caractre @. Ainsi, si on remplace print par @print dans ce code, aucun message derreur ne sera gnr.
$a=5; $b=0; print($a/$b); // Rsultat : Warning: Division by zero $a=5; $b=0; @print($a/$b); // Rsultat :
F.S.O
Instruction
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
Instruction Une instruction correspond toujours une action mener et se termine par un point-virgule. Bloc Par un bloc on dsigne une suite dinstructions places entre accolades. En PHP, les instructions sexcutent lune aprs lautre. Pour chapper cette rgle, PHP fournit les instructions de contrle qui dnissent lordre dexcution. On en distingue deux types : Instructions de contrle qui permettent deffectuer un choix : if ... else et switch. Instructions de contrle pour raliser des boucles : do ... while, while et for.
F.S.O
Instruction If
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
Linstruction If possde la syntaxe suivante : if(condition1) instruction1 elseif(condition2) instruction2 else instruction3
$nombre=5.4; if($nombre>0) echo $nombre." est positif"; elseif($nombre<0) {echo $nombre." est ngatif";} else echo $nombre. "est nul";
conditions 1 et 2 sont des expressions valeurs boolennes else et elseif sont facultatifs les instructions 1, 2 et 3 peuvent tre simples ou des blocs
F.S.O
Instruction switch
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
Linstruction switch commence par rechercher la premire constante gale la valeur de lexpression. La liste dinstructions correspondante est excute, et puis celles correspondantes aux constantes suivantes sont galement excutes jusqu la rencontre de la premire instruction break. Celle-ci demande de sortir du bloc et donc termine lexcution de linstruction switch. On peut remplacer les constantes par des variables. Linstruction default est facultative. Elle sert traiter tous les cas non prciss dans la liste "case".
F.S.O
Instruction switch
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
$i=6; switch ($j ){ case 1 : case 2 : case 3 : case 4 : case 5 : case $i : case 7 : Default : }
print("jour ".$j." : $j++; print("jour ".$j." : --$j; print("jour ".$j." : print("jour ".$j." : break ;
print("jour ".$j." : Samedi<br>"); break; print("jour ".$j." : Dimanche<br>"); print("jour ".$j." inconnu<br>");
$j=1 produit : jour 1 : Lundi jour 2 : Mardi jour 1 : Mercredi jour 1 : Jeudi
F.S.O
Instruction while
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
Sa syntaxe est : while (condition) liste dinstructions la condition, qui est valeur boolenne, est dabord value. Si elle vaut true, les instructions sont excutes. Dans le cas contraire, lexcution de while sarrte.
//script pour dcomposer un entier non nul //en produit de nombres premiers. $n= -35699290; print("n = ".$n." = "); if($n <0){ print ("-"); $n=-$n; } print("1"); $k=2; while ($n!=1 & $n !=0){ if($n%$k ==0){ print ("*".$k); $n /=$k; } else{ $k++; } }
? False
condition
Fin de while
True ?
Instructions
F.S.O
Contrairement linstruction while, la liste dinstructions correspondant do ... while est dabord excute, puis la condition est value : selle vaut true le processus recommence, sinon lexcution sarrte. Sa syntaxe est : do liste dinstructions while (condition);
//calcul de pgcd de deux entiers. $n=44730; $m=622125; if($n>$m){ $p=$n; $q=$m; } else{ $p=$m; $q=$n; } do{ $r=$p%$q; $p=$q; $q=$r; } while ($r != 0); print("le pgcd de ".$m." et ".$n." vaut ".$p);
? Instructions
?
True
liste dinstructions est toujours excute au moins une fois indpendamment de la valeur de la condition.
F.S.O
Instruction for
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
Sa syntaxe est : Expression 1 : peut comfor( Expression 1; Expression porter plusieurs expressions, 2; Expression 3){ spares par des virgules, de Liste dinstructions dclarations de variables } quon initialise (compteurs). Elle est value une seule fois avant dentrer dans la boucle. Expression 2 : forme par une seul expression boolenne qui conditionne la poursuite de la boucle. Expression 3 : peut contenir plusieurs expressions, spares par des virgules, dincrmentation. Elle est value la n de chaque parcours. //Afche : for($i=2,$j=2;$i <5;$i++,$j+=$i){ 2*2 vaut 4 $k=$i*$j; 3*5 vaut 15 print($i."*".$j." vaut ".$k."<br>"); } 4*9 vaut 36
F.S.O
Instruction foreach
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
A chaque itration, la valeur de llment courant est affecte $value et le pointeur interne du tableau est avanc dun lment.
$person = array( "nom" => "toto", "AnnNaiss" => "1983"); foreach($person as $v ){ echo $v.<br>; } // Afche : // toto // 1983
A chaque itration, la valeur de la cl et la valeur de llment courant sont affectes respectivement $key et $value, et le pointeur interne du tableau est avanc dun lment.
$person = array( "nom" => "toto", "AnnNaiss" => "1983"); foreach($person as $k => $v ){ echo $k. : .$v.<br>; } // Afche : // nom : toto // AnnNaiss : 1983
F.S.O
Instruction Break
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
Elle est utilis essentiellement dans linstruction switch et les boucles while et for. Il permet de sortir de la boucle et passer linstruction suivante :
for($i=0;$i <=4;$i++){ print ("i = ".$i."<br>"); if($i==2) break; } print ("Fin de la boucle "); Afche : i=0 i=1 i=2 Fin de la boucle
Break accepte un paramtre qui indique de combien de niveaux remonter si plusieurs boucles sont imbriques.
$i=1; print("i j k<br>"); while ($i <4){//boucle i for($j=1;$j <4;$j++){//boucle j for($k=1;$k <4;$k++){//boucle k print($i.$j.$k."<br>"); if($k ==2){ echo "k=".$k.":je sors des boucles k,j<br>"; break 2 ;} if($i==3){ echo "i=".$i.":je sors des boucles k,j,i<br>"; break 3;} } } $i++; }
Afche : ijk 111 112 k = 2 : je sors des boucles k et j 211 212 k = 2 : je sors des boucles k et j 311 i = 3 : je sors des boucles k, j, i
F.S.O
Instruction continue
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
Elle permet de sauter les instructions situes jusqu la n de la boucle, et de passer litration suivante.
for($i=0;$i <=4;$i++){ if($i==2) { echo "je saute i=".$i."<br>"; continue; } print ("i = ".$i."<br>"); } Afche : i=0 i=1 je saute i=2 i=3 i=4
Linstruction continue accepte un paramtre qui indique de combien de niveaux remonter si plusieurs boucles sont imbriques.
$i=1; print("i j k<br>"); while ($i <4){//boucle i for($j=1;$j <4;$j++){//boucle j for($k=1;$k <4;$k++){//boucle k if($k ==2){ print("k = ".$k." : je saute ".$i.$j.$k." et $i ->".++$i."<br>"); continue 2 ; } print($i.$j.$k."<br>"); } } $i++; }
Afche : ijk 111 k = 2 : je saute 112 et $i ->2 221 k = 2 : je saute 222 et $i ->3 331 k = 2 : je saute 332 et $i ->4
F.S.O
Formulaire
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
Les formulaires assurent une interactivit entre linternaute et le serveur. Les donnes saisies et valides dans la page html sont envoyes au serveur en utilisant une des mthodes suivantes : Mthode Get : les donnes du formulaire seront codes dans lURL et spares de ladresse par (?). Mthode Post : les donnes du formulaire seront envoyes dans le corps de la requte. Lattribut action permet spcier le chier qui traiter, dans le serveur, donnes saisies dans le mulaire. de va les for<form method="post" action="chier.php"> <input type= "text" name="login"> <br> <input type= "password" name= "pass"> <br> <input type= "submit"> <br> </form>
Les donnes envoyes au serveur sont contenues dans des tableaux associatifs, dits superglobaux, appels $_POST et $_GET, selon la mthode choisie. Les cls de ces tableaux sont les noms associs aux champs par lattribut name.
F.S.O
Exemple de formulaire
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
<! Fichier index.html > <html> <head> <title></title> </head> <body> <form method="post" action="chier.php"> Nom : <input type="text" name="nom"></input></br> Prnom : <input type="text" name="prenom"></input></br> Civilit : <select name="civilite"> <option value="M.">Monsieur</option> <option value="Mme">Madame</option> <option value="Mlle.">Mademoiselle</option> </select></br> Password : <input type="password" name="pass"></input></br> Loisirs : <textarea name="loisirs"></textarea></br> <input type="submit" value="Valider"></input> </form> </body> </html>
Formulaire
Validation > Votre nom est M. yousse khalid Votre mot de passe est : a1b2 Vos loisirs : sport, voyage, lecture
F.S.O
<! Fichier chier.html > <html> <head><title>Donnes du Formulaire</title></head> <body> Votre nom est <?php echo $_POST[civilite]. .$_POST[nom]. .$_POST[prenom];?></br> Votre mot de passe est : <?php echo $_POST[pass] ?></br> Vos loisirs : <?php echo $_POST[loisirs] ?> </body> </html>
Certains lments de formulaire peuvent accepter plusieurs valeurs comme le cas des cases cocher et les liste choix multiples. Lensemble des valeurs dun tel lment est envoy au serveur sous forme de tableau.
<! index.html > <form action="chier.php" method="post"> Cochez vos loisirs :<br> Lecture <input type="checkbox" name="loisirs[]" value="Lecture"><br> Voyage <input type="checkbox" name="loisirs[]" value="Voyages"><br> Sport<input type="checkbox" name="loisirs[]" value="Sport"><br> Cinma<input type="checkbox" name="loisirs[]" value="Cinma"><br> Slctionnez les pays visits :<br> <select name="pays[]" multiple="multiple"> <option value="Maroc">Maroc</option> <option value="Algrie">Algrie</option> <option value="France">France</option> <option value="Espagne">Espagne</option> </select> <br> <input type="submit" value="valider"> </form> Vos loisirs sont : <?php foreach($_POST[loisirs] as $c => $v){ echo $v. ;} ?> <br> Vous avez visit les pays suivants : <?php foreach($_POST[pays] as $c => $v){ echo $v. ; } ?>
F.S.O
Formulaire valid -> Vos loisirs sont : Lecture Sport Vous avez visit les pays suivants : Algrie Espagne
Il est possible de transmettre des donnes dans lURL et les rcuprer dans le tableau $_GET. Exemple :Le lien chierCible.php?nom=ali&prenom=yousse transmet chierCible.php les deux valeurs suivantes : $_GET[nom]="ali" et $_GET[nom]="yousse"
F.S.O
Transfert de chier
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
Un formulaire permet aussi denvoyer un chier au serveur laide de la balise input de type le. Une telle opration ncessite que form ait lattribut method la valeur post et enctype la valeur multipart/form-data. Comme lopration denvoi de chier peut prsenter un problme de scurit pour un site, lattribut accept permet de dterminer les types de chiers accepts. A laide dun champs cach nomm MAX_FILE_SIZE, on peut limiter la taille des chiers transfrs. Une fois le chier est envoy au serveur, il subit le traitement suivant : le chier arrive sur un dossier temporaire et portant un nom diffrent. Ce dossier est dni dans php.ini par la directive upload_tmp_dir, et en cas de son absence, php utilise le dossier tmp du systme. Le chier peut tre enregistr dans le dossier voulu laide de la fonction move_uploaded_le( "chierTmp", "chierFinal") qui retourne true si lopration est russi et false sinon.
F.S.O
Transfert chier
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
Lenvoie dun chier conduit la cration dun tableau associatif multidimensionnel contenant les informations suivantes : $_FILES["chier"]["name"] : contient le nom que le chier possdait avant lenvoie. $_FILES["chier"]["type"] : contient le type du chier. $_FILES["chier"]["size"] : contient la taille du chier en octet. $_FILES["chier"]["tmp_name"] : contient le nom temporaire que le serveur a attribu au chier. $_FILES["chier"]["error"] : donne le code dune ventuelle erreur.
valeur 0 : transfert russi. valeur 1 : taille du chier dpasse celle autorise dans le chier php.ini. valeur 2 : taille du chier dpasse celle autorise dans le champs MAX_FILE_SIZE. valeur 3 : chier a t tlcharg partiellement. valeur 4 : chier non tlcharg.
F.S.O
<! index.html > <form action="chier.php" method="post" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="1000000" /> <b>Slectionnez le chier envoyer :</b></br> <input type="le" name="chier" accept="image/png" size="50"/><br/> <input type="submit" value="Envoyer" /> </form> <?php // chier.php echo "Taille maximale autorise : ".$_POST["MAX_FILE_SIZE"]; echo "<b>Cls et valeurs du tableau $_FILES </b><br />"; foreach($_FILES["chier"] as $cle => $valeur){ echo "cl : $cle valeur : $valeur <br />"; } $result=move_uploaded_le($_FILES["chier"]["tmp_name"],"doc.pdf"); if($result==TRUE){ echo "Le transfert est ralis !"; } else{echo "Erreur de transfert numro ".$_FILES["chier"]["error"];} ?>
F.S.O
Cration et ouverture dun chier La fonction fopen(nom,mode) permet douvrir le chier, ou le crer sil nexiste pas. Elle retourne un identiant du chier, ou false en cas dchec. Le paramtre mode dtermine le type daccs au chier r : ouverture en lecture seulement. w : ouverture en criture seulement. a : ouverture en criture seulement avec ajout du contenu la n du chier. r+ ou w+ : ouverture en lecture et criture. a+ : ouverture en lecture et criture avec ajout du contenu la n du chier. Avec les modes : w, a, w+, a+, le chier sera cr sil nexiste pas. Fermeture dun chier
F.S.O
Ecriture dans un chier La fonction fwrite($idFichier,$chaine) crit le texte contenu dans $chaine dans le chier didentiant $idFichier. Lecture dun chier fread($idFichier,$n) : lit le chier didentiant $idFichier jusqu $n octets (i.e $n caractres). fgets($idFichier,$n) : lit le chier didentiant $idFichier. La lecture sarrte aprs $n caractres ou si \n est rencontr. fgetc($idFichier) : lit le chier caractre par caractre.
$idFichier=fopen(teste.txt,a+); ##Cration et ouverture du teste.txt dans le dossier racine. ##Lidentiant du chier est mmoris dans la variable $idFichier fwrite($idFichier,"Jcrit la premire ligne \n"); //criture en premire ligne fwrite($idFichier,"Jcrit la deuxime ligne \n"); //criture en deuxime ligne (mode a+) $contenu = nl2br(htmlentities(fread($idFichier,lesize(teste.txt)),ENT_QUOTES,utf-8)); ## la fonction nl2br transforme \n en <br> ## la fonction htmlentities remplace tous les caractres spciaux par leurs quivalents en html print($contenu); while($ligne=fgets($idFichier,30)){print($ligne).<br>;} ##Ces 2 instructions afchent "Jcrit la premire ligne <br>Jcrit la deuxime ligne" fclose($idFichier);
F.S.O
Pointeurs
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
seek($idFichier,$n) Elle positionne un pointeur la position $n du chier didentiant $idFichier partir du dbut. Elle returne true, ou -1 en cas dchec. rewind($idFichier) On lutilise pour remettre le pointeur au dbut du chier didentiant $idFichier. Elle retourne false en cas dchec. ftell($idFichier) Elle retourne la position actuelle du pointeur par rapport au dbut du chier.
$idFichier=fopen(teste.txt,r+); fwrite($idFichier,"abc def ghi\n jkl mno pqr"); fseek($idFichier,2); echo fread($idFichier,4); ##Afche "c de" echo "<br>position :".ftell($idFichier);##Afche "position :6" rewind($idFichier); echo "<br>".fread($idFichier,lesize(teste.txt)); ##Afche "abc def ghi jkl mno pqr" fclose($idFichier);
F.S.O
Autres fonctions
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
Lecture de la totalit dun chier readle($chier) : Afche le contenu du chier et retourne sa taille en octes. le($chier) : retourne un tableau dont les lments sont constitus par les lignes du chier. Ces 2 fonctions ne demandent pas lutilisation de fopen et fclose. Copier un chier dans un autre copy($chier1,$chier2) permet de sauvegarder le contenu de $chier1 dans $chier2. Elle retourne une valeur boolenne. Renommer un chier rename($chier1,$chier2) permet de renommer $chier1 en $chier2. Elle retourne une valeur boolenne. Supprimer un chier
F.S.O
Autres fonctions
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
Existence dun chier le_exists($chier) retourne une vakeur boolenne selon que le chier existe ou non. Taille dun chier lesize($chier) retourne la taille en octets de $chier. Type : chier, dossier letype($chier) retourne le sil sagit dun chier ou dir si $chier est un dossier. Date de dernire modication dun chier lemtime($chier) retourne timestamp de dernire modication de $chier.
F.S.O
En php, la session est un mcanisme qui permet de conserver certaines valeurs associes au mme utilisateur. En effet, ces valeurs de session sont stockes sur le serveur pour une dure dtermine, et elles sont accessibles depuis toutes les pages du site. Fonctionnement Ouverture dune session laide de la fonction session_start() au dbut de chaque page o des valeurs de sessions peuvent tre utilises. Un identiant de session est alors attribu chaque utilisateur. Il est transmis dune page une autre. Il est possible dassocier plusieurs valeur la session en utilisant le tableau super-global $_SESSION. Ces valeurs sont stockes dans un chier sur le serveur. Ces valeurs sont accessibles depuis toutes les pages du site commenant par session_start(); Fermeture de la session et destruction des valeurs de session.
F.S.O
session_start() : ouvre une session session_id() : retourne lidentiant de la session session_destroy() : dtruit la session session_unset() : dtruit toutes les variables de session
<?php session_start();## ouverture de session $_SESSION[a]=bonjour;## variable de session echo session_id();## afche frttjhmghbpovf2vuq05b68fv1 session_unset();## dtruit toutes les variables de session echo <br>.session_id();## afche frttjhmghbpovf2vuq05b68fv1 if(isset($_SESSION[a]))## ne sera pas excut car $_SESSION[a] est dtruite echo <br>$_SESSION[=.$_SESSION[a]; ] session_destroy();## dtruit la session echo <br>.session_id();## nafche rien car la session est dtruite ?>
F.S.O
F.S.O
Une fois la base de donnes MasElec est cre, on peut crer une table en fournissant : Le nom de la table. Le nombre de ses attributs.
F.S.O
Colonne : nom de lattribut Type : numrique, alphanumrique, date, ... Taille : longueur de la donne en octets. Dfaut : valeur par dfaut Interclassement : Jeu de caractres Attributs : binaire, non sign, ... Primaire : cl de la table : auto-incrment : incrmentation automatique
F.S.O
Fonctionnement
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
Laccs aux donnes dune base suit les tapes suivantes : Ouverture de la connexion sur le serveur MySql Slection de la base de donnes Dnition de la requte excution de la requte Extraction des donnes Fermeture de la connexion
F.S.O
mysql_connect("hostname", "username", "password") tablit la connexion au serveur. hostname : nom du serveur username : login pour accder la base password : mot de passe associ au login Elle retourne lidentiant de type ressource si la connexion est russie, et false sinon. mysql_select_db ("database", "resource") Permet de slectionner la base de donnes database : nom de la base de donnes ressource (Facultatif) : identiant de la connexion
<?php $mysql=mysql_connect("localhost","root","oiym"); echo "mysqlConnect".$mysql; $connexion_base=mysql_select_db("masterElect",$mysql); if($connexion_base) print("connexion russie");// Afche connexion russie else print("connexion choue"); ?>
F.S.O
Requtes
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
Excution dune requte Lenvoie dune requte SQL la base de donnes slectionne se fait laide de la fonction mysql_query(). Insertion de donnes Syntaxe :
$requete="INSERT INTO personne (id,nom,prenom,anneeNaiss) VALUE (,toto,tati,1988)"; mysql_query($requete));
La fonction mysql_query() retourne TRUE si la requte est russie, et FALSE sinon. Modication de donnes Syntaxe :
$requete="UPDATE personne SET prenom=tata, anneeNaiss=1991 WHERE id=1"; mysql_query($requete);
F.S.O
Requtes
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
F.S.O
Requtes
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
La fonction mysql_query() retourne une ressource si la requte est russie, et FALSE sinon. La fonction mysql_num_rows() retourne le nombre denregistrement dans la ressource.
$result contient deux enregistrements mysql_num_rows($result) retourne 2.
F.S.O
Lafchage des rsultats se fait laide des fonctions suivantes: mysql_fetch_row() : retourne une ligne denregistrement sous forme de tableau index numriquement. mysql_fetch_assoc() : retourne une ligne denregistrement sous forme de tableau dont les cls sont les attributs de la
Requtes
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
Slection de donnes
$requete="SELECT nom, prenom FROM personne WHERE prenom=ali"; $resultat=mysql_query($requete) ; while($ligne=mysql_fetch_row($resultat)){ print($ligne[0]. .$ligne[1].<br>); } Rsultat : yousse ali louzari ali $requete="SELECT nom, prenom FROM personne WHERE prenom=ali"; $resultat=mysql_query($requete) ; while($ligne=mysql_fetch_assoc($resultat)){ print($ligne[nom]. .$ligne[prenom].<br>); } Rsultat : yousse ali louzari ali
mysql_free_result($resulta) permet deffacer le rsultat de la mmoire pour viter une saturation de la zone mmoire. Fermeture de la connexion mysql_close() ferme la connexion Mysql. Syntaxe :
<?php $mysql=mysql_connect("localhost","root","oiym"); . . mysql_close($mysql);
F.S.O
Dans un site, il est conseill de mettre les fonctions et les constantes dans un chier spar an de pouvoir les utiliser dans dautre chiers php. Lappel dun tel chier se fait avec include("NomDuFichier") ou require("NomDuFichier").
<?php #####chier.php###### function parite($x){ if(is_int($x)){ if($x%2==0){ return "$x est pair"; } else{ return "$x est impair"; } } else{ return "$x nest pas un entier"; } } ?>
F.S.O
Redirection du navigateur
PHP M. Oudghiri Introduction Fonctions Variables Tableaux Chanes Oprateurs Instructions Formulaires Fichiers Sessions MySql
La fonction header() permet de rediriger le navigateur vers une autre URL passe en paramtre. Lappel de cette fonction doit tre fait avant quaucun contenu HTML ne soit envoy.
header(Location: http://www.google.fr);
F.S.O