Vous êtes sur la page 1sur 37

LES TECHNOLOGIES DU WEB

1re Partie : Introduction au Web


1- Introduction l'Hypertexte 2- Prsentation du protocole HTTP 3- Principes de bases des CGI 4- Prsentation du WEB2 (AJAX)

2me Partie : Prsentation de HTML & XHTML 3me Partie : Prsentation de Javascript 4me Partie : Introduction PHP 5me Partie : Introduction XML & XSLT

CNAM UE IHM NSY110

Initiation PHP

Diapositive 1 / 73

Jean-Marc PUJOS

INITIATION PHP

NOTIONS DE BASE en programmation Web avec PHP

CNAM UE IHM NSY110

Initiation PHP

Diapositive 2 / 73

Jean-Marc PUJOS

Initiation PHP - PLAN


Introduction Variables et constantes Oprateurs Tableaux et tableaux associatifs Structures de contrles Fonctions Le systme de fichiers Programmation modulaire (OO) Accs aux bases de donnes Dbuguer un script PHP Des conseils de programmation Des comparaisons entre PHP et ASP Interaction avec AJAX

CNAM UE IHM NSY110

Initiation PHP

Diapositive 3 / 73

Jean-Marc PUJOS

INTRODUCTION

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

PHP est un langage interprt orient Web. Syntaxiquement, c'est un mlange de C et de Perl. Les scripts PHP sont lus et interprts par le moteur PHP. PHP comporte plus de 500 fonctions. Il est fournit avec des librairies offrant des fonctionnalits diverses : accs aux bases de donnes, fonctions d'images, sockets, protocoles Internet divers...

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 4 / 73

Jean-Marc PUJOS

PRINCIPE de FONCTIONNEMENT
SERVEUR Fichier.php

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax
CLIENT

I n t e r n e t

DEMON httpd

dynamique html + JAVA SCRIPT

Interprteur PHP

statique

Pages html + JAVA SCRIPT

SGBD

Bibliographie

Lorsquune requte HTTP est soumise au serveur Web pour une page dont lextension est .php, comme pour un fichier HTML, le serveur commence par rechercher dans son arborescence le fichier dextension .php. Il va ensuite passer la main un sous-processus (une dll bien particulire) qui va interprter le script PHP et produire dynamiquement du code HTML. Ce code HTML est alors envoy au travers du rseau au navigateur client. De plus, aucune ligne de code PHP napparat ct client dans la mesure o tout le code a t interprt.

CNAM UE IHM NSY110

Initiation PHP

Diapositive 5 / 73

Jean-Marc PUJOS

SYNOPSIS
Un script PHP peut comprendre a la fois du code PHP et du code HTML, non interprt. On doit donc encadrer les parties comportant le code PHP entre 2 balises <? et ?>. Le reste de la page n'est pas interprt. <html><head><title> <? $titrepage = "Mon premier script PHP"; echo $titrepage; ?> </title></head><body> <h1><? echo $titrepage ?></h1> <? echo " <b> Hello, World ! </b>"; ?> </body></html> Note: La balise <?php est quivalente a <?. On peut galement utiliser les balises <script language="php"> et </script> Enfin, pour les programmeurs ASP, sachez que les balises <% et %> sont galement reconnues.

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 6 / 73

Jean-Marc PUJOS

AFFICHER DU TEXTE (1)


Le sparateur d'instructions est le ; Il est obligatoire, sauf si l'instruction est suivie de la balise ?> La fonction echo affiche un (ou plus) argument. Si l'argument est une chane entre simple quotte ' il est affich tel quel.
echo 'Hello, World';

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Avec le quotte double " les variables contenues dans cette chane sont interprtes.
$nom= "Toto"; echo "Hello, $nom"; // Hello, Toto echo 'Hello, $nom'; // Hello, $nom

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 7 / 73

Jean-Marc PUJOS

AFFICHER DU TEXTE (2)


On peut galement inclure le rsultat d'une fonction directement dans un echo.
echo "Votre Nom en majuscule : ", strtoupper( "Toto" ), "\n"; // la fonction strtoupper mets tous les caractres de la chane en majuscule.

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Pour afficher le caractre " , on l'insre l'aide du caractre d'chappement \


echo " Escaping de caractres : \" \n";

Bibliographie

On peut inclure des caractres spciaux pour contrler le flux affich : \n saut de ligne \r fin de ligne \t tabulation
Pour terminer l'excution du script, on utilise la fonction exit();

CNAM UE IHM NSY110

Initiation PHP

Diapositive 8 / 73

Jean-Marc PUJOS

AFFICHER DU TEXTE (3)

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Pour commenter le code, on utilise : Commentaire sur une ligne: // ou # Commentaire sur plusieurs lignes: /* ... */

Utilisation en mode ligne de commande : On peut excuter un script PHP en ligne de commande, ce qui permet des usages hors du simple cadre ''Web''. L'option -q vite l'affichage de la premire ligne Content-type: text/html C:\WEB\PHP\> php -q monscript.PHP

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 9 / 73

Jean-Marc PUJOS

LES VARIABLES (1)

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Visibilit et affectation PHP nest pas un langage fortement structur, il ne contient donc pas de partie dclarative clairement dfinie. Pour dfinir une variable, il suffit de linitialiser. Les variables sont prcdes du signe $, quelque soit leur type. Ainsi pour dclarer une variable var :
$var=1;

La variable $var est alors dfinie et vaut 1. Elle devient immdiatement accessible et ce jusqu la fin du script.

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 10 / 73

Jean-Marc PUJOS

LES VARIABLES (2)


Type de variables Les variables PHP sont a typage faible. C'est PHP qui dcide de son type lors de l'affectation. Il existe six types de donnes :
Entier (int, integer) Dcimal (real, float, double) Chane de caractres (string) Tableau (array) Objet (object) Boolen (boolean, uniquement PHP4)

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Il est parfois utile de forcer le type d'une variable. On utilise la fonction settype ou bien les oprateurs de casting (int), (string) settype renvoie vrai si la conversion a fonctionn, faux sinon.
$a= 3.1415; $result= settype( $a, "integer" ); // => $a = 3 , $result = 1

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 11 / 73

Jean-Marc PUJOS

LES VARIABLES (3)


Les oprateurs de conversion sont :
Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax (string) (int) (real) (array) (object) (bool) conversion en chane de caractres conversion en entier, synonyme de (integer) conversion en double, synonyme de (double) et (float) conversion en tableau conversion en objet conversion en boolen

