Le langage PHP (2)

54
La programmation orient´ ee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donn´ ees PHP/MySQL Le langage PHP (2) Walid Belkhir Universit´ e de Provence [email protected] http://www.lif.univ-mrs.fr/belkhir/ 1 / 54

Transcript of Le langage PHP (2)

Page 1: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Le langage PHP (2)

Walid BelkhirUniversite de Provence

[email protected]://www.lif.univ-mrs.fr/∼belkhir/

1 / 54

Page 2: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

1 La programmation orientee objet

2 Gestion de Connexions HTTP

3 Manipulation de fichiers

4 Transmission des donnees

5 PHP/MySQL2 / 54

Page 3: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Plan

1 La programmation orientee objet

2 Gestion de Connexions HTTP

3 Manipulation de fichiers

4 Transmission des donnees

5 PHP/MySQL

3 / 54

Page 4: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Les objets

Definition d’une classeclass Personne {//Attributsvar $nom ;var $prenom, $age ;

//Constructeurfunction Personne ($n, $p, $a) {$this->nom = $n ;$this->prenom = $p ;$this->age = $a ;} }

// La construction d’un objet (ou instanciation)$p = new Personne(”Toto”, ”Jean”, 36) ;// Quel est son age ?echo ”L’age de $p->prenom $p->nom est $p->age ans” ;

4 / 54

Page 5: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Les objets

Declaration de methodes :class Personne {// definition des attributsvar $nom, $prenom, $age,// definition du constructeur portant le nom de la classefunction Personne ($n, $p, $a) {$this->nom = $n ;$this->prenom = $p ;$this->age = $a ;}// definition de methodesfunction presenteToi() {echo ”Bonjour, je m’appelle \n” ;echo $this->prenom . ” ” . $this->nom .”\n” ;echo ”j’ai actuellement ” . $this->age . ” ans\n” ;} }

5 / 54

Page 6: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Les objets

Creation d’objet :$toto = new Personne(”TOTO”,”Titi”, 99) ;Acces aux attributs et aux methodes :echo $toto->age ;$toto->presenteToi() ;

6 / 54

Page 7: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Heritage (1/2)

Declaration de la classe heritee Employe< ? // fichier Employe.phprequire(”Personne.php”) ;class Employe extends Personne {// attributs supplementaires// $competences doit etre un tableauvar $service ;var $competences ;function Employe($ser, $c, $n, $p, $a) {$this->service = $ser ;$this->competences = $c ;$this->Personne($n, $p, $a) ;}function ajout competence($comp) {if ( ! empty($comp) )$this->competences[] = $comp ;

}7 / 54

Page 8: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Heritage (2/2)

function presenteToi() {// appel de la methode de la super-classeparent : :presenteToi() ;echo ”Je travaille dans le service $this->service <BR>” ;if (sizeof($this->competences)>0) {echo ”Voici la liste de mes competences : <ul>” ;foreach ($this->competences as $competence)

echo ”<li>$competence</li>” ;echo ”</ul> <p>” ;} }} // fin classe Employe ?>

8 / 54

Page 9: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Les objets

Particularites de PHP

Les attributs et les methodes sont publics

Il n’y a pas de destructeurs : les objets sont liberesautomatiquement quand ils ne sont plus utilises. ( ?)

La duree de vie d’un objet n’excede pas la duree d’executiondu script qui le cree.

9 / 54

Page 10: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Linearisation

serialize() : fonction qui transforme les objets en une chaınede caracteres

< ?php$toto = new Personne(”TOTO”,”titi”,99) ;$toto Lineaire = serialize($toto) ;$toto de Depart = unserialize($toto Lineaire) ;$toto de Depart->decritToi() ;?>

10 / 54

Page 11: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Les fonctions magiques

Supposant que les objets ont ouvert une connexion a une basede donnees et ne l’ont pas encore fermee

=⇒ il est preferable de s’assurer que certaines operationssoit effectuees avant que l’objet ne soit linearise

C’est le role de la fonction magique sleep(). Cette fonction,si elle existe dans l’objet sera automatiquement appelee par lafonction serialize() et permettra de fermer toute vosconnexions

La fonction sleep() retourne obligatoirement un tableaucontenant la liste des attributs a lineariser.

La fonction magique wakeup() est, si elle existe,automatiquement appelee par la fonction unserialize(). Ellepourra alors reconnecter l’objet a la base de donnees oureinitialiser certains attributs.

