Vous êtes sur la page 1sur 44

Cration et gestion de site dynamique (PHP / MySQL)

Partie 1 : PHP
Dernire mise jours par M. FAGROUD : Dccembre 2007

Le contenu de ce document est soumis la Licence de Documentation Libre GNU Free Documentation License

Intgration dun script dans une page


Les pages web sont au format html. Les pages web dynamiques gnres avec PHP4 sont au format php. Le code source php est directement insrer dans le fichier html grce au conteneur de la norme XML : <?php ?> Exemple: <html> <body> <?php echo Bonjour; ?> </body> </html>

Autres syntaxes dintgration : <? ?> <script language=php> </script> <% %>

Exemple de script
Exemple de script :
<html> <body> <h1>Mon premier script</h1> <?php echo Bonjour\n; ?> </body> </html>

Autre criture du mme script :


<?php echo <html>\n<body>\n; echo <h1>Mon premier script</h1>\n; echo Bonjour\n; echo </body>\n</html>\n; ?>

Rsultat affich par le navigateur :

Code source de la page essai.ph3 rsultant du script

Commentaires
Un script php se commente comme en C : Exemple : <?php // commentaire de fin de ligne /* commentaire sur plusieurs lignes */ # commentaire de fin de ligne comme en Shell ?> Tout ce qui se trouve dans un commentaire est ignor. Il est conseill de commenter largement ses scripts.

Affichage
Les fonctions daffichage : echo() : criture dans le navigateur print() : criture dans le navigateur printf([$format, $arg1, $arg2]) : criture formate comme en C, i.e. la chane de caractre est constante et contient le format daffichage des variables passes en argument Exemples : echo Bonjour $name; print(Bonjour $name); printf(Bonjour %s, $name);

Variables, types et oprateurs (I)


Le typage des variables est implicite en php. Il nest donc pas ncessaire de dclarer leur type au pralable ni mme de les initialiser avant leur utilisation. Les identificateurs de variable sont prcds du symbole $ (dollars) et ne doivent pas contenir despace ou de caractres spciaux. Exemple : $toto. Les variables peuvent tre de type entier (integer), rel (double), chane de caractres (string), tableau (array), objet (object), boolen (boolean). Il est possible de convertir une variable en un type primitif grce au cast(1) (comme en C). Exemple : $str = 12; // $str vaut la chane 12 $nbr = (int)$str; // $nbr vaut le nombre 12

Variables, types et oprateurs (II)


Quelques fonctions : empty($var) : renvoie vrai si la variable est vide isset($var) : renvoie vrai si la variable existe unset($var) : dtruit une variable gettype($var) : retourne le type de la variable settype($var, type) : convertit la variable en type type (cast) is_long(), is_double(), is_string(), is_array(), is_object(), is_bool(), is_float(), is_numeric(), is_integer(), is_int()

Une variable peut avoir pour identificateur la valeur dune autre variable. Syntaxe : ${$var} = valeur; Exemple : $toto = foobar; ${$toto} = 2002; echo $foobar; // la variable $foobar vaut 2002

Variables, types et oprateurs (II)


Pour vrifier si une variable est vide, on utilise la fonction empty() qui renvoie true si elle contient une information et false sinon. $variable = "a"; if(empty($variable)) echo "vide"; else echo "non vide"; La fonction gettype() permet de changer le type de donnes d'une variable. On peut assigner les types suivants : if(gettype($variable) == "integer") La fonction settype() permet de dfinir explicitement le type d'une variable.

$variable = 2.5; settype($variable, "integer");


La variable $variable renverra maintenant 2 et non 2.5.

Variables, types et oprateurs (III)


La porte dune variable est limite au bloc dans lequel elle a t cre. Une variable locale une fonction nest pas connue dans le reste du programme. Tout comme une variable du programme nest pas connue dans une fonction. Une variable cre dans un bloc nest pas connue dans les autres blocs, mmes suprieurs. Si la variable est dclare tout au dbut du script, en dehors et avant toute fonction, elle est toujours globale.
<? $ecole= Atelier PHP" // est connue de toutes les fonctions function signer() { global $ecole; // $ecole est la variable globale prcdente $titre= "Participant "; $titre = $titre . $ecole; // Participant Atelier PHP } ?>

Variables, types et oprateurs (III)


Oprateurs arithmtiques : + (addition), - (soustraction), * (multipli), / (divis), % (modulo), ++ (incrment), --(dcrment). Ces deux derniers peuvent tre pr ou post fixs Oprateurs dassignement : = (affectation), *= ($x*=$y quivalent $x=$x*$y), /=, +=, -=, %= Oprateurs logiques : and, && (et), or, || (ou), xor (ou exclusif), ! (non) Oprateurs de comparaison : == (galit), < (infrieur strict), <= (infrieur large), >, >=, != (diffrence)