$var= 1; // $var est de type "integer" et vaut 1. $chn=(string) $var ; // $var est de type "string" et vaut " 1 ". On peut galement utiliser strval, intval, doubleval qui renvoient la variable convertie en chane / entier / rel. $strPI= "3.1415"; $intPI= intval( $strPI ); $PI= doubleval( $strPI ); echo " $strPI / $intPI / $PI";

// => 3.1415 / 3 / 3.1415

Bibliographie

Remarque : Ces fonctions ne fonctionnent pas sur les tableaux.


CNAM UE IHM NSY110 Initiation PHP Diapositive 12 / 73 Jean-Marc PUJOS

LES VARIABLES (4)


Rgles des conversions implicites :
Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Si la chane de caractres contient un point, un e ou un E ainsi que des caractres numriques, elle est convertie en dcimal, Si la chane de caractres ne contient que des caractres numriques, elle est convertie en entier, Si la chane de caractres est compose de chiffres et de lettres, elle est convertie en entier et vaut 0, Si la chane de caractres contient plusieurs mots, seul le premier est pris en compte et est converti selon les rgles ci-dessus.

$var1 = 1; $var2 = 12.0; $var3 = "PHP"; $var4 = false; $var5 = "5a";

// $var1 est de type "integer" et vaut 1. // $var2 est de type "double" et vaut 12. // $var3 est de type "string" et vaut "PHP". // $var4 est de type "boolean" et vaut false. // $var5 est de type "string" et vaut "5a".

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 13 / 73

Jean-Marc PUJOS

LES VARIABLES (5)


Rfrences
Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

PHP4 permet dexploiter les rfrences aux variables, linstar du langage C. Une rfrence une variable est un accs la zone mmoire qui contient la valeur de cette variable. Cette rfrence est dsigne par le caractre & plac devant le nom de la variable. $a = 1 ; // $a a pour valeur 1. $b = &$a ; // $b et $a pointent sur la mme zone mmoire. // Ce sont donc deux noms pour la mme variable. echo " $a, $b " ; // Affiche 1, 1 $a = 2 ; echo " $a, $b " ; // Affiche 2, 2
Initiation PHP Diapositive 14 / 73 Jean-Marc PUJOS

Bibliographie

CNAM UE IHM NSY110

LES VARIABLES (6)


Tests sur les variables La fonction isset permet de tester si une variable est dfinie. La fonction unset permet de supprimer la variable, et de dsallouer la mmoire utilise.
echo isset($a); // => 0 (faux) $a= " "; unset($a); // => 1 (vrai) echo isset($a); // => 0 (faux)

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

La fonction gettype permet de connatre le type de la variable. Elle renvoie une chane : ''string'' ou ''integer'' ou ''double'' ou ''array'' ou ''object''. $a= 12;
echo gettype($a) ; // => "integer" $a= $a / 10; echo gettype($a) ; // => "double" unset($a); echo gettype($a) ; // => "string

Bibliographie

Remarque : Si la variable n'est pas dfinie, elle renvoie "string".


CNAM UE IHM NSY110 Initiation PHP Diapositive 15 / 73 Jean-Marc PUJOS

LES VARIABLES (7)


Tests sur les variables (suite et fin)
Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

On peut galement tester un type particulier a l'aide des fonctions is_array, is_string, is_int, is_float, is_object .
$a= 123; echo is_int($a); // => (vrai) echo is_double($a) // => (faux) echo is_string($a) // => (faux) $a += 0.5; echo is_float($a) // => (vrai)

Remarque :
Les fonctions is_double et id_real sont quivalentes is_float. Les fonctions is_long et is_integer sont quivalentes is_int.

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 16 / 73

Jean-Marc PUJOS

LES CONSTANTES
PHP permet de dfinir des constantes a l'aide de la fonction define.
define("CONSTANTE", "rouge" );

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Deux constantes sont prdfinies par PHP :


__FILE__ contient le nom du fichier, et __LINE__ le numro de la ligne courante. define( "NEXTPAGE", "script2.PHP" ); echo "Page courante : ", __FILE__ , "Page suivante : ", NEXTPAGE; pas de $ pour des constantes.
Initiation PHP Diapositive 17 / 73 Jean-Marc PUJOS

Bibliographie

CNAM UE IHM NSY110

LES OPERATEURS (1)


PHP dispose des oprateurs classiques inspirs des langages C et Perl.
Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Comparaison
== > < <= >= != galit infrieur strict suprieur strict infrieur ou gal suprieur ou gal ngation

Logiques Les oprateurs logiques sont utiliss dans les tests, par exemple dans un if ( condition )
&& || xor ! et ou ou exclusif ngation

Bibliographie

Remarque : les oprateurs and, or , not sont galement disponibles et font la mme chose.
CNAM UE IHM NSY110 Initiation PHP Diapositive 18 / 73 Jean-Marc PUJOS

LES OPERATEURS (2)


Arithmtiques + addition soustraction / division * multiplication % modulo ++ incrment -dcrment Affectation = affectation += addition puis affectation -= soustraction puis affectation *= multiplication puis affectation /= division puis affectation %= modulo puis affectation $n = 0; $n += 2; // $n vaut 2 $n *= 6; // $n vaut 12 $r= $n % 5; // 12 modulo 5 => $r = 2 if( ++$n == 13 ) echo " pas de chance "; // pr-incrment le test renvoie vrai
Initiation PHP Diapositive 19 / 73 Jean-Marc PUJOS

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Remarque : l'oprateur / renvoie un entier si les 2 oprandes sont des entiers, sinon il renvoie un flottant.

Bibliographie

CNAM UE IHM NSY110

LES OPERATEURS (3)


Binaires
Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

& | ^ ~

ET OU XOR NOT

echo 3 & 6 ; echo 3 | 6 ; echo 3 ^ 6 ; echo ~3;

// 0011 AND 0110 => 2 // 0011 OR 0110 => 7 // 0011 XOR 0110 => 5 // NOT 3 => -4

Divers L'oprateur de concatnation est utilisable sur les chanes scalaires.


$chane = "Votre nom est" ; $nom = "Toto"; echo $chane . " " . $nom;

// affiche "Votre nom est Toto"

L'oprateur ? : ou oprateur de test trinaire. Sa syntaxe est [test logique] ? [expression si vrai] : [expression si faux]
$a= $b =1; ( $a == $b ) ? $c= 10 : $c = 20; // effectue $c = 10;

Bibliographie

On peut galement l'utiliser pour compacter les squence de test / affectations