11 / 54

Page 12: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Les fonction magiques : un exemple

< ?phpclass Personne {

...function sleep() {

$this->age = 0 ;return array(’age’) ;

}

function wakeup() {$this->age = 100 ;

}}?>

12 / 54

Page 13: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Plan

1 La programmation orientee objet

2 Gestion de Connexions HTTP

3 Manipulation de fichiers

4 Transmission des donnees

5 PHP/MySQL

13 / 54

Page 14: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Timeout

par defaut, au bout de 30 secondes d’execution (directivemax execution time), le script passe a l’etat TIMEOUT

set time out(sec) : modifier la valeur de timeout

connection timeout : retourne TRUE si le timeout est arrive aecheance

la fonction de terminaison pre-enregistree avecregister shutdown function(func) est appele quand le timeoutexpire

14 / 54

Page 15: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Les sessions

Une session PHP permet de stocker des informations del’utilisateur sur le serveur (son panier, ses identifiants deconnection. . . )

Ceci offre un haut niveau de securite ( a l’inverse des cookiesqui stockent les informations directement sur la machine duclient)

Une session est temporaire et est efface tres rapidement duserveur. (Le temps moyen est de 30 minutes par defaut)

15 / 54

Page 16: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Gestion des session

PHP permet de sauver des informations entre deux requetesHTTP (valeur de variables)

avec PHP3, il faut une bibliotheque complementaireinclus dans PHP4

Principes (avec PHP4)

chaque nouvel utilisateur se voit attribuer un identificateur desession (SID)par defaut, ce numero est transmis a l’aide d’un cookie ; sinon(si l’utilisateur n’accepte pas les cookies) PHP propagedirectement le SID via l’URLquand un utilisateur accede a la page, PHP4, verifie si unidentificateur de session est present dans la requete HTTP

16 / 54

Page 17: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Les sessions

Le demarrage d’une session se fait dans les cas suivants :

session.auto start=on dans php.inilors de l’appel de session start() ou de session register()dans le cas ou le numero de session est valide, toutl’environnement de celle-ci est restaure dans $ SESSION

session destroy pour detruire une session,session unregister() pour de-enregistrer une variable

Par des defaut, les variables de session sont stockees dans unfichier du serveur

Le code de demarrage de session doit etre inclus dans la pageavant tout code HTML

17 / 54

Page 18: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Gestion de sessions : un exemple

< ?php // dans une fichier F1.phpsession start() ;session register(’user’) ; // $user sera sauvegarde$user = ”toto” ; ?>

< ?php // dans un fichier F2.phpsession start() ;echo ”Vous etes {$ SESSION[’user’]}” ;//va afficher ”Vous etes toto”?>

18 / 54

Page 19: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Gestion des cookies

setcookie() permet de mettre en place un cookie (envoie versle client)

La fonction setcookie doit etre place avant tout code HTML

syntaxe : setcookie(”name”,”value”,expire,”path”,”domain”,secure)

expire : est un time stamp UNIXsecure : vaut 0 ou 1

print($ COOKIE) : affiche tous les cookies en provenance duclient

19 / 54

Page 20: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Gestion des cookies

Mise en place d’un cookies :< ?php // le cookie expire dans 3 heuressetcookie(”nb visite”,”1”,mktime()+3600*3,/∼/MesPages”,”cmi.univ-mrs.fr”) ; ?><HTML> ....</HTML>

Effacement d’un cookiesetcookie(”nb visite”,mktime()-1) ;

Lecture / modification d’un cookiesetcookie(”nb visite”,”100”,mktime()+3600*3,/∼/MesPages”,”cmi.univ-mrs.fr”) ;

20 / 54

Page 21: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Plan

1 La programmation orientee objet

2 Gestion de Connexions HTTP

3 Manipulation de fichiers

4 Transmission des donnees

5 PHP/MySQL

21 / 54

Page 22: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

manipulation de fichiers/repertoire

fopen() : ouverture d’un fichier (il est possible de fournir uneURL pour les ficheirs distants)

fclose() : fermeture d’un fichier

fread()/fgets()/fwrite()/fputs() : lecture/ecriture dans unfichier

fgetss() : lire une ligne dans un fichier en supprimant lesbalises HTML

rewind()/ fseek()/ ftell() : positionnement dans le fichier

fpassthru() : lit la totalite du fichier et l’affiche sur la sortiestandard