Variables, types et oprateurs (IV)


Signalons un oprateur trs spcial qui quivaut une structure conditionnelle complexe if then else la diffrence quil renvoie un rsultat de valeur pouvant ne pas tre un boolen : loprateur ternaire. Syntaxe : (condition)?(expression1):(expression2); Si la condition est vrai alors value et renvoie lexpression1 sinon value et renvoie lexpression2.

Exemple :
$nbr = ($V1>10)?($V1):($V1%10);

Dans cet exemple, la variable $nbr prend $V1 pour valeur si $V1 est strictement suprieur 10, sinon vaut le reste de la division entire de $V1 par 10.

Constantes
Lutilisateur peut dfinir des constantes dont la valeur est fixe une fois pour toute. Les constantes ne portent pas le symbole $ (dollars) en dbut didentificateur et ne sont pas modifiables. define(var,valeur) : dfinit la constante var (sans $) de valeur valeur Exemple 1 :
define("auteur,Foobar); echo auteur;

// affiche Foobar

Exemple 2 :
define(Mon_Annee,1980); echo Mon_Annee;

// affiche 1980

Contrairement aux variables, les identificateurs de constantes (et aussi ceux de fonction) ne sont pas sensibles la casse.

Rfrences
On peut la manire des pointeurs en C faire rfrence une variable grce loprateur & (ET commercial). Exemple 1 :
$V1 = 100;

// la variable $V1 est initialise la valeur 100 $foobar = &$V1; // la variable $foobar fait rfrence $V1 $V1++; // on change la valeur de $V1 echo $foobar; // qui est rpercute sur $foobar qui vaut alors 101

Exemple 2 :
function change($var) { $var++; } $nbr = 1; // la variable $nbr est initialise 1 change(&$nbr); echo $nbr;

// la fonction incrmente en local largument

// passage de la variable par rfrence // sa valeur a donc t modifie

Mathmatiques
Il existe une multitude de fonctions mathmatiques. abs($x) : valeur absolue ceil($x) : arrondi suprieur floor($x) : arrondi infrieur pow($x,$y) : x exposant y round($x,$i) : arrondi de x la ime dcimale max($a, $b, $c ) : retourne largument de valeur maximum pi() : retourne la valeur de Pi Et aussi : cos, sin, tan, exp, log, min, pi, sqrt Nombres alatoires : rand($x,$y) : valeur alatoire entre x et y srand() : initialisation du gnrateur alatoire

Dates et heures (I)


Les fonctions de dates et heures sont incontournables sur Internet et sont indispensables pour la conversion en franais des dates fournies par la base de donnes MySQL qui les code au format anglophone (YYYY-DD-MM hh:mm:ss).

Quelques fonctions : date($format) : retourne une chane de caractres contenant la date et/ou lheure locale au format spcifi getdate() : retourne un tableau associatif contenant la date et lheure checkdate($month, $day, $year) : vrifie la validit dune date mktime ($hour, $minute, $second, $month,$day, $year) : retourne le timestamp UNIX correspondant aux arguments fournis cest--dire le nombre de secondes entre le dbut de l'poque UNIX (1er Janvier 1970) et le temps spcifi time() : retourne le timestamp UNIX de lheure locale

Dates et heures (II)


Exemple 1 :
echo date(''Y-m-d H:i:s'');

/* affiche la date au format MySQL : 2002-03-31 22:30:29 */

Exemple 2 :
$aujourdhui = getdate(); $mois = $aujourdhui['mon']; $jour = $aujourdhui['mday']; $annee = $aujourdhui['year']; echo ''$jour/$mois/$annee'';

// affiche 31/3/2002

Dates et heures (III)


Les cls du tableau retourn par getdate :
seconds : secondes minutes : minutes hours : heures mday : jour du mois wday : jour de la semaine, numrique mon : mois de l'anne, numrique year : anne, numrique yday : jour de l'anne, numrique weekday : jour de la semaine, textuel complet en anglais month : mois, textuel complet en anglais

Dates et heures (IV)


Les formats pour date :
d Jour du mois sur deux chiffres [01..31] j Jour du mois sans les zros initiaux l Jour de la semaine textuel en version longue et en anglais D Jour de la semaine textuel en trois lettres et en anglais w Jour de la semaine numrique [0..6] (0: dimanche) z Jour de l'anne [0..365] m Mois de l'anne sur deux chiffres [01..12] n Mois sans les zros initiaux F Mois textuel en version longue et en anglais M Mois textuel en trois lettres Y Anne sur 4 chiffres y Anne sur 2 chiffres h Heure au format 12h [01..12] g Heure au format 12h sans les zros initiaux H Heure au format 24h [00..23] G Heure au format 24h sans les zros initiaux i Minutes [00..59] s Secondes [00.59] a am ou pm A AM ou PM L Boolen pour savoir si l'anne est bisextile (1) ou pas (0) S Suffixe ordinal anglais d'un nombre (ex: nd pour 2) t Nombre de jour dans le mois donn [28..31] U Secondes depuis une poque Z Dcalage horaire en secondes [-43200..43200]

Structures de contrle (I)


Structures conditionnelles (mme syntaxe quen langage C) : if( ... ) { } elseif( ) { } else { } switch( ) { case : { } break default : { } }

Structures de contrle (II)


Exemple 1:
$aujourdhui = getdate(); $mois = $aujourdhui['mon']; If ($mois == 12 )

{
echo "Decembre"; } Else

{
echo " Ce n\'est pas le dernier mois "; }

Structures de contrle (III)


Exemple 2:
Utilisation de switch

Structures de contrle (IV)


Structures de boucle (mme syntaxe quen langage C) : for( ; ; ) { } while( ) { } do { } while( );

Structures de contrle (V)


Exemple 1:
$i=1; $somme=0; //facultative While ($i<=10) { $somme = $somme +$i; $i++; Echo $somme; } for($i=1; $i<=10; $i++) { $somme = $somme +$i; Echo $somme; }

Structures de contrle (VI)


Linstruction break permet de quitter prmaturment une boucle. Exemple :
while($nbr = $tab[$i++]) { echo $nbr.<br />; if($nbr == $stop) break; }

Linstruction continue permet dluder les instructions suivantes de litration courante de la boucle pour passer la suivante. Exemple :
for($i=1; $i<=10; $i++) { if($tab[$i] == $val) continue; echo $tab[$i]; }

Exemple 1:
$aujourdhui =

Arrt prmatur
Pour stopper prmaturment un script, il existe deux fonctions. die arrte un script et affiche un message derreur dans le navigateur. Exemple :
if(mysql_query($requette) == false) die(Erreur de base de donnes la requte : <br />$requet);

exit larrte aussi mais sans afficher de message derreur. Exemple :


function foobar() { exit(); }

Ces fonctions stoppent tout le script, pas seulement le bloc en cours.

Chanes de caractres (I)


Une variable chane de caractres nest pas limite en nombre de caractres. Elle est toujours dlimite par des simples quotes ou des doubles quotes. Exemples :
$nom = Fagroud; $prenom = Mustapha;

Les doubles quotes permettent lvaluation des variables et caractres spciaux contenus dans la chane (comme en C ou en Shell) alors que les simples ne le permettent pas. Exemples : echo Nom: $nom; // affiche Nom: Fagroud echo Nom: $nom; // affiche Nom: $nom Quelques caractres spciaux : \n (nouvelle ligne), \r (retour la ligne), \t (tabulation horizontale), \\ (antislash), \$ (caractre dollars), \ (double quote). Exemple : echo Hello Word !\n;

Chanes de caractres (II)


Oprateur de concatnation de chanes : . (point) Exemple 1 :
$foo = Salut; $bar = Tout le monde; echo $foo.$bar;

Exemple 2 :
$name = PHP; $whoiam = $name. et MYSQL;

Exemple 3 :
$out = Debut ; $out .= a la fin;

Chanes de caractres (III)


Affichage dune chane avec echo: Exemples:
echo Bonjours.; echo " Salut ${name}\n; echo Nom : , $name; echo(Bonjour);

Quelques fonctions: strlen($str) : retourne le nombre de caractres dune chane strtolower($str) : conversion en minuscules strtoupper($str) : conversion en majuscules trim($str) : suppression des espaces de dbut et de fin de chane substr($str,$i,$j) : retourne une sous chane (entre les positions i et j) strnatcmp($str1,$str2) : comparaison de 2 chanes addslashes($str) : dspcialise les caractres spciaux (, , \) ord($char) : retourne la valeur ASCII du caractre

Chanes de caractres (IV)


On peut dlimiter les chanes de caractres avec la syntaxe Here-doc. Exemple : $essai = <<<EOD Ma chane essai sur plusieurs lignes. EOD; echo $essai; La valeur de la variable $essai est dlimite par un identifiant que vous nommez librement. La premire apparition de cet identifiant doit tre prcde de 3 signes infrieurs <. Sa deuxime apparition doit se faire en premier sur une nouvelle ligne. Cette valeur chane se comporte comme si elle tait dlimite par des doubles quotes dans le sens o les variables seront values. Par contre il est inutile dchapper les guillemets, cest--dire que la dspcialisation des doubles quotes devient inutile.

Tableaux (I)
Une variable tableau est de type array. Un tableau accepte des lments de tout type. Les lments dun tableau peuvent tre de types diffrents et sont spars dune virgule. Un tableau peut tre initialis avec la syntaxe array. Exemple :
$tab_colors = array(rouge, jaune, bleu, blanc); $tab = array(foobar, 2002, 20.5, $name);

Mais il peut aussi tre initialis au fur et mesure. Exemples :


$prenoms[ ] = Mohamed; $prenoms[ ] = Hamid; $prenoms[ ] = Fatima;

$villes[0] = Rabat; $villes[1] = Alger; $villes[2] = Tunis;

Lappel dun lment du tableau se fait partir de son indice (dont lorigine est zro comme en C). Exemple : echo $tab[10]; // pour accder au 11me lment

Tableaux (II)
Parcours dun tableau.
$tab = array("Hassan", "Jamal", "Mounir");

Exemple 1 :
$i=0; while($i < count($tab)) { echo $tab[$i].\n; $i++; }

// count() retourne le nombre dlments

Exemple 2 :
foreach($tab as $elem) { echo $elem.<BR>; }

La variable $elem prend pour valeurs successives tous les lments du tableau $tab.

Tableaux (III)
Quelques fonctions: count($tab), sizeof : retournent le nombre dlments du tableau in_array($var,$tab) : dit si la valeur de $var existe dans le tableau $tab list($var1,$var2) : transforme une liste de variables en tableau range($i,$j) : retourne un tableau contenant un intervalle de valeurs shuffle($tab) : mlange les lments dun tableau sort($tab) : trie alphanumrique les lments du tableau rsort($tab) : trie alphanumrique inverse les lments du tableau implode($str,$tab), join : retournent une chane de caractres contenant les lments du tableau $tab joints par la chane de jointure $str explode($delim,$str) : retourne un tableau dont les lments rsultent du hachage de la chane $str par le dlimiteur $delim array_merge($tab1,$tab2,$tab3) : concatne les tableaux passs en arguments array_rand($tab) : retourne un lment du tableau au hasard

Tableaux (IV)
Il est possible deffectuer des oprations complexes sur les tableaux en crant par exemple sa propre fonction de comparaison des lments et en la passant en paramtre une fonction de tri de php. usort($tab, fonction); Trie les lments grce la fonction fonction dfinie par l'utilisateur qui doit prendre 2 arguments et retourner un entier, qui sera infrieur, gal ou suprieur zro suivant que le premier argument est considr comme plus petit, gal ou plus grand que le second argument. Si les deux arguments sont gaux, leur ordre est indfini. Attention, les variables tableaux ne sont pas values lorsquelles sont au milieu dune chane ce caractre dlimite par des doubles quottes. Exemple : echo $tab[3]; // syntaxe invalide echo $tab[3]; // syntaxe valide

Tableaux associatifs (I)


Un tableau associatif est appel aussi dictionnaire ou hashtable. On associe chacun de ses lments une cl dont la valeur est de type chane de caractres. Linitialisation dun tableau associatif est similaire celle dun tableau normal. Exemple 1 :
$personne = array(Nom => Csar, Prnom => Jules);

Exemple 2 :
$personne[Nom] = Csar; $personne[Prnom] = Jules;

Ici la cl Nom est associe la valeur Csar.

Tableaux associatifs (II)


Parcours dun tableau associatif. $personne = array(Nom => Csar, Prnom => Jules); Exemple 1 : foreach($personne as $elem) {
echo $elem; }

Ici on accde directement aux lments du tableau sans passer par les cls. Exemple 2 : foreach($personne as $key => $elem) {
echo $key : $elem; }

Ici on accde simultanment aux cls et aux lments.

Tableaux associatifs (III)


Quelques fonctions : array_count_values($tab) : retourne un tableau contenant les valeurs du tableau $tab comme cls et leurs frquence comme valeur (utile pour valuer les redondances) array_keys($tab) : retourne un tableau contenant les cls du tableau associatif $tab array_values($tab) : retourne un tableau contenant les valeurs du tableau associatif $tab array_search($val,$tab) : retourne la cl associe la valeur $val Llment dun tableau peut tre un autre tableau. Les tableaux associatifs permettent de prserver une structure de donnes.

Tableaux associatifs (IV)


Quelques fonctions alternatives pour le parcours de tableaux (normaux ou associatifs) : reset($tab) : place le pointeur sur le premier lment current($tab) : retourne la valeur de llment courant next($tab) : place le pointeur sur llment suivant prev($tab) : place le pointeur sur llment prcdant each($tab) : retourne la paire cl/valeur courante et avance le pointeur Exemple :
$colors = array(red, green, blue); $nbr = count($colors); reset($colors); for($i=1; $i<=$nbr; $i++) { echo current($colors).<br />; next($colors); }

Tableaux deux dimensions (I)


Les lments d'un tableau peuvent tre leur tour des tableaux. Ces tableaux dits multidimensionnels peuvent tre compars des matrices. Exemple :
$produit = array ( array ( "Ord", "Ordinateur",6700), array ( "Imp", "Imprimante", 1600), array ( ""Vid", "Video", 2200) );

Pour afficher le contenu de ce tableau :


For ($i=0;$i<3;$i++) { for($j=0;$j>3;$j++) { echo "|".$produit[$i][$j]."|"; } echo "<br>"; }

Fonctions (I)
Comme tout langage de programmation, php permet lcriture de fonctions. Les fonctions regroupent un ensemble d'instructions rutilisables, elles peuvent (mais pas obligatoire) accepter des valeurs appeles arguments ou paramtres. S'il y'en a plusieurs, les paramtres sont spars par des virgules. Une fonction ralise une succession d'instructions et peut renvoyer une et une seule valeur prciser l'aide du Return. Exemple : function mafonction($V) { $V += 15; echo Salut !; return ($V+10); }
$nbr = MaFonction(15.1); /* retourne 15.1+15+10=40.1, les majuscules nont pas dimportance */

Fonctions (II)
Les identificateurs de fonctions sont insensibles la casse. On peut modifier la porte des variables locales une fonction. global permet de travailler sur une variable de porte globale au programme. Le tableau associatif $GLOBALS permet daccder aux variables globales du script ($GLOBALS[var] accde la variable $var). Exemple : function change() { global $var; // dfinit $var comme globale $GLOBALS[V] ++; // incrmente la variable globale $toto $var++; // cela sera rpercut dans le reste du programme } static permet de conserver la valeur dune variable locale une fonction. Exemple : function change() { static $var; // dfinit $var comme statique $var++; // sa valeur sera conserve jusquau prochain appel }

Fonctions (III)
On peut donner une valeur par dfaut aux arguments lors de la dclaration de la fonction. Ainsi, si un argument est oubli lors de lappel de la fonction, cette dernire lui donnera automatiquement une valeur par dfaut dcide lavance par le programmeur. Exemple : function Set_Color($color=black) { global $car; $car[color] = $color; }

Forcer le passage de paramtre par rfrence (quivalent user de global): Exemple : function change(&$var) { // force le passage systmatique par rfrence $var += 100; // incrmentation de +100 } $V = 12; // $V vaut 12 change($V); // passage par valeur mais la fonction la prend en rfrence echo $V; // $V vaut 112

Fonctions (IV)
Une fonction peut tre dfinie aprs son appel (en PHP4 du fait de la compilation avant excution contrairement au PHP3 qui est interprt). Exemple : function une() { // dfinition de la fonction une echo Binevenu; } une(); // appel de la fonction une dfinie plus haut deux(); // appel de la fonction deux pas encore dfinie function deux() { // dfinition de la fonction deux echo PHP!<br />; }

Cet exemple affichera : BienvenuPHP!.

Fonctions (V)
Grce une petite astuce, il est possible de faire retourner plusieurs valeurs dune fonction. En retournant un tableau ayant pour lments les variables retourner. Dans lappel de la fonction, il faudra alors utiliser la procdure list() qui prend en paramtre les variables qui ont doit affecter les valeurs retournes. On affecte list() le retour de la fonction. Exemple : function trigo($nbr) { return array(sin($nbr), cos($nbr), tan($nbr)); // retour dun tableau } $r = 12; list($a, $b, $c) = trigo($r); /* affectation aux variables $a,$b et $c des lments du tableau retourn par la fonction trigo */ echo sin($r)=$a, cos($r)=$b, tan($r)=$c; // affichage des variables Cet exemple affichera ceci : sin(12)=-0,5365729180, cos(12)=0,8438539587, tan(12)=-0,6358599286

Vous aimerez peut-être aussi