Beruflich Dokumente
Kultur Dokumente
MESRAR
HTML est un langage de marquage indiquant au navigateur comment doit afficher une page web. Il permet de mettre en forme des textes, d'afficher des images, de crer des tableaux etc...
Pr. A. MESRAR --Module Web Avanc--
Langage de script interprt (pas compil) Donc, portable (le mme script marchera sur plusieurs plateformes) Simple apprendre Librairies riches Open Source (gratuit)
1994 : cration de PHP par Rasmus Lerdorf (compter le nombre de visiteurs de son cv!). Mme anne : connexion des bases de donnes rendue possible. 1995 : PHP 2 1998 : PHP3 (prog. Oriente Objet). 2000 : PHP 4 2004 : PHP 5 (15 millions de pages web)
Pr. A. MESRAR --Module Web Avanc--
<html> <head> <title>Horloge</title> </head> <body> <p> Nous sommes le <?php echo date('d m Y H:i'); ?> </p> </body> </html>
Lorsqu'un client requiert la page prcdente, le serveur traite les instructions php et les traduit en html. On obtient :
<html> <head> <title>Horloge</title> </head> <body> <p> Nous sommes le 07 10 2010 20:22 </p> </body> </html>
Code entre <?php et ?> Inclus dans du html Sensible la casse : header() Header() Instructions termines par ; Blocs d'instructions dlimits par { . . . } Commentaires avec // en fin de ligne ou /* . . . */
13
PHP est faiblement typ (typage implicite) PHP connat en interne diffrents types :
Entiers : -152 Flottants : 13.2 Chanes : " Ceci est une chaine " Boolens : TRUE, FALSE Tableaux
<html> <head> <title>Les Variables</title> </head> <body> <?php $v=10; echo $v; $b=true; echo "<br>".$b; $b1=(2<3); echo "<br>".$b1; $b2=false; echo"<br> ".getType($b2); $var1 = "a"; if(isset($var1)) echo "existe"; else echo "n'existe pas"; ?> </body> </html>
Exemple :
$a = 1; $a++; $a+=4; $a *= 2;
Pr. A. MESRAR --Module Web Avanc--
Sans interpolation : ' . . . ' $a="Ali"; Echo 'Salut. $a'; // affichera : // salut. $a
Ecrire un programme, qui en fonction de la valeur d'une variable $jour (entier compris entre 1 et 7) affiche le jour de la semaine.
2.
3.
Les fonctions
21
Syntaxe similaire au C (et java), sans le typage Dfinition d'une fonction : function factoriel($n){
. . . return $res; }
Appel d'une fonction : $nombre= fact(4); Les variables dfinies l'extrieur de la fonction n'y sont pas connues. Rcursivit possible. En sortie, les paramtres passs la fonction sont inchangs (passage par valeur). Mais on peut passer les paramtres par rfrence (&):
Function puissance(&$nombre,&$indice){ . . . }
Pr. A. MESRAR --Module Web Avanc-22
Exemple : fonction_pass_val.php
<?php function doubler($a) { $a=$a*2; print("valeur du paramtre dans la fonction:$a<br>"); } $b=5; print("valeur du paramtre avant l'appel:$b<br>"); doubler($b); print("valeur du paramtre aprs l'appel:$b<br>"); ?>
Pr. A. MESRAR --Module Web Avanc-24
25
Exemple :fonction_passage_ref.php
<?php function doubler(&$a) { $a=$a*2; print("valeur du paramtre dans la fonction:$a<br>"); } $b=5; print("valeur du paramtre avant l'appel:$b<br>"); doubler($b); print("valeur du paramtre aprs l'appel:$b<br>"); ?>
Pr. A. MESRAR --Module Web Avanc-26
Fonctions rcursives
Dans le corps dune fonction on peut trouver un appel elle-mme Exemple : fonction_recursive.php factorielle
<?php function fact($a) { if ($a==1) return(1); else return($a*fact($a-1)); } $b=5; $c=fact($b); print("$b ! = $c"); ?>
Pr. A. MESRAR --Module Web Avanc-27
Ecrivez la fonction qui calcule le carr d'un nombre. Qu'affiche le programme ci-dessous? Et si l'on rajoute un & devant chacun des paramtres?
//dclaration de la fonction function puissance($nombre,$indice){ $resultat=$nombre; for ($x=$indice; $x>0; $x--){ $resultat = $resultat * $nombre; } $nombre=$resultat; return $nombre; } //Utilisation de la fonction $nombre=2; $indice=5; echo $nombre." puissance ".$indice." vaut ".puissance($nombre, $indice)."<br>";
Pr. A. MESRAR --Module Web Avanc-28
Les tableaux
29
Un tableau est une structure qui peut contenir plusieurs valeurs Les donnes dun tableau ne sont pas forcment de mme type
10
bon
12.3
30
31
Dclaration+affectation :
$fruits=array("pommes", "poires", "oranges");
Quelques fonctions utiles sur les tableaux : sizeof(), sort(), count(), in_array() ...
$calories["bananes"]=500;
$calories=array("pommes"=>300, "bananes"=>500);
Exemple : $tab["nom"]="Le
33
34
On peut crer des tableaux de tableaux => tableaux multidimensionnels. Pour parcourir de tels tableaux, il faut en gnral imbriquer plusieurs boucles foreach Exemple :
$couleurs=array("vives"=>array("rouge"=>"FF0000", "vert"=>"00FF00", "bleu"=>"0000FF"), "douces" => array("rose"=>"FE9ABC", "jaune"=>"FDF189"));
35
Crez un tableau qui associe au Maroc, l'Algrie, et la Tunisie leurs capitales (Rabat, Alger, Tunis), puis faites crire une phrase qui recense les pays prsents dans le tableau et affiche leurs capitales ("la capitale du Maroc est Rabat", etc)
36
PHP et MySQL
37
PHP interagit avec des bases de donnes pour produire des pages web dynamiques PHP : l'interfaage avec plusieurs SGBDs
Access DB2 MySQL Oracle SQL server ...
38
Pourquoi MySQL ?
Disponible pour toutes les plates-formes (Windows, UNIX, Linux) Prsent chez de nombreux hbergeurs Gratuit et Open source (www.mysql.com) Simple installer et utiliser (Requtes SQL) Performance : rapidit, scalabilit, scurit et stabilit Gestion puissante des privilges et des droits daccs Outil accompagnant puissant phpMyAdmin
39
Architecture de MySQL
Client MySQL
Serveur MySQL
Client Apache/PHP
BD
40
Objectifs :
Cration de documents web partir dune BD Alimentation dune BD partir du web Mise jour dune BD partir du web Suppression dans une BD
Pr. A. MESRAR --Module Web Avanc-41
Du ct Serveur MySQL
Reoit la requte SQL Excute la requte SQL Renvoie le rsultat
42
Du ct de PHP
Extrait les donnes du client Envoie la requte SQL MySQL Reoit le rsultat de la requte Formate et envoie le rsultat au client
43
Serveur
Client
Serveur WEB
Page HTML Donnes de la requte
Requte
Rseau
Page HTML
Moteur PHP
Formatage de la rponse
Requte SQL BD
44
Client
Serveur
Serveur WEB
Page
Requt e
Rseau
Page HTML
HTML
Donnes de la requte
Moteur PHP
Formatage de la rponse
rponse
Le serveur MySQL nest pas forcement sur la mme machine du serveur web BD
45
Cration/suppression et modification des tables CREATE, DROP, ALTER Slection/Ajout/modification et suppression des donnes SELECT, INSERT, UPDATE, DELETE
46
Rserves ladministrateur
Cration de BD : CREATE DATABASE Attribution des privilges : GRANT
47
Serveur MySQL
Fermeture de Connexion
Fermeture de Connexion
Pr. A. MESRAR --Module Web Avanc-48
Slection d une BD
mysql_select_db(base)
Fermeture de connexion
mysql_close($lien_db)
49
mysql_fetch_array($resultat)
retourne une ligne de rsultat sous forme de tableau associatif
50
Exemple 1 <?php $liendb = mysql_connect("localhost","root",""); mysql_select_db("BD", $liendb ); $sql = "SELECT nom, prenom FROM Etudiant where CNE = 99"; $resultat = mysql_query($sql, $liendb ); $eleve = mysql_fetch_array($resultat); $nom = $eleve["nom"]; $prenom = $eleve["prenom"]; echo "$nom <br> $prenom"; mysql_close($liendb); ?>
51
52
Exemple2 <?php $liendb = mysql_connect("localhost","Dupont","toto"); mysql_select_db("BD", $liendb ); $sql = "SELECT nom, prenom FROM Etudiant"; $resultat = mysql_query($sql, $liendb ); while( $eleve = mysql_fetch_array($resultat)) { $nom = $eleve["nom"]; $prenom = $eleve["prenom"]; echo "$nom $prenom <br>"; } mysql_close($liendb); ?>
53
<?php $liendb = mysql_connect("localhost","Dupont","toto"); mysql_select_db("BD", $liendb ); $sql = "SELECT nom, prenom FROM Etudiant; $resultat = mysql_query($sql, $liendb ); $n = mysql_num_rows($resultat); for($i=0;$i<$n;$i++) { $eleve = mysql_fetch_array($resultat); $nom = $eleve["nom"]; $prenom = $eleve["prenom"]; echo "$nom $prenom <br>"; } mysql_close($liendb); ?>
54
mysql_free_result($resultat)
libre les ressources alloues pour stocker un rsultat de requte
mysql_num_fields($resultat)
retourne le nombre de champs du rsultat de la requte
mysql_affected_rows($resultat)
retourne le nombre d'enregistrements de la base affects par une requte (cration, mise jour...)
55
Rserv ladministrateur
Cration de BD, des tables Cration des utilisateurs Attributions des privilges Dmarrage et arrt du serveur MySQL etc
56
57
Objectifs
Stockage permanent des donnes chez le serveur Accs ces donnes nimporte quel moment Modifier ou supprimer ces donnes
58
59
60
61
fgets($fd,[n]);
Lit n caractres si n est prsent Lit tous les caractres jusqu la fin de ligne ou la fin du fichier si n est absent
fgetc($fd);
Lit un seul caractre du fichier
62
fputs($fd,$chaine,[n]);
Mme chose que fwrite
Pr. A. MESRAR --Module Web Avanc-63
fseek($fd,n,[ref]);
Se dplacer de n caractres partir dune position donne
SEEK_SET partir du dbut (par dfaut) SEEK_CUR partir de la position courante SEEK_END partir de la fin
64
rename(ancien_nom,nouveau_nom);
Renomme le fichier ancien_nom par nouveau_nom
copy(source,destination)
Copie le fichier source dans le fichier destination
Pr. A. MESRAR --Module Web Avanc-65
66
Fermeture d un fichier
fclose($fd);
Ferme le fichier la fin de son utilisation
67