file exists : teste si le fichier existe

copy()/rename() /unlink() : copie/ renomme / efface unfichier.

22 / 54

Page 23: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Manipulation de fichiers : exemples

Affichage d’une image :< ?phpif( ! $fd = fopen(”Mes images/image1.gif”) )

echo ”Probleme d’ouverture” ;else fpassthru($fd) ;fclose($fd) ; ?>

Copie d’un fichier< ?php$fichier=”image.gif” ;if (file exists($fichier))

copy($fichier,”/Library/”.$fichier) ;else echo ”Le fichier $fichier” n’existe pas” ;?>

23 / 54

Page 24: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Manipulation de repertoires

chdir() : changement de repertoire courant

opendir()/closedir() / mkdir() / rmdir() : ouverture,fermeture, creation, suppression de repertoire

rewind() : repositionnement au debut de repertoire

dir() : instanciation d’un objet repertoire

Exemple : lister le contenu d’un repertoire (commande ls)< ?$rep=dir(”/home/dupond”) ;$rep->rewinddir() ;while($f = $rep->readdir())

echo ”$f \n” ;$rep->closedir() ?>

24 / 54

Page 25: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Telechargement d’un fichier

Il est possible de recevoir des fichiers en provenance du client etd’y associer un traitement

reception par la methode POST : une boite de dialoguepermet a l’utilisateur de selectionner un fichier local<FORM ENCTYPE=”mulipart/form-data” ACTION=”...”METHOD=”POST”><INPUT TYPE=”hidden” NAME=”MAX FILE SIZE”VALUE=”999” >Envoie ce fichier :<INPUT NAME=”userfile” TYPE=”file”>

< TYPE=”submit” VALUE=”Envoyer le fichier” > </FORM>

25 / 54

Page 26: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Telechargement de fichier

le fichier telecharge sera stocke temporairement dans unrepertoire ($TMPDIR) sur le serveur

is uploaded file() : verifier si le fichier a ete bien telecharge

26 / 54

Page 27: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Telechargement de fichiers

Information recus par PHP dans $ FILES

le champ cache MAX FILE SIZE permet a PHP de faire desverifications sur la taille du fichier telecharge

$ FILE[’userfile’][’name’] : nom original du fichier sur lamachine client

$ FILE[’userfile’][type’] : type MIME du fichier

$ FILE[’userfile’][’size’] : taille du fichier en octets

$ FILE[’userfile’][’tmp name’] : nom temporaire du fichier quisera charge sur la machine serveur

$ FILE[’userfile’][’error’] : 0 en cas de reussite dutelechargement

27 / 54

Page 28: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Plan

1 La programmation orientee objet

2 Gestion de Connexions HTTP

3 Manipulation de fichiers

4 Transmission des donnees

5 PHP/MySQL

28 / 54

Page 29: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Transmission des donnees

<form method=”post” action=”cible.php”>On inserera ici les elements de notre formulaire....

</form>

Attribut method : 2 manieres (2 methodes) pour envoyer unformulaire :

1 get : les donnees transiteront par l’URL (on les voie dans labarre d’adresse)on pourra les recuperer grace au tableau $ GET

2 post : donnees ne transiteront pas par l’URLon pourra les recuperer grace au tableau $ POST

Attribut action : designe la page (ex. ”cible.php”) qui recevrales donnees du formulaire et qui sera chargee de les traiter.

29 / 54

Page 30: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Transmission de donnees : petite zone de texte

// fichier : formulaire.php<p>

Cette page ne contient que du HTML.<br />Veuillez taper votre prenom :

</p><form action=”cible.php” method=”post”><p>

<input type=”text” name=”prenom” /><input type=”submit” value=”Valider” />

</p></form>

———————————————// fichier : cible.phpTu t’appelles < ?php echo $ POST[’prenom’] ; ?> !<br>Si tu veux changer de prenom,

<a href=”formulaire.php”>clique ici</a> pour revenir a formulaire.php

30 / 54

Page 31: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Transmission de donnees : grande zone de texte

Code HTML :<textarea name=”message” rows=”8” cols=”45”>Votre message ici.</textarea>

$ POST[’message’] : pour recuperer le contenu de la zone dutexte

31 / 54

Page 32: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Transmission de donnees : liste deroulante