$rponse = ( $a == $b ) ? "a gal b" : "a diffrent de b" ; echo $rponse; // affiche "a gal b" car le test ( $a == $b ) renvoie vrai

CNAM UE IHM NSY110

Initiation PHP

Diapositive 20 / 73

Jean-Marc PUJOS

LES TABLEAUX (1)


Dclarations :
$fruits= array();
Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Affectations :
$fruits[0]= "pomme"; $fruits[1]= "banane"; $fruits[] .= "orange"; // quivaut a $fruits[2]= "orange" $fruits= array( "pomme", "banane", "orange" );

Fonctions relatives : sizeoff : Renvoie le nombre d'lments d'un tableau. Cest un quivalent de count.
$nbelements= sizeof( $tableau ); is_array : renvoie true si la variable est de type tableau (ou tableau associatif), false sinon. reset : la fonction reset($tableau) place le pointeur interne sur le premier lment du tableau, chaque variable tableau possde un pointeur interne reprant l'lment courant.
Initiation PHP Diapositive 21 / 73 Jean-Marc PUJOS

Bibliographie

CNAM UE IHM NSY110

LES TABLEAUX (2)


Fonctions relatives (suite):
Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

end : la fonction end($tableau) place le pointeur interne du tableau sur le dernier lment du tableau. current : renvoie l'lment courant du tableau. next : dplace le pointeur vers l'lment suivant, et renvoie cet lment. Sil n'existe pas, la fonction renvoie false. prev : dplace le pointeur vers l'lment prcdent, et renvoie cet lment. Sil n'existe pas, la fonction renvoie false. each : la fonction $a=each($tablo) renvoie l'index et la valeur courante dans un tableau 2 elements, $a[0] contient l'index, $a[1] la valeur. list : la fonction list( $scalar1, $scalar2, ... ) construit un tableau temporaire partir des variables scalaires passes en argument. key : la fonction key($tablo) renvoie l'index de l'lment courant du tableau.

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 22 / 73

Jean-Marc PUJOS

LES TABLEAUX (3)


Fonctions relatives (suite et fin):
Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

sort, rsort, usort, uasort : sont diffrentes fonctions de tri de tableau. sort trie par valeurs croissantes, rsort par valeurs dcroissantes $tableau_trie = sort( $tableau ); usort et uasort permettent au programmeur d'implmenter lui-mme la fonction de tri utilise. PHP appelle successivement la fonction qui doit retourner -1 / 0 / 1 suivant que le premier lment est infrieur / gal / suprieur au second. Dans l'exemple ci-dessous, on implmente un tri qui ne tient pas compte des majuscules/ minuscules
function compare_maj( $elem1, $elem2 ) { if( strtoupper( $elem1 ) == strtoupper( $elem2 ) ) return 0; return ( strtoupper( $elem1 ) < strtoupper( $elem2 )) ? -1 : 1; } .. $tableau_trie = usort( $tableau, "compare_maj" );
Initiation PHP Diapositive 23 / 73 Jean-Marc PUJOS

Bibliographie

CNAM UE IHM NSY110

LES TABLEAUX ASSOCIATIFS (1)


Un tableau associatif est un tableau dont l'index est une chane de caractre au lieu d'un nombre. On parle aussi de ''hash array'' ou ''hash''. Il se dclare comme un tableau traditionnel, la distinction se fait lors de l'affectation. Dclarations :
$calories= array(); // comme un tableau

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Affectations : Affectons un nombre de calories moyen aux fruits.


$calories["pommes"]= 300; $calories["banane"]= 130; $calories["litchie"]= 30;

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 24 / 73

Jean-Marc PUJOS

LES TABLEAUX ASSOCIATIFS (2)


Fonctions relatives : isset : pour tester l'existence d'un lment, on utilise la fonction isset() .
if( isset( $calories["pommes"] ) ) { echo "une pomme contient ", $calories["pommes"] , " calories\n"; } else { echo "pas de calories dfinies pour la pomme\n"; }

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

asort, arsort, ksort, aksort : Ces fonctions de tri conservent la relation entre l'index et la valeur, gnralement le cas dans un tableau associatif.
asort trie par valeurs croissantes, arsort par valeurs dcroissantes, ksort trie par index (key) croissantes.
Initiation PHP Diapositive 25 / 73 Jean-Marc PUJOS

Bibliographie

CNAM UE IHM NSY110

LES STRUCTURES DE CONTRLES (1)

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Les tests IF
Syntaxes : Test if " basique " :
if( [condition] ) { ... }

Test if-else :
if( [condition] ) { ... } else { ... }

Test if-elseif :
if( [condition] ) { ... } elseif( [condition] ) { ... }

Bibliographie

Dans le cas de plusieurs tests successif portant sur une Mme variable, on utilisera plutt le test switch. Remarque : Si le corps du test ne comporte qu'une instruction, les accolades { } sont optionnels, ( contrairement au Perl).

CNAM UE IHM NSY110

Initiation PHP

Diapositive 26 / 73

Jean-Marc PUJOS

LES STRUCTURES DE CONTRLES (2)


Le test SWITCH
Le switch n'a pas d'quivalent en Perl. il est l'quivalent du SELECT CASE en Basic. Syntaxe :

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Bibliographie