Code HTML :<select name=”choix”><option value=”choix1”>Choix 1</option><option value=”choix2”>Choix 2</option><option value=”choix3”>Choix 3</option><option value=”choix4”>Choix 4</option></select>

=⇒une variable $ POST[’choix’] sera creee,elle contiendra le choix qu’a fait l’utilisateur.S’il a choisi ”Choix 3”, la variable $ POST[’choix’] sera egaleau value correspondant, c’est-a-dire ”choix3”.Liste a choix multiple ? : $ POST[’choix’][$i] ;

32 / 54

Page 33: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Transmission de donnees : case a cocher

Case a cocher : $ POST[’case name’]

Si la case est cochee, alors $ POST[’case’] aura pour valeur”on”

sinon, $ POST[’case name’] n’existe pas ; (on peux faire untest avec isset ($ POST[’case name’]))

33 / 54

Page 34: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Transmission de donnees : boutons d’option

Les boutons d’option

Code HTML :Aimez-vous le Foot ?<input type=”radio” name=”Foot” value=”oui”checked=”checked” > Oui<input type=”radio” name=”Foot” value=”non”> Non

si on a choisit Oui alors $ POST[’Foot’] vaut ”oui”

34 / 54

Page 35: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Plan

1 La programmation orientee objet

2 Gestion de Connexions HTTP

3 Manipulation de fichiers

4 Transmission des donnees

5 PHP/MySQL

35 / 54

Page 36: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

PHP et MySQL

PHP permet d’acceder a de nombreuses SGBD (MySQL,Oracle, ...)

la plupart de ces SGBD sont accessible via le langage SQL(Structured Query Langage) qui permet de realiser desrequetes a la base de donnees

les fonctionnalites de bases de SQL :

connexion au serveur de BD (machine, login, passwd)selection du nom de la base a utiliserrequete SQL vers la baseexploitation du resultat de la requete (affichage, ...)deconnexion

36 / 54

Page 37: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

PHP et MySQL

Exemples de commandes SQL : une table contenant 3 champs(Id, Nom, Prenom)CREATE DATABASE MaBaseCREATE TABLE Personne (Id INT(2) NOT NULL, NOMVARCHAR(25), Prenom VARCHAR(25), PRIMARY KEY(Id))INSERT INTO Personne VALUES (’1’,’Dupond’,’Jack’)INSERT INTO Personne VALUES (’2’,’Durant’,’Paul’)SELECT Nom, Prenom FROM PERSONNE

DELETE FROM Personne WHERE NOM=’Dupont’

PHP n’est qu’un intermediaire entre le client et la base dedonnees

37 / 54

Page 38: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

PHP et MySQL

Configuration de PHP/MySQL : voir php.ini

Les fonctions les plus courantes, utilisees pour acceder a unebase MySQL

mysql connect() : ouvrir une connexion avec le serveur de BDmysql select db() : changer la base active sur la connexion encoursmysql list *() : lister les bases (dbs), les tables (tables), leschamps d’une table (field) disponibles sur le serveur de BDmysql query() : envoyer une requete SQL ; un identifiant estretourne pour pour pouvoir traiter le resultatmysql close() : fermer la connexion avec le serveur

38 / 54

Page 39: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

PHP et MySQL

Traitement du resultat d’une requete SQL :

mysql result() : extraire le contenu d’un champ du resultat

mysql fetch *() : transforme une ligne du resultat du resultaten tableau associatif (dont les cles sont les noms des champsou l’indice de la colonne) en objet (dont les proprietes sont lesnoms des champs)

mysql field *() : obtenir des informations sur les champspresents dans le resultat (type, nom, ...)

mysql free result() : effacer le resultat de la memoire

mysql num fields() et mysql num rows() retournentrespectivement le nombre de champs/lignes du resultat.

39 / 54

Page 40: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

PHP et MySQL

Connexions persistantes au serveur avec mysql pconnect() :

la connexion reste ouverte entre l’execution de 2scripts/requetes differents

la connexion n’est plus fermee automatiquement a la fin duscript PHPaccelere les acces a la base de donnee quand ces derniers sontfrequents

la connexion sera fermee automatiquement apres un certaintemps d’inutilisation

40 / 54

Page 41: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

PHP et MySQL

Traitement des erreurs : 3 possibilite

1 $conn=mysl connect($host, $user, $passwd) ; :=⇒ si la fonction echoue, le programme continue

2 $conn=mysl connect($host, $user, $passwd) ordie(”Connexion impossible ! !”) ;=⇒ si la fonction echoue, un message est affiche et le

programme se termine ( die(”message”) est un alias de lafontcion exit )

3 if ( ! $conn=mysql connect($host, $user, $passwd)){$msg = mysql error() ; echo(”msg”) ; exit ;}

=⇒ si la fonction echoue, le message d’erreur est affiche etle programme se termine ($mysql error() permet de recupererle diagnostique d’echec correspondant au dernier acces auserveur )

41 / 54

Page 42: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

PHP et MySQL : exemple (1/2)

< ?php/* ajout personne.php : ajoute la personne ($nom,$prenom) dans la tablePersonne de la base MaBase (deja creees) et affiche la table complete *//* connexion */$host = ”localhost” ; $user=”toto”, $passwd=”titi” ; $base=”MaBase” ;$table=”Personne” ;$conn=mysql connect($host,$user,$passwd) or die(”connexionimpossible”) ;mysql select db($base,$conn) or die (”selection impossible”) ;

/* Recherche de l’Id suivant dans la table, on suppose que Id= numerode la ligne*/$query=”SELECT * FROM $table” ;$result=mysql query($query) or die(”echecs de la requete 1”) ;$next id =mysql num rows($result) + 1 ;mysql free result($result) ;

/* Ajout de ($next id,$nom,$prenom) dans la table */$query=”INSERT INTO $table VALUES(’$next id’,’$nom’,’$prenom’)” ;

mysql query($query) or die (”Echecs de la requete 2”) ; 42 / 54

Page 43: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

PHP et MySQL : exemple (2/2)

/* Affichage complet de la table */$query = ”SELECT Nom,Prenom, FROM $table” ;$result = mysql query($query) or die (”Echec de la requete 3”) ;echo”<table>\n” ;while($ligne= mysql fetch array($result,MYSQL ASSOC)){

echo”<tr>” ;foreach($ligne as $valeur champ){

echo ”<td>$valeur champ</td>” ;}echo ”</tr>” ;

}echo ”</table>” ;

/* Liberation du resultat */mysql free result($result) ;/* Fermeture de la connexion*/mysql close($conn) ;

?>

43 / 54

Page 44: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Quelques fonctions MySql ( /)

bool mysql select db ( string $database name , resource$link identifier ) : selectionne une base de donnees MySQLsur le serveur associe avec le parametre $link identifier .Chaque appel a la fonction mysql query sera executee sur labase de donnees active.

$database name le nom de la base de donnees a selectionner.$link identifier : la connexion MySQL.

1 S’il n’est pas specifie, la derniere connexion ouverte avec lafonction mysql connect sera utilisee.

2 Si une telle connexion n’est pas trouvee, la fonction tenterad’ouvrir une connexion, comme si la fonction mysql connectavait ete appelee sans argument.

3 Si aucune connexion n’est trouvee ou etablie, une alerteE WARNING est generee.

Cette fonction retourne TRUE en cas de succes, FALSE encas d’echec.

44 / 54

Page 45: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Quelques fonctions MySql

int mysql affected rows ([ resource $link identifier ] ) : lenombre des lignes touchees par la derniere requete : INSERT,UDPATE, REPLACE et DELETE asssocie a $link identifier.Ex. mysql query(’DELETE FROM mytable WHERE 0’) ;

printf(”Nombre de lignes suprimes : ”, mysql affected rows()) ;

bool mysql create db ( string $database name [, resource$link identifier ] ) : cree( ?) une nouvelle base de donnee sur leserveur dont l’identifiant est $link identifier.

45 / 54

Page 46: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Quelques fonction MySql

array mysql fetch array ( resource $result [, int $result type =MYSQL BOTH ] ) : retourne une ligne de resultat MySQLsous la forme d’un tableau associatif, d’un tableau indexe, oules deux

$result La ressource de resultat qui vient d’etre evaluee. Ceresultat vient de l’appel a la fonction mysql query().$result type : Le type de tableau a recuperer. C’est uneconstante qui peut prendre les valeurs suivantes :MYSQL ASSOC , MYSQL NUM , et la valeur par defaut estMYSQL BOTH .

46 / 54

Page 47: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Exemple : mysql fetch array avec MYSQL NUM

< ?phpmysql connect(”localhost”, ”mysql user”, ”mysql password”) or