switch( [variable] ) { case [valeur1] : Il permet de confronter une variable [bloc d'instructions] plusieurs valeurs prdfinies. break; Il permet un code plus compact et case [valeur2] : lisible qu'un test : [bloc d'instructions] if-elseif-elseif... break; ... default: [bloc d'instructions] }

CNAM UE IHM NSY110

Initiation PHP

Diapositive 27 / 73

Jean-Marc PUJOS

LES STRUCTURES DE CONTRLES (3)


Le test SWITCH (fin)
Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

La valeur de [variable] est compar successivement chaque case. Si il y a galit, le bloc d'instruction est excut. Il ne faut pas omettre le break en fin de bloc, sans quoi le reste du switch est excut. Enfin, le handler default permet de dfinir des instructions effectuer par dfaut, c'est dire si aucun case n'a ''fonctionn''...

switch( $prnom ) { case "Bob" : case "Toto" : case "Julien" : echo "bonjour ", $prnom , " ! vous tes un garon"; break; case "Anne": case "Batrice" : case "Patricia" : echo "bonjour ", $prnom , " ! vous tes une fille"; default: echo "Bonjour $prnom ! Dsol je ne connais pas beaucoup de prnoms" }

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 28 / 73

Jean-Marc PUJOS

LES STRUCTURES DE CONTRLES (4)


Les boucles
Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

En PHP, on dispose des structures de boucle similaires au langage C. L'instruction break permet de sortir d'une boucle tout moment. L'instruction continue permet de revenir au dbut de la boucle.

for( $i=0; $i < sizeof($tableau ); $i++ ) { if( $tableau($i] == 'suivant' ) { continue; } if( $tableau($i] == 'fin' ) { break; } echo $tableau[$i], "\n"; }

La boucle FOR : for( [initialisations] ; [test sortie] ; [faire a chaque fois] )


// parcours complet du tableau for( $i=0; $i < sizeof($tableau); $i++ ) { echo "tableau($i)= $tableau[$i] \n"; }
Initiation PHP Diapositive 29 / 73 Jean-Marc PUJOS

Bibliographie

CNAM UE IHM NSY110

LES STRUCTURES DE CONTRLES (5)


La boucle WHILE :
Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

// parcours du tableau jusqu'au premier lment vide $i=0; while( isset( $tableau[$i]) ) { echo "tableau[ $i ] = $tableau[$i] \n"; ... $i++; }

La boucle DO WHILE :
La condition de sortie est situe en fin de boucle. Ainsi la boucle est parcourue une fois au minimum. $fp= fopen( "monfichier.txt" ); do{ $ligne = fgets( $fp, 1024 ); } while( ! feof($fp) );
Initiation PHP Diapositive 30 / 73 Jean-Marc PUJOS

Bibliographie

CNAM UE IHM NSY110

LES FONCTIONS (1)


A limage de tout langage structur, en PHP, une fonction est une suite dinstructions qui peut remplir nimporte quelle tche. Tout code PHP valide figure dans le corps (ou le code) dune fonction. Il n'y a pas de distinction fonctions / procdures en PHP. Les fonctions PHP prennent de 0 n paramtres. Ces paramtres peuvent tre de type quelconque. Remarque : Il faut implmenter la fonction en amont de son utilisation, contrairement au langage C. Dans le cas contraire, PHP sort une erreur du type Call to unsupported or undefined function (fonction) in (file) on line (number). On ne peut pas dclarer le prototype d'une fonction comme par exemple en Pascal.

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 31 / 73

Jean-Marc PUJOS

LES FONCTIONS (2)


Dclaration : La syntaxe de dclaration sappuie sur le mot cl function. Ce mot cl est immdiatement suivi du nom de la fonction par lequel on va lappeler depuis nimporte quel endroit du code PHP, puis des parenthses destines accueillir les ventuels paramtres.
function bonjour() { echo " Bonjour "; } .. bonjour(); // Affiche " Bonjour " lcran.

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 32 / 73

Jean-Marc PUJOS

LES FONCTIONS (3)

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Les fonctions peuvent ou non renvoyer un rsultat. on utilise l'instruction return. La variable retourne peut tre de type quelconque. Elle est transmise par copie..
function bonjour2() { return " Bonjour "; } .. echo bonjour2() ; // Affiche " Bonjour " lcran.

Bibliographie

Le mode de fonctionnement est sensiblement diffrent, la fonction bonjour affiche directement le mot " Bonjour " lcran, alors que saffiche le rsultat de bonjour2.

CNAM UE IHM NSY110

Initiation PHP

Diapositive 33 / 73

Jean-Marc PUJOS

LES FONCTIONS (4)


Par dfaut, les variables globales ne sont pas connues l'intrieur du corps d'une fonction. On peut cependant y accder l'aide du mot-cl global.
$debug_mode= 1; // variable globale . function mafonction() { global $debug_mode; if( $debug_mode ) echo "[DEBUG] in function mafonction()"; . } Une autre solution est d'utiliser le tableau associatif $GLOBALS, qui contient toutes les variables globales dclares un instant T : $GLOBALS['debug_mode'] quivaut $debug_mode.

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 34 / 73

Jean-Marc PUJOS

LES FONCTIONS (5)


Le passage des paramtres par valeur : Afin de passer des paramtres la fonction, il suffit de les insrer lintrieur des parenthses prvues cet effet.
function bonjour($prnom, $nom) { $chane = " Bonjour $prnom $nom " ; // On construit la phrase complte dans la variable locale $chane. return $chane ; // On renvoie la valeur de $chane comme rsultat de la fonction. } .. echo bonjour("Pierre" , "PAUL") ; // Affiche " Bonjour Pierre PAUL " lcran.

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 35 / 73

Jean-Marc PUJOS

LES FONCTIONS (6)


Le passage des paramtres par rfrence :
Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Par dfaut, les paramtres sont transmis par copie, c'est dire que la fonction possde une copie locale de la variable envoye. Avec la mthode du passage des paramtres par rfrence, on passe la fonction ladresse mmoire dune variable existante. Cela se fait en prcdant de & le nom du paramtre. Cela permet de modifier ce paramtre dans la fonction.
function bonjour(&$phrase, $prnom, $nom) { $phrase = " Bonjour $prnom $nom " ; } .. $chane = " "; bonjour($chane, "Pierre" , "PAUL") ; echo $chane ; // Affiche " Bonjour Pierre PAUL " lcran.
Initiation PHP Diapositive 36 / 73 Jean-Marc PUJOS

Bibliographie

CNAM UE IHM NSY110

LES FONCTIONS (7)

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Le passage des paramtres par dfaut : Les paramtres optionnels sont autoriss : il suffit de leur affecter une valeur par dfaut.
function mafonction( $param1 = "inconnu", $param2="" ) { echo "param1=$param1 param2=$param2\n"; } . mafonction( "toto", "titi" ); // => "param1=toto param2=titi" mafonction( "toto" ); // => "param1=toto param2=" mafonction(); // => "param1=inconnu param2="

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 37 / 73

Jean-Marc PUJOS

LES FICHIERS (1)


PHP fournit plusieurs fonctions qui permettent de prendre en charge laccs au systme de fichiers du systme dexploitation du serveur. Oprations lmentaires sur les fichiers en PHP :
copy($source, $destination) $fp=fopen("filemane", $mode) fclose($fp) rename("ancien", "nouveau") fwrite($fp, $str) fputs($fp, $str) readfile( "filename") fgets($fp, $maxlength) fread($fp, $length) Copie dun fichier, Ouvre un fichier et retourne un "id" de fichier, Ferme un fichier ouvert, Renomme un fichier, Ecrit la chane de caractres $str, Correspond fwrite(), Lit un fichier et retourne son contenu, Lit une ligne dun fichier, Lit un nombre donn doctets partir dun fichier.

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 38 / 73

Jean-Marc PUJOS

LES FICHIERS (2)


Laccs un fichier se fait toujours par un identificateur de fichier. Cet "id" est cr avec la fonction fopen() et, est requis comme paramtre par la plupart des autres fonctions de fichiers en PHP.
$path="/usr/local/apache/htdocs/donnees.txt"; $mode="w"; if ($fp= fopen($path, $mode) ) { echo "Le fichier a t ouvert"; } else echo "Fichier impossible ouvrir"; if ( close($fp) ) echo " et a t referm"; ?>
Initiation PHP Diapositive 39 / 73 Jean-Marc PUJOS

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Bibliographie

CNAM UE IHM NSY110

PROGRAMMATION MODULAIRES (1)


La programmation modulaire permet de la rutilisation de code, notamment par l'criture de librairies. De ce fait, PHP permet cette modularit par la programmation de librairies classiques et de classes. Librairies Les librairies sont des fichiers PHP traditionnels. Leur extension tait .inc par convention, mais de plus en plus lextension .PHP est utilise. On peut galement inclure un fichier HTML ou d'autre type, cependant les ventuels tags PHP ne seront pas interprts. On inclus un fichier en utilisant les deux instructions include ou require.

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 40 / 73

Jean-Marc PUJOS

PROGRAMMATION MODULAIRES (2)


Il existe une diffrence importante entre les deux :
Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Un fichier inclus par include est inclus dynamiquement, lors de l'excution du code, cest--dire quil est lu puis interprt. Un fichier inclus par require est inclus avant l'interprtation du code. Il est quivalent la directive #include du langage C.

On peut comprendre la diffrence sur l'exemple ci-dessous:


if( $user == "Administrateur" ) { include 'admin_fonctions.php'; } if( $user == "Administrateur" ) { require 'admin_fonctions.php'; }

Bibliographie

Avec include, le rsultat est celui escompt, tandis qu'avec require, le fichier admin_fonctions.php est inclus quelque soit le rsultat du test if.
Initiation PHP Diapositive 41 / 73 Jean-Marc PUJOS

CNAM UE IHM NSY110

PROGRAMMATION OO (1)
Programmation Oriente Objet
Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

PHP dispose des concepts de POO (Programmation Oriente Objet) au travers des classes. Rappelons dabord quun objet possde des attributs et des mthodes, et doit utiliser les mcanismes dhritage et de polymorphisme.
Attribut Mthode caractristique dun objet. action qui sapplique un objet

Hritage dfinition dun objet comme appartenant la mme famille quun autre objet plus gnral, dont il hrite des attributs et des mthodes. Polymorphisme capacit dun ensemble dobjet excuter des mthodes de mme nom, mais dont le comportement est propre chacune des diffrentes versions.
Initiation PHP Diapositive 42 / 73 Jean-Marc PUJOS

Bibliographie

CNAM UE IHM NSY110

PROGRAMMATION OO (2) Les classes


Une classe est la description complte dun objet. Elle comprend la dclaration des attributs ainsi que limplmentation des mthodes de cet objet. La cration dun objet est dclenche par celle dune instance de la classe qui le dcrit. Une bibliothque de composants est un ensemble de fichiers contenant des dfinitions de classes, que lon peut inclure en tte des programmes qui utilisent ces classes. Les classes peuvent tre implmentes laide dautres classes. Elles sont alors dfinies selon le principe des couches successives, par empilage des classes de haut niveau sur des classes de bas niveau (cf. les fonctions).

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 43 / 73

Jean-Marc PUJOS

PROGRAMMATION OO (3)
Dclaration
Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

La dclaration dune classe sappuie sur le mot cl class. La syntaxe est comparable celle de la dclaration des fonctions.
class ma_classe { }

Affectation Pour exploiter les mthodes et les proprits dun objet, on utilise un accesseur dont la syntaxe est constitue des caractres - et > cte cte : -> $objet_test -> ma_mthode() ; // appelle la mthode $objet_test -> ma_proprit ; // accde la proprit Oprateur de la classe courante $this-> est l'oprateur de self-rfrence. On peut utiliser un espace pour plus de lisibilit
$this->nb_roues = 4 ; $this -> nb_roues = 4 ;

Bibliographie

Les mthodes se dclarent comme des fonctions.


CNAM UE IHM NSY110 Initiation PHP Diapositive 44 / 73 Jean-Marc PUJOS

PROGRAMMATION OO (4)
class Vhicule { var $nb_roues; function Vhicule( $nb_roues ) { $this-> nb_roues= $nb_roues; } function NbRoues() { return $this-> nb_roues; } ... } $moto= new Vhicule( 2 );

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Constructeur Le constructeur se dclare comme une mthode. Il doit porter le nom de la classe comme en C++ . Il est appel automatiquement lors de l'instanciation de la classe.

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 45 / 73

Jean-Marc PUJOS

PROGRAMMATION OO (5)
Hritage L'hritage simple est possible en utilisant extends. Remarque : le constructeur de la classe mre n'est pas appel automatiquement. Il convient donc de le faire si ncessaire.
class Automobile extends Vhicule { var $marque= ""; function Automobile( $marque, $nb_roues ) { $this-> Vhicule( $nb_roues ); // appel constructeur classe parente $this-> marque= $marque; // set de la marque } }

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 46 / 73

Jean-Marc PUJOS

PROGRAMMATION OO (6)

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Limitations Il n'y a pas notion de destructeur d'objet en PHP. L'hritage multiple n'existe pas Il n'y a pas de mthodes et attributs privs. Tout est public et accessible de l'extrieur.

Un objet instanci n'est pas une rfrence (un pointeur) mais une variable, sorte de ''tableau associatif muni de mthodes''. On peut s'en rendre compte sur une copie d'objet : $auto= new Vhicule( 4 ); $moto= $auto; $moto-> nb_roues= 2; echo $auto-> nb_roues; // 2 et non 4 => $auto et $moto sont deux objets distincts.

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 47 / 73

Jean-Marc PUJOS

ACCES aux SGBD (1)


En gnral, la communication entre un programme et une base de donnes suit le schma suivant :
PROGRAMME MIDDLEWARE

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

SGBD

En programmation PHP, il existe 2 mthodes pour mettre en place cette architecture :


1.accder nativement la base par lintermdiaire de lAPI de son middleware associ, 2.passer par ODBC, lavantage dODBC est de proposer une API unifie quelque soit le SGBD utilis.

Bibliographie

En plus d'ODBC, PHP gre en accs natifs de nombreux SGBD :


Oracle, Sybase, Informix, MySQL, Adabas, Empress, FilePro, InterBase, mSQL, PostgreSQL, Solid, SQLServer, Unix Dbm.

CNAM UE IHM NSY110

Initiation PHP

Diapositive 48 / 73

Jean-Marc PUJOS

ACCES aux SGBD (2)


Un SGBD est un ensemble d'applications permettant de manipuler les donnes (ajout, suppression, modification et lecture), mais aussi de contrler l'accs. Les donnes sont structures de la manire suivante :

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Bibliographie
Serveur de donnes

CNAM UE IHM NSY110

Initiation PHP

Diapositive 49 / 73

Jean-Marc PUJOS

ACCES aux SGBD (3)

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

L'utilisation en gnral dun SGBD (tel que MySQL) avec PHP s'effectue en 5 temps : 1. 2. 3. 4. 5. Connexion au serveur de donnes Slection de la base de donnes Requte Exploitation des requtes Fermeture de la connexion

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 50 / 73

Jean-Marc PUJOS

ACCES aux SGBD (4)


1- Connexion au serveur de donnes
Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Pour se connecter au serveur de donnes, il existe 2 mthodes :


Ouverture d'une connexion simple avec la fonction mysql_connect Ouverture d'une connexion persistante avec la fonction mysql_pconnect

Remarque : la deuxime mthode diffre de la premire par le fait que la connexion reste active aprs la fin du script.
<? if( mysql_connect("ma_base" , $login , $password ) > 0 ) echo "Connexion russie ! " ; else echo "Connexion impossible ! " ; ?>

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 51 / 73

Jean-Marc PUJOS

ACCES aux SGBD (5)


2- Slection de la base de donnes
Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Pour faire cette slection, utilisez la fonction mysql_select_db et vous lui passez en paramtre, le nom de votre base.
<? if( mysql_select_db("ma_base" ) == True ) echo "Slection de la base russie" ; else echo "Slection de la base impossible" ; ?>

Bibliographie

Remarque : les tapes slection et requte peuvent tre faites en mme temps, mais il est plus simple surtout pour une seule base, de slectionner la table avant de commencer les requtes. Ainsi, toutes les requtes venir utiliseront cette base par dfaut.
Initiation PHP Diapositive 52 / 73 Jean-Marc PUJOS

CNAM UE IHM NSY110

ACCES aux SGBD (6)

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

3- Envoi dune requte


Pour envoyer ces requtes, on peut utiliser 2 fonctions :
mysql_query dans le cas o la base de donnes serait dj slectionne mysql_db_query dans le cas o l'on voudrait slectionner la base en mme temps. <? $requte = "SELECT * FROM membres WHERE pseudo = 'prsident' "; $rsultat = mysql_query( $requte ); ?>

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 53 / 73

Jean-Marc PUJOS

ACCES aux SGBD (7)


4- Exploitation des requtes
Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Aprs l'excution d'une requte de slection, les donnes ne sont pas "affiches", elles sont simplement mises en mmoire, il faut les chercher, enregistrement par enregistrement, et les afficher avec un minimum de traitement. PHP gre un pointeur de rsultat, c'est celui qui est point qui sera retourn. Lorsque vous utilisez une fonction de lecture, le pointeur est dplac sur l'enregistrement suivant et ainsi de suite jusqu' ce qu'il n'y en ait plus. Les fonctions qui retournent un enregistrement sont : mysql_fetch_row, mysql_fetch_array et mysql_fetch_object et prennent comme paramtre l'identifiant de la requte. Les 3 exemples suivants partent d'une requte "SELECT nom, prnom, date FROM membres."
Initiation PHP Diapositive 54 / 73 Jean-Marc PUJOS

Bibliographie

CNAM UE IHM NSY110

ACCES aux SGBD (8)


mysql_fetch_row : Cette fonction retourne un enregistrement sous la forme d'un tableau simple.
<? $enregistrement = mysql_fetch_row ($rsultat); // Affiche le champ - nom echo $enregistrement[0] . "<br>"; // Affiche le champ - prnom echo $enregistrement[1] . "<br> "; // Affiche le champ - date echo $enregistrement[2] . "<br> "; ?>
Initiation PHP

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

mysql_fetch_array : Cette fonction retourne un enregistrement sous la forme d'un tableau associatif.
<? $enregistrement = mysql_fetch_array ($rsultat); // Affiche le champ - prnom echo $enregistrement["prnom"]."<br>"; // Affiche le champ - nom echo $enregistrement["nom"] . "<br>"; // Affiche le champ - date echo $enregistrement["date"] . "<br>"; ?>

Bibliographie

CNAM UE IHM NSY110

Diapositive 55 / 73

Jean-Marc PUJOS

ACCES aux SGBD (9)

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

mysql_fetch_object : Cette fonction retourne un enregistrement sous forme d'une structure (objet).
<? $enregistrement = mysql_fetch_object ($rsultat ); // Affiche le champ - date echo $enregistrement->date . "<br>"; // Affiche le champ - nom echo $enregistrement->nom . "<br>"; // Affiche le champ - prnom echo $enregistrement->prnom . "<br>"; ?>

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 56 / 73

Jean-Marc PUJOS

ACCES aux SGBD (10)


Si il n'y a pas ou plus d'enregistrement lire, ces fonctions retournent "false." Pour savoir combien d'enregistrements ont t retourns par la slection, la commande mysql_num_rows prend comme paramtre l'identifiant de la requte.
<? echo "Il y a " . mysql_num_rows( $rsultat ) . " membre(s) "; while( $enregistrement = mysql_fetch_array( $rsultat )) { echo $enregistrement['nom'] . " " . $enregistrement['prnom']; echo " " . $enregistrement['date'] . "<br>" ; } ?>

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 57 / 73

Jean-Marc PUJOS

ACCES aux SGBD (11)


5- Fermeture de la connexion
Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Vous pouvez fermer la connexion au moyen de la fonction mysql_close, mais il est bon de savoir que cette opration sera faite lorsque le script se terminera. C'est donc une opration facultative.

Gestion des erreurs


Sil y a une erreur dans la syntaxe de la requte, on utilise la fonction mysql_error qui ne prend pas de paramtres.
<? $rsultat = mysql_query( $requte ) or die ("Erreur dans la requte : " . $requte . "<br>Avec l\"erreur : ". mysql_error() ); ?>
Initiation PHP Diapositive 58 / 73 Jean-Marc PUJOS

Bibliographie

CNAM UE IHM NSY110

EXEMPLE (1)
Soit le programme formif.php :
Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Bibliographie

<HTML> <HEAD> <TITLE>Programmation Web avec PHP, Code V-1: Mise en oeuvre d'un test (IF) </TITLE> </HEAD> <BODY> <H1>Exemple de test (IF)</H1> <i>Saisir les nombres entiers tester :</i><br> <FORM action="formifres.php" method=GET> <b><input type=text size=3 name="a"> est-il compris entre <input type=text size=3 name="b"> et <input type=text size=3 name="c">?</b> <br><br> <input type=submit value="Test"> </FORM> <BR><HR><P><A href="menu.php">Retourner au menu principal</A></P> </BODY> </HTML>
Initiation PHP Diapositive 59 / 73 Jean-Marc PUJOS

CNAM UE IHM NSY110

EXEMPLE (2)
qui donne sur un navigateur cette prsentation :
Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 60 / 73

Jean-Marc PUJOS

EXEMPLE (3)
Soit le programme formifres.php :
Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Bibliographie

<HTML><HEAD><TITLE>Programmation Web avec PHP, Code V-2: Mise en oeuvre d'un test (IF), rsultat</TITLE></HEAD> <BODY> <H1>Rsultat de l'exemple de test (IF)</H1> <? $ai = intval($a); $bi = intval($b); $ci = intval($c); if ($ci < $bi) { $tmp = $ci; $ci = $bi; $bi = $tmp; } echo "<font color=\"008800\"><b><i>$ai est-il compris entre $bi et $ci ?<br></i>"; echo "</font><font color=\"ff0000\">"; if ($ai < $bi) {echo "Non, $ai est infrieur $bi " ; } elseif ($ai > $ci) { echo "Non, $ai est suprieur $ci " ; } else { echo "Oui, $ai est compris entre $bi et $ci " ; } ?> <BR><HR><P><A href="menu.php">Retourner au menu principal</A></P> </BODY></HTML>
Initiation PHP Diapositive 61 / 73 Jean-Marc PUJOS

CNAM UE IHM NSY110

EXEMPLE (4)
Ce qui donne sur un navigateur :
Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 62 / 73

Jean-Marc PUJOS

PHP

ASP (1)

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Quelques comparaisons entre PHP et ASP


PHP (4 seulement) possde l'quivalent des Sessions ASP. Cependant, il existe des librairies ( pour PHP3) qui implmente la Session. L'ventail de fonctions PHP est nettement suprieur. (plus de 500 fonctions). PHP implmente la programmation oriente objet. PHP reconnat les balises ASP <% et %> ainsi que <%= (permettant l'affichage de variables ). Il suffit pour cela de modifier la configuration: asp_tags = On. PHP gre en standard -et simplement- le File Upload. PHP implmente les expressions rgulires. En plus d'ODBC, PHP gre en accs natifs de nombreux SGBD:
Oracle, Sybase, Informix, MySQL, Adabas, Empress, FilePro, InterBase, mSQL, PostgreSQL, Solid, SQLServer, Unix Dbm.

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 63 / 73

Jean-Marc PUJOS

PHP
PHP
Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax <? if($myvar) { ?> ... <? } else { ?> ... <? } ?> <? echo "con" . "catnation"; ?> <? Header("Location: page.htm"); ?> conditionnelle <? include("truc.php"); ?> brute <? require "truc.php"; ?> <? code; ?> syntaxe JavaScript <? // commentaire ?> $variable

ASP (2)
ASP
<% code %> syntaxe VBScript <% ' commentaire %> variable <% ="con" & "catnation" %> <% response.redirect "page.htm" %> relative <!-- #include file="truc.asp" --> absolue <!-- #include virtual="/truc.asp" -> <% if myvar <> "" then %> ... <% else %> ... <% end if %>

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 64 / 73

Jean-Marc PUJOS

PHP
PHP
Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax PHP4 <? session_register("email"); $email="info@asp-php.net"; echo $email; ?> <? $bool=mail(...); ?> <? echo getenv(...); ?> <? setcookie("asphp", "toto",time()+86400); ?> <? echo $asphp; ?> <? setcookie("asphp"); ?> (mthode POST) <? echo $champ1; ?> (mthode GET) <? echo $langue; ?>

ASP (3)
ASP
(mthode POST) <% =request.form("champ1") %> (mthode GET) <% =request.querystring("langue") %> Ecrire <% response.cookies("asphp")="toto" response.cookies("asphp").Expires = Date+1 %> Lire <% =request.cookies("asphp") %> Dtruire <% response.cookies("asphp")="" %> <% bool=Mail.sendMail %> <% =request.servervariables(...) %> <% Session("email")="info@asp-php.net" %> <% =Session("email") %>

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 65 / 73

Jean-Marc PUJOS

PHP

ASP (4)

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

PHP
SGBD MySQL : <? mysql_connect($host,$user,$pass); mysql_select_db("$bdd"); ?> <? $inF = fopen($Fnm,"w"); fputs($inF,"Bonjour"); fclose($inF); ?> <? $inF = fopen($Fnm,"r"); echo fgets($inF, 4096); fclose($inF); ?>

ASP
SGBD Access : <% Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open DSN %> <% set inF = FSO.CreateTextFile(Fnm) inF.WriteLine("Bonjour") inF.Close %> <% set inF = FSO.OpenTextFile(Fnm,1,false) %> <% =inF.ReadLine %> <% inF.Close %>

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 66 / 73

Jean-Marc PUJOS

PHP

AJAX (1)

AJAX : le concept
Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

AJAX (pour Asynchronous JavaScript and XML) n'est pas un nouveau langage de programmation, mais plutt une combinaison de diffrentes techniques dj existantes. En rgle gnral, on marie les ingrdients suivants:
(X)HTML et CSS pour la description du contenu JavaScript pour l'interaction du ct du client PHP (ou un autre langage de programmation) pour l'interaction du ct du serveur XML (ou un autre format d'change de donnes) pour le contenu L'objet XMLHttpRequest (avec Firefox, Safari, Opera) ou Microsoft.XMLHTTP (sous Internet Explorer) pour effectuer des transferts en tche de fond

Bibliographie

Principe : une premire page s'affiche, puis diffrents vnements dtects en JavaScript lancent ensuite des requtes du ct du serveur.
Initiation PHP Diapositive 67 / 73 Jean-Marc PUJOS

CNAM UE IHM NSY110

PHP
Navigateur Client
Interface utilisateur

AJAX (2)

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Appel Javascript Donnes HTML+CSS Moteur AJAX

AJAX n'est donc pas un nouveau langage de programmation, mais plutt un concept qui permet de faire des appels asynchrones au serveur depuis le client. Pour cela on utilise le langage JavaScript, et puis XML avec lobjet XMLHttpRequest pour les transmettre de faon asynchrone sur le poste serveur. Lors de ces appels, le serveur retournera des donnes formates souvent en XML- qui seront rcupres et traites laide dun programme JavaScript.

Requte HTTP

T ransport http (s)


Donnes XML

Client
Serveur Web et/ou XML
Activit de lutilisateur

Interface utilisateur du navigateur


Entre Affichage Entre Affichage Entre Affichage

Bases de donnes traitement darrire plan Accs aux ressources

Moteur Ajax
Traitement du client

Entre

Systme Serveur
Temps
Modle dapplication Web Ajax
Transmission Transmission des donnes des donnes Transmission Transmission des donnes des donnes

Bibliographie

Serveur
CNAM UE IHM NSY110 Initiation PHP

Traitement du serveur

Traitement du serveur

Diapositive 68 / 73

Jean-Marc PUJOS

PHP

AJAX (3)

Principe dinteraction entre PHP et AJAX


Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Etape 1 : il faut avoir stock les donnes dans des fichiers en format xml. Ces fichiers peuvent tre soit le rsultat dune requte SQL (select * from table) ou un fichier comportant des donnes, des paramtres respectant une certain format. Ce fichier sera appel et mis jour de manire asynchrone la demande du client. Etape 2 : il faut ensuite crer un objet de la classe XMLHttpRequest pour rcuprer le contenu du fichier XML qui sera trait et affich en utilisant une fonction JavaScript (complte ventuellement par une feuille de style CSS).
cration dune instance de XMLHttpRequest grce l'appel de fonction new XMLHttpRequest() association de larbre XML ce nouvel objet avec une mthode denvoi GET ou POST , il suffit pour se faire dappeler la fonction open() de lobjet avec comme paramtre ladresse o se trouve le fichier XML sur le serveur.

Bibliographie

Etape 3 : il ne reste plus qu traiter ce fichier car ce stade on a la rponse du serveur en arrire plan, c'est--dire sans que la page affiche sur le navigateur ne bouge, on pourra donc linterroger avec du code JavaScript et puis mettre jour certaines parties de la page (avec le mme langage)

CNAM UE IHM NSY110

Initiation PHP

Diapositive 69 / 73

Jean-Marc PUJOS

PHP

AJAX (XMLHttpRequest)

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Bibliographie

XMLHttpRequest xmlHttp = new XMLHttpRequest(); // Corps de la fonction function callingPage (idDiv, rept, cible, extension) {// ne continuer que si lobjet xmlHttp nest pas vide (instanci) if (xmlHttp) { // Tentative de connexion au serveur try { //valeurs (ventuelles) saisies par l'utilisateur, pas de valeur dans ce cas // construction du chemin daccs au fichier selon les paramtres de la fonction var chemin = rept+cible.text+"."+extension; // le rpertoire automatiquement gnr var POSTparams = ""; // Lappel asynchrone (true), avec la mthode POST, vers la variable chemin xmlHttp.open("POST", chemin, true); xmlHttp.onreadystatechange = function(){ // Rcuprer Lors que readyState de lobjet xmlHttp a la valeur 4 et son status=200 if (xmlHttp.readyState == 4){ if (xmlHttp.status == 200){ try { //faire quelque chose de la rponse du serveur : xhr.responseXXX .... document.title=cible.text; //titre de la page est mis jour, cest le nom du fichier var reponse = xmlHttp.responseText;
Initiation PHP Diapositive 70 / 73 Jean-Marc PUJOS

CNAM UE IHM NSY110

PHP

AJAX (XMLHttpRequest)

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Bibliographie

// Le contenu de la div passe en paramtre la valeur reponse, envoy du serveur document.getElementById(idDiv).innerHTML=reponse; } catch(e) { alert("Error reading the response : " + e.toString());} } else {// Afficher un message si le fichier nexiste pas alert("Un problme a t rencontr en chargeant le donnes ***:\n" + xmlHttp.statusText); } } } //cette ligne est ajoute si et seulement si la mthode de open est POST xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); xmlHttp.send(POSTparams); } //afficher un message derreur si lobjet xllHttp=null catch (e) { alert("Connexion au serveur impossible :\n" + e.toString()); } } }//fin de la fonction
Initiation PHP Diapositive 71 / 73 Jean-Marc PUJOS

CNAM UE IHM NSY110

PHP

AJAX (6)

Exemple dinvocation dune mthode partir dun lien :


Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

La mthode sappelle Ma_mthode() et possde 4 paramtres (lidentifiant de la div mettre jour, le rpertoire o se trouve le fichier XML, le nom du fichier et son extension), elle tient compte des dclenchements dexceptions grce aux blocs TRY CATCH. La variable xmlHttp reprsente lobjet XMLHttpRequest qui est instanci lextrieur de la fonction dans le fichier JavaScript. <a href="javascript:Ma_mthode( 'CORP , 'AJAX/RESSOURCES/ , 'Ressources1 , 'php , 'Ressources );"> <img src = "Images/gestion_ressources.PNG" height="90" class="imgMenue" /></a>

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 72 / 73

Jean-Marc PUJOS

BIBLIOGRAPHIE
Les sites Web :
http://www.php.net/ (Site officiel PHP) http://www.phpindex.com/ http://www.phpfrance.com/ http://www.phpinfo.net/ http://www.phpdebutant.com/ http://www.ilovephp.com/ http://www.asp-php.com/ http://www.mysql.org/ (Site officiel MYSQL)

Introduction Variables & Ctes Oprateurs Tableaux Contrles Fonctions Fichiers Programmation SGBD Exemple PHP PHP ASP Ajax

Mais aussi les ouvrages :


Programmation Web avec PHP C. Lacroix, N. Leprince, C. Boggero, C. Lauer ditions Eyrolles Vos premiers pas avec PHP 4 J. Engels ditions Eyrolles Grand livre PHP4 & MySQL G. Leierer, R. Stoll ditions Eyrolles

Bibliographie

CNAM UE IHM NSY110

Initiation PHP

Diapositive 73 / 73

Jean-Marc PUJOS