die(”Impossible de se connecter : ” . mysql error()) ;mysql select db(”mydb”) ;$result = mysql query(”SELECT id, name FROM mytable”) ;while ($row = mysql fetch array($result, MYSQL NUM)) {

printf(”ID : Nom :”, $row[0], $row[1]) ;}mysql free result($result) ;?>

47 / 54

Page 48: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Exemple : mysql fetch array avec MYSQL ASSOC

< ?phpmysql connect(”localhost”, ”mysql user”, ”mysql password”) or

die(”Impossible de se connecter : ” . mysql error()) ;mysql select db(”mydb”) ;$result = mysql query(”SELECT id, name FROM mytable”) ;while ($row = mysql fetch array($result, MYSQL NUM)) {

printf(”ID : Nom :”, $row[”id”], $row[”name”]) ;}mysql free result($result) ;?>

48 / 54

Page 49: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Exemple : mysql fetch array avec MYSQL BOTH

< ?phpmysql connect(”localhost”, ”mysql user”, ”mysql password”) or

die(”Impossible de se connecter : ” . mysql error()) ;mysql select db(”mydb”) ;$result = mysql query(”SELECT id, name FROM mytable”) ;while ($row = mysql fetch array($result, MYSQL NUM)) {

printf(”ID : Nom :”, $row[0], $row[”name”]) ;}mysql free result($result) ;?>

49 / 54

Page 50: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Quelques fonctions MySql

array mysql fetch assoc ( resource $result ) : equivalent amysql fetch array() avec MYSQL ASSOC comme 2ieme

parametre.

array mysql fetch row ( resource $result ) : retourne untableau indexe numeriquement, qui correspond a la ligne duresultat MySQL $result

int mysql field len ( resource $result , int $field offset ) :retourne la taille d’un champ de resultat MySQL

50 / 54

Page 51: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Quelques fonctions MySql

object mysql fetch field( resource $result , int $field offset) :retourne les donnees enregistrees dans une colonne MySQLsous forme d’objet

$result : la ressource de resultat qui vient d’etre evaluee. Ceresultat vient de l’appel a la fonction mysql query .field offset : la position numerique du champ.Retourne un objet contenant les informations sur les champs.Les proprietes de l’objet sont :

1 name - nom de la colonne2 table - nom de la table de la colonne3 def - valeur par defaut de la colonne4 max length - taille maximale de la colonne5 not null - 1 si la colonne ne peut pas etre NULL6 primary key - 1 si la colonne est une cle primaire7 unique key - 1 si la colonne est une cle unique8 multiple key - 1 si la colonne est une cle non unique9 numeric - 1 si la colonne est numerique

10 type - le type de la colonne11 unsigned - 1 si la colonne est non signee12 ... 51 / 54

Page 52: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Quelques fonctions MySql

bool mysql drop db ( string $database name] ) : supprimerune base de donnee

string mysql error ([ resource $link identifier ] ) : retourne lemessage d’erreur (sous forme de texte) de la derniere requete

int mysql field len ( resource $result , int $field offset ) :retourne la longueur du champ specifie ( ?)

string mysql info ([ resource $link identifier ] ) : retourne desinformations detaillees sur la derniere requete

int mysql insert id ([ resource $link identifier ] ) : retournel’ID genere par la derniere requete (i.e. INSERT)

52 / 54

Page 53: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Quelques fonctions MySql

resource mysql list dbs ([ resource $link identifier ] ) : la listedes bases de donnee presentes sur le serveur MySql

resource mysql list fields ( string $database name,string $table name [, resource $link identifier ] ) :

la liste des champs d’une table

resource mysql list processes ([ resource $link identifier ] ) : laliste des processus ( ?)

resource mysql list tables ( string $database [, resource$link identifier ] ) : la liste des tables de la base de donnee

int mysql num fields ( resource $result ) : le nombre dechamps d’une requete

int mysql num rows ( resource $result ) : le nombre de lignesd’une requete

53 / 54

Page 54: Le langage PHP (2)

La programmation orientee objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des donnees PHP/MySQL

Quelques fonctions MySql

bool mysql ping ([ resource $link identifier ] ) : teste si leconnexion avec le serveur est encore etablie, sinonreconnexion.

resource mysql query(string $query [,resource $link identifier ]) : envoie une seule requete

string mysql result(resource $result, int $row [, int $field=0]) :retourne le contenu d’un champ de la requete ( ?)

54 / 54