Vous êtes sur la page 1sur 27

2me partie

--Aller plus loin


avec PHP

Gestion d'une base de donnes _______________________________________ 3


Cration d'une base MySql ______________________________________________ 3

Cration d'une base de donnes MySql ________________________________________ 3


Enregistrer des donnes __________________________________________________ 5

Interrogation d'une base MySql __________________________________________ 5

Ouverture de la connexion sur la base de donnes : mysql_connect() __________________ 5


Slectionner une base de donnes MySQL : mysql_select_db() ______________________ 6
Cration et excution de la requte : mysql_query() ______________________________ 6
Compter le nombre d'enregistrements retourns : mysql_num_rows() _________________ 7
Retour de la ligne de rsultats et affichage des rsultats : mysql_fetch_() ____________ 7
Librer la mmoire : mysql_free_result() ______________________________________ 9
Fermer la connexion : mysql_close() __________________________________________ 9
Rsum : exemple complet ________________________________________________ 10
Quelques autres fonctions MySQL__________________________________________ 10

Accs d'autres types de bases _________________________________________ 12

par des fonctions internes PHP ___________________________________________ 12


par une connexion ODBC _________________________________________________ 12

Accs par ODBC _____________________________________________________ 13

Cration d'une entre ODBC ______________________________________________


Ouverture de la connexion sur la base de donnes : odbc_connect() __________________
Cration et excution d'une requte : odbc_exec() ou odbc_do() ____________________
Retour de la ligne de rsultats : odbc_fetch_row()
et affichage des rsultats : odbc_result () ____________________________________
Affichage de tous les rsultats dans un tableau HTML : odbc_result_all() _____________
Librer la mmoire : odbc_free_result() _____________________________________
Fermer la connexion : odbc_close() _________________________________________
Rsum : 2 exemples complets _____________________________________________
Quelques autres fonctions ODBC ___________________________________________

ENITA Bordeaux UF Informatique (F. Priam / J. Steffe

Fvrier 2002)

13
13
14

14
15
15
15
16
17

Apprendre Php

Les Sessions avec Php 4 ___________________________________________ 19


A quoi servent les sessions ? ____________________________________________ 19
Comment fonctionnent les sessions ? ______________________________________ 19

Du ct du serveur _____________________________________________________ 19
Les fonctions utilises___________________________________________________ 20
Transmettre l'id de session _______________________________________________ 21
Sessions et programmation oriente objet ____________________________________ 22

A quoi ne servent pas les sessions ? _______________________________________ 23


Quelques erreurs communes ____________________________________________ 23
Conclusion _________________________________________________________ 24

Fonctions PHP___________________________________________________ 25
Gestion des chanes de caractres : quelques fonctions_________________________ 25
Fonctions mathmatiques ______________________________________________ 26

ENITA Bordeaux UF Informatique

-2-

Apprendre Php

Gestion d'une base de


donnes
Dans ce document, nous ne parlerons pas de la conception d'une base de donnes : ce thme est abord
dans un autre cours. Seront traits d'abord la cration d'une base de donnes de type MySql et de ses
tables par le module PHPmyAdmin (fourni dans EasyPhp) puis la connexion une base existante,
l'interrogation et la mise jour des donnes, via des requtes SQL MySql dans une page PHP. Enfin,
nous verrons comment se connecter d'autres bases de donnes telles que Access, Oracle,

Cration d'une base MySql


La cration de la base ainsi que celles des tables sera faite l'aide de PhpmyAdmin.
Pour dmarrer ce programme, faire clic droit sur , l'icne de EasyPhp, puis choisir
"Configuration" et "PhpmyAdmin".

Cration d'une base de donnes MySql


Le navigateur s'ouvre proposant :
de crer une nouvelle base de donnes
ou de choisir parmi les bases de donnes dj
cres (liste dans le cadre de gauche)

ENITA Bordeaux UF Informatique

-3-

Apprendre Php

Lorsque la base est cre (ici, elle s'appelle "test"),


la cration d'une table est possible :
Dans la rubrique, "crer une nouvelle table sur la
base test", donner le "nom"de la table et le nombre
de "champs" qu'elle contient. Cette valeur peut tre
modifie ultrieurement.
"Excuter" la commande

Voici l'cran suivant :

On y retrouve les 5 lignes qui vont dcrire les champs de la table, elles-mmes constitues de
diffrentes colonnes.
Champ = nom du champ
Type = type de la donne (numrique, alphanumrique, date, )
Longueur = longueur de la donnes (adr sur 100 caractres)
Attributs = type de valeurs (binaire, non sign, )
Null = la valeur peut tre nulle ou pas
Dfaut = valeur par dfaut
Extra = numrotation automatique (auto_increment)
Primaire = cl de la table (automatiquement indexe et unique)
Index = lors d'une recherche selon ce champ, permet un accs plus rapide aux
enregistrements
Unique = les doublons de ce champ sont interdit dans l'ensemble de la table

ENITA Bordeaux UF Informatique

-4-

Apprendre Php

Enregistrer des donnes

Lorsque la table et les champs sont crs, il est alors possible de saisir des donnes en vue de
l'interroger.

Interrogation d'une base MySql


Pour interroger une base de donnes, il est impratif de matriser le langage SQL. Nous ne le
dtaillerons pas dans ce manuel.
Laccs aux donnes se dcompose en plusieurs tapes :
ouvrir la connexion sur le serveur MySql
ouvrir une connexion sur la base de donnes
dfinir la requte excuter
excuter la requte. On obtient les lignes de rsultats dans un recordset.
extraire les donnes de chaque ligne de rsultat
traiter les donnes (calcul et affichage par exemple)
fermer le recordset pour librer la mmoire
fermer la connexion

Ouverture de la connexion sur la base de donnes : mysql_connect()

La fonction qui ouvre une connexion un serveur MySQL, est mysql_connect() dont la syntaxe est la
suivante :
int mysql_connect (string hostname :port , string username , string password)
avec :
hostname : nom de l'hte ou du site (chane de caractres)
username : nom de connexion la base (=login) (chane de caractres)
password : mot de passe associ au login (chane de caractres)
La fonction retourne un nombre positif si la connexion a russi sinon elle retourne FALSE (=0).
La connexion sera ferme automatiquement ds que l'excution du script sera termine, moins d'tre
ferme explicitement avec mysql_close(), ce qui est fortement conseille.
// connexion locale, login "root" et pas de mot de passe
$maConnexion = mysql_connect ("localhost", "root", "");
if ($maConnexion == FALSE)
// si la connexion a chou
{
die ("connexion impossible"); // affiche le message puis
// arrte le script
}
echo ("connexion russie");
// ou instructions diverses

Autre commande : mysql_pconnect ()


La fonction mysql_pconnect() se comporte exactement comme mysql_connect() mais :
lors de la connexion, la fonction essaie de trouver une connexion permanente dj ouverte sur cet
hte, avec le mme nom d'utilisateur et de mot de passe. Si une telle connexion est trouve, son
identifiant est retourn, sans ouvrir de nouvelle connexion.

ENITA Bordeaux UF Informatique

-5-

Apprendre Php
la connexion au serveur MySQL ne sera pas termine avec la fin du script. Au lieu de cela, le lien
sera conserv pour un prochain accs (la fonction mysql_close() ne terminera pas une connexion
persistante)

Slectionner une base de donnes MySQL : mysql_select_db()

Cette fonction permet d'indiquer dans quelle base se trouvent les donnes traiter.
int mysql_select_db (string database, resource link_identifier )
avec
database : nom de la base de donnes MySql qui contient les tables
link_identifier : identifiant de la connexion ouverte par myql_connect(). C'est un
paramtre facultatif
La fonction retourne TRUE en cas de succs, FALSE en cas d'chec. Toutes les requtes excutes
avec mysql_query() seront faites avec la base de donnes active.
$ConnectBase = mysql_select_db ("maBase", $maConnexion);
if ($ConnectBase == FALSE)
// si la base est inaccessible
{
die ("base inaccessible"); // arrt du script
}
echo ("accs correct la base");

Cration et excution de la requte : mysql_query()

La fonction mysql_query() envoie une requte SQL la base de donnes active. Sa syntaxe est la
suivante :
resource mysql_query (string query, resource link_identifier )
avec :
query : nom de la requte ou chane de caractres contenant la requte
link_identifier : identifiant de la connexion ouverte par myql_connect(). C'est un
paramtre facultatif
La fonction retourne FALSE (=0) pour indiquer l'chec de la requte, c'est--dire qu'elle n'a pas pu
tre excute sur le serveur, le plus souvent dans le cas d'une erreur de syntaxe Sql ou de droits
insuffisants sur la base.
Remarque :. Il est parfaitement possible qu'une requte correcte au niveau de sa syntaxe ne
retourne aucune ligne. La fonction retourne donc TRUE.
Pour les commandes DELETE, INSERT, REPLACE, ou UPDATE, la fonction mysql_affected_rows()
permet de connatre le nombre de lignes affectes.
Pour les commandes SELECT , mysql_query() retourne un identifiant de rsultat que l'on peut passer
mysql_result(). A la fin du traitement, il est conseill de librer la mmoire avec mysql_free_result().
$sql = "Select * from maTable"; // La requte
$result = mysql_db_query ("maBase", $sql);
// envoi au serveur
if ($result == FALSE)
// si la requte est incorrecte
{
die ("requte incorrecte : $sql"); // arrt du script
}
echo ("requte correcte");

ENITA Bordeaux UF Informatique

-6-

Apprendre Php

Autre commande
La fonction mysql_db_query() permet tout la fois d'indiquer de quelle base sont extraites les
donnes et envoie une requte SQL la base de donnes donne en paramtre. Sa syntaxe est la
suivante :
resource mysql_db_query (string database, string query, resource link_identifier )
avec :
database : nom de la base de donnes qui contient les tables
query : nom de la requte ou chane de caractres contenant la requte
link_identifier : identifiant de la connexion ouverte par myql_connect(). C'est un
paramtre facultatif

Compter le nombre d'enregistrements retourns : mysql_num_rows()

La fonction mysql_num_rows() retourne le nombre d'enregistrements qui rpondent la requte.


int mysql_num_rows (resource result_identifier)
avec
result_identifier : identifiant retourn par mysql_query().
Remarque : Cette commande n'est utile que pour les commandes SELECT. Pour connatre le nombre
d'enregistrements traits par INSERT, UPDATE ou DELETE, ce sera mysql_affected_rows()
$result = mysql_query("SELECT nom, prenom FROM maTable");
$nb = mysql_num_rows($result);
echo "il y a $nb enregistrements";

Retour de la ligne de rsultats et affichage des rsultats : mysql_fetch_()

Php possde diffrentes fonctions qui permettent le retour des rsultats issus d'une requte SQL.
L'une permettra d'afficher les rsultats selon la position du champ dans la requte (indice), une autre
selon le nom du champ donn dans la table et une dernire qui permettra tout autant de travailler sur
les indices que sur les noms des champs. La manire d'afficher le rsultat dpendra de la fonction
utilise.

partir des numros de champ : mysql_fetch_row()


La fonction mysql_fetch_row() retourne UNE ligne d'enregistrements appele recordset sous la forme
d'un tableau. Chaque colonne est enregistre sous la forme d'un tableau commenant la position 0.
array mysql_fetch_row (resource result_identifier )
avec :
resource_identifier : identifiant retourn par mysql_query().
Cette fonction retourne un tableau numr qui correspond la ligne demande, ou FALSE, s'il ne
reste plus de ligne. Comme la fonction ne retourne qu'une seule ligne, il faudra boucler sur le nombre
d'enregistrements prcdemment calcul par la fonction mysql_num_rows().

ENITA Bordeaux UF Informatique

-7-

Apprendre Php
On affiche les rsultats comme tant les lments d'un tableau.
// boucle sur le nbre de lignes de $result
for ($i = 0 ; $i < mysql_num_rows($result) ; $i++)
{
// extrait de $result la prochaine ligne sous la forme d'un tableau
numr
$tbl_ligne = mysql_fetch_row ($result);
echo ("$tbl_ligne[0] -- $tbl_ligne[1]<BR>"); // affichage
}

partir des noms de champ : mysql_fetch_object()


La fonction mysql_fetch_object() retourne UNE ligne d'enregistrements appele recordset. cette
fonction est identique mysql_fetch_array(), la diffrence qu'elle retourne un objet la place d'un
tableau. On peut alors accder aux valeurs des champs par leur nom, mais plus par leur indice.
array mysql_fetch_object (resource result_identifier, int result_type )
avec :
resource_identifier : identifiant retourn par mysql_query()
result_type : constante facultative qui peut tre MYSQL_ASSOC,
MYSQL_NUM ou MYSQL_BOTH
Cette fonction retourne une seule ligne sous forme d'un objet dont les proprits correspondent une
ligne de rsultat, ou FALSE, s'il ne reste plus de ligne. Il faudra boucler sur le nombre
d'enregistrements prcdemment calcul par la fonction mysql_num_rows() ou tester s'il ne reste plus
de ligne.
Pour afficher les rsultats, on donne le nom de l'objet suivi du nom du champ dans la base et spar
par ->
// boucle tant qu'il y a des lignes de rsultat dans $result
while ( ($ligne = mysql_fetch_object($result)) == TRUE)
{
echo ("$ligne->nom -- $ ligne->prenom<BR>"); // affichage
}

partir des numros ou des noms de champ : mysql_fetch_array()


La fonction mysql_fetch_array() retourne un tableau qui contient la ligne demande, ou FALSE s'il ne
reste plus de ligne. Il s'agit une fonction tendue de mysql_fetch_row() car elle enregistre les donnes
dans un tableau indices numriques et/ou dans un tableau indices alphanumriques.
array mysql_fetch_array (resource result_identifier, int result_type )
avec :
resource_identifier : identifiant retourn par mysql_query()
result_type : constante facultative qui dterminent l'accessibilit des donnes :
MYSQL_ASSOC : dans tableau indices alphanumriques uniquement
MYSQL_NUM : dans tableau indices numriques uniquement
ou MYSQL_BOTH : on pourra utiliser l'un ou l'autre des indices
Remarque : Si plusieurs colonnes portent le mme nom, il faudra les distinguer par un alias.
exemple : select t1.nom as n1, t2.nom as n2 from t1, t2;
Comme les 2 fonctions prcdentes, cette fonction retourne une seule ligne. Il faudra boucler sur le
nombre d'enregistrements prcdemment calcul par la fonction mysql_num_rows() ou tester s'il ne
reste plus de ligne.

ENITA Bordeaux UF Informatique

-8-

Apprendre Php
Pour afficher les rsultats, on utilise la syntaxe des tableaux indices alphanumriques, les indice
correspondant aux noms des champs dans les tables.
while ( ($ligne = mysql_fetch_array($result)) == TRUE)
{
echo $row["nom"];
echo $row["prenom"];
}

Quelle fonction choisir ?


Concernant la vitesse, mysql_fetch_object() est aussi rapide que mysql_fetch_array() et presque aussi
rapide que mysql_fetch_row() (la diffrence est insignifiante). Etant donn les possibilits plus
grandes apportes par mysql_fetch_array() sans perte de performance, il est conseill d'utiliser cette
fonction.

Librer la mmoire : mysql_free_result()

La fonction mysql_free_result() efface le rsultat de la mmoire pour viter une saturation de la place
mmoire lors de l'excution du script.
int mysql_free_result (resource result_identifier)
avec :
resource_identifier : identifiant retourn par mysql_query()
mysql_free_result ($result);

Fermer la connexion : mysql_close()

La fonction mysql_close() ferme la connexion MySql. Elle retourne FALSE si la connexion a chou et
TRUE en cas de succs.
boolean mysql_close (resource link_identifier )
avec
link_identifier : identifiant de la connexion ouverte par myql_connect().
Remarques :
cette commande n'est pas obligatoire, car toutes les connexions non persistantes seront
automatiquement fermes la fin du script. Toutefois elle est fortement conseille.
mysql_close()ne ferme pas les connexions persistantes gnres par mysql_pconnect().

mysql_close ($maConnexion);

ENITA Bordeaux UF Informatique

-9-

Apprendre Php

Rsum : exemple complet


<?
$host="localhost";
$user="root";
$password="";
$bdd="emploi";
$sql = " select * from offre;";

// nom de l'hte
// nom de login
// mot de passe
// nom de la base
// requte

// connexion au serveur
$maConnexion = mysql_connect ($host, $user, $pasword);
if ($maConnexion == FALSE)
{
die ("La connexion a chou");
}
// dclaration du nom de la base
$ConnectBase = mysql_select_db ("emploi", $maConnexion);
if ($ConnectBase == FALSE)
// si la base est inaccessible
{
die ("base inaccessible"); // arrt du script
}
// envoi au serveur le nom de la requte
$result = mysql_query ($sql);
if ($result == FALSE)
// si la requte est incorrecte
{
die ("requte incorrecte : $sql"); // arrt du script
}
// boucle sur les d'enregistrements retourns
while (($ligne = mysql_fetch_array($result) == TRUE)
{
// affichage des 2 champs "nom_entreprise" et "detail_offre"
echo ("<H3>" . $ligne["nom_entreprise"] .
" -- " . $ligne["detail_offre"] . "</H3>");
}
// libration de l'espace mmoire pris par les recordsets
mysql_free_result ($result);
// libration de la connexion au serveur MySql
mysql_close ($maConnexion);
?>

Quelques autres fonctions MySQL

fonction
mysql_get_host_info
mysql_get_server_info

ENITA Bordeaux UF Informatique

rle et syntaxe
Lit les informations sur l'hte MySQL.
string mysql_get_host_info(resource link_identifier)
Lit les informations sur le serveur MySQL.
string mysql_get_server_info (resource link_identifier)

- 10 -

Apprendre Php
mysql_fetch_lengths
mysql_insert_id
mysql_create_db
mysql_change_user

Retourne la taille de chaque colonne d'une ligne de rsultat.


array mysql_fetch_lengths (resource result_identifier)
Retourne l'identifiant gnr par la dernire requte INSERT.
int mysql_insert_id (resource link_identifier)
Cre une base de donnes MySQL.
int mysql_create_db (string database_name , resource link_identifier)
Change le nom de session de l'utilisateur actif.
int mysql_change_user (string user , string password , string database ,
resource link_identifier)

mysql_field_len
mysql_list_fields

Retourne la longueur du champs spcifi.


int mysql_field_len (resource result_identifier , int field_offset)
: Liste les champs du rsultat MySQL.
resource mysql_list_fields (string database_name , string table_name ,
resource link_identifier)

mysql_list_dbs
mysql_num_fields
mysql_db_name
mysql_error

Liste les bases de donnes disponibles sur le serveur MySQL.


resource mysql_list_dbs (resource link_identifier)
etourne le nombre de champs d'un rsultat.
int mysql_num_fields (resource result_identifier)
Lit les noms des bases de donnes.
int mysql_db_name (resource result_identifier , int row , mixed field)
Retourne le texte associ avec l'erreur gnre lors de la dernire
requte.
string mysql_error (resource link_identifier)

mysql_affected_rows

mysql_field_type
mysql_field_seek
mysql_list_tables
mysql_tablename

Retourne le nombre de lignes affectes lors de la dernire requte


SQL. (utilise dans le cas des requtes de manipulation des donnes
(insert, update, delete, )
int mysql_affected_rows(resource link_identifier)
Retourne le type de la colonne spcifie dans le rsultat courant.
string mysql_field_type (resource result_identifier , int field_offset)
Dplace le pointeur de rsultat.
int mysql_field_seek (resource result_identifier , int field_offset)
Liste les tables d'une base de donnes.
resource mysql_list_tables (string database , resource link_identifier)
Lit le nom de la table qui contient le champs spcifi.
string mysql_tablename (resource result_identifier , int i)

mysql_field_table
mysql_data_seek

mysql_drop_db
mysql_field_name

ENITA Bordeaux UF Informatique

: Retourne le nom de la table o se trouve une colonne.


string mysql_field_table (resource result_identifier , int field_offset)
Dplace le pointeur interne de rsultat vers un numro
d'enregistrement
int mysql_data_seek (resource result_identifier , int row_number)
Efface une base de donnes MySQL.
boolean mysql_drop_db (string database_name , resource link_identifier)
Retourne le nom d'une colonne.
string mysql_field_name (resource result_identifier , int field_index)

- 11 -

Apprendre Php

Accs d'autres types de bases


L'un des gros intrts de PHP est sa facilit accder diverses bases de donnes. PHP contient des
fonctions qui permettent d'accder aux bases de SGBD courants. Mais PHP permet aussi la connexion
aux bases de donnes par l'intermdiaire de ODBC (Open DataBase Connectivity).
Comme pour une base de donnes MySql, la procdure d'accs aux donnes se fait en plusieurs tapes :
ouvrir une connexion sur la base de donnes via ODBC
dfinir la requte excuter
excuter la requte. On obtient les lignes de rsultats dans un recordset.
extraire les donnes de chaque ligne de rsultat
traiter les donnes (calcul et affichage par exemple)
fermer le recordset pour librer la mmoire
fermer la connexion
Les fonctions tant quasiment identiques celles dcrites dans la partie prcdente, nous ne
dtaillerons que les diffrences.

par des fonctions internes PHP

PHP contient des fonctions internes certaines bases. Par exemple :


Oracle, Oracle 8, SQLServer, dBase, filePro, Informix, mSQL, Sybase, PostgreSQL et bien sr
MySQL que nous avons dj vu.
Exemples de fonctions internes :
pour Sybase : sybase_connect(), sybase_fetch_array(), sybase_close(), sybase_result(),
pour Oracle : ora_logon(), ora_exec(), ora_fetch(), ora_logoff(),

par une connexion ODBC

La grande diffrence avec l'utilisation des fonctions natives de PHP, est qu'il est ncessaire d'avoir le
pilote ODBC du type de base laquelle on veut accder, puis de crer le lien entre la base et
l'application. Nous allons le dtailler dans le chapitre suivant.

Qu'est-ce qu'une connexion ODBC ?


ODBC signifie Open DataBase Connectivity. Il s'agit d'un format dfini par Microsoft permettant la
communication entre des clients fonctionnant sous Windows et les SGBD du march.
La technologie ODBC permet d'interfacer de faon standard une application n'importe quel serveur
de bases de donnes, pour peu que celui-ci possde un driver ODBC (la quasi-totalit des SGBD
possdent un tel pilote, dont tous les principaux SGBD du march).
Bien que ODBC permette un interfaage avec des bases de donnes indpendamment du SGBD, cette
technologie reste une solution propritaire de Microsoft.
Cela se traduit par une dpendance de la plateforme (ODBC ne fonctionne que sur les plateformes
Microsoft Windows).

ENITA Bordeaux UF Informatique

- 12 -

Apprendre Php

Accs par ODBC

Cration d'une entre ODBC

Elle doit se faire sur le serveur Web. Le gestionnaire ODBC est prsent sur les systmes Windows 3.1,
9x, 2000 sous l'icne suivante :

sous Windows 2000, la succession de menus est : Dmarrer / Paramtres / Panneau de


configuration / Outils d'administration/ Sources de donnes (ODBC)
sous Windows NT 4, la succession de menus est : Dmarrer / Paramtres / Panneau de
configuration / Sources de donnes ODBC
Cliquer sur l'onglet "sources de donnes systme" puis le bouton "Ajouter"
Slectionner le pilote correspondant la base de donnes.
Exemple : Microsoft Access Driver
Cliquer sur "Terminer"
Dans la bote de dialogue qui apparat :
saisir le "nom de la source de donnes". C'est ce nom qui servira de lien entre l'application
et la base de donnes.
Exemple : eval
La zone "description" est libre. Il s'agit de commentaires.
Il reste indiquer l'endroit o se trouve la base de donnes. Pour cela, cliquer sur
"Slectionner". Indiquer le chemin d'accs la base qui peut tre situe sur le serveur
Web ou sur une machine distante.
L'entre ODBC est cre.

Ouverture de la connexion sur la base de donnes : odbc_connect()

La fonction odbc_connect () permet de se connecter une source de donnes. Elle retourne un


identifiant qui sera ncessaire pour toutes les autres fonctions. En cas d'chec, la valeur sera FALSE
(=0).
int odbc_connect (string dsn, string user, string password, int cursor_type)
avec :
dsn : nom de la source de donnes ODBC (voir ci-dessous) (chane de caractres)
user : nom de connexion la base (=login) (chane de caractres)
password : mot de passe associ au login (chane de caractres)
cursor_type : constante qui peut prendre comme valeurs
SQL_CUR_USE_IF_NEEDED, SQL_CUR_USE_DRIVER, SQL_CUR_DEFAULT,
SQL_CUR_USE_ODBC. Cette dernire valeur peut rsoudre certains
problmes lis aux pointeurs entre autre.

ENITA Bordeaux UF Informatique

- 13 -

Apprendre Php
$dsn = "eval";
$maConnexion = odbc_connect ($dsn, "administrateur", "");
if ($maConnexion == FALSE) // si la connexion a chou
{
die ("chec la connexion); // fin du script
}

Cration et excution d'une requte : odbc_exec() ou odbc_do()

Les 2 fonctions odbc_exec() et do_exec() sont strictement quivalentes et envoient une commande
SQL la source de donnes. Sa syntaxe est la suivante :
resource odbc_exec (resource connection_id, string query_string)
avec :
connection_id : identifiant de la connexion ouverte par odbc_connect().
query : nom de la requte ou chane de caractres contenant la requte
La fonction retourne FALSE (=0) pour indiquer l'chec de la requte, c'est--dire qu'elle n'a pas pu
tre excute sur le serveur, le plus souvent dans le cas d'une erreur de syntaxe Sql ou de droits
insuffisants sur la base.
Remarque : Il est parfaitement possible qu'une requte correcte au niveau de sa syntaxe ne
retourne aucune ligne. La fonction retourne donc TRUE.
$sql = "Select * from maTable"; // La requte
$result = odbc_exec ($maConnexion, $sql); // envoi au serveur
if ($result == FALSE)
// si la requte est incorrecte
{
die ("requte incorrecte : $sql"); // arrt du script
}
echo ("requte correcte");

Autres fonctions : odbc_prepare () et odbc_execute ()


Elle sont utilises pour les excutions multiples de requtes SQL.

Retour de la ligne de rsultats : odbc_fetch_row()


et affichage des rsultats : odbc_result ()

La fonction odbc_fetch_row() retourne UNE ligne d'enregistrements appele recordset.


int odbc_fetch_row (resource result_id, int row_number)
avec :
result_id : identifiant retourn par odbc_exec()
row_number : numro de ligne lire (entier facultatif)
Cette fonction retourne FALSE s'il ne reste plus de ligne. Comme la fonction ne retourne qu'une seule
ligne, il faudra boucler sur le nombre d'enregistrements.
On lit les donnes de rsultats grce la fonction odbc_result().
string odbc_result(odbc_prepare result_id, mixed field)
avec :
result_id : identifiant retourn par odbc_exec()
field : numro de colonne du champ (numrique entier : valeur mini = 1)
ou nom du champ (chane de caractres)

ENITA Bordeaux UF Informatique

- 14 -

Apprendre Php

// boucle sur le nbre de lignes de $result


while (odbc_fetch_row($result) == TRUE)
{
echo (odbc_result($result, "nom") ." -- " .
odbc_result($result, "prenom") . "<BR>"); //affichage
echo (odbc_result($result, 1) ." -- " . // champ "nom"
odbc_result($result, "2) . "<BR>"); // champ "prenom"
}
Remarque : Pour passer en revue toutes les lignes d'un rsultat plusieurs fois, on peut
appeler odbc_fetch_row() avec row_number = 1, puis continuer appeler odbc_fetch_row()
sans le paramtre row_number pour passer en revue tout le rsultat. Si un pilote ne supporte
pas la lecture des lignes par numro, le paramtre sera ignor.

Affichage de tous les rsultats dans un tableau HTML : odbc_result_all()

Php possde une fonction ODBC qui permet d'afficher tous les rsultats d'une requte sous forme
d'un tableau HTML ainsi que le nombre de lignes retournes le tout en une seule ligne d'instruction.
int odbc_result_all (odbc_prepare result_id, string format)
avec :
result_id : identifiant retourn par odbc_exec()
format : chane de caractres qui permet de modifier la prsentation du tableau HTML
odbc_result_all() retourne le nombre de lignes dans le rsultat, ou FALSE en cas d'erreur.
echo (odbc_result_all($result) . "<HR>");

Librer la mmoire : odbc_free_result()

La fonction odbc_free_result() libre les ressources associes un rsultat. Elle n'est ncessaire que
si on craint d'utiliser trop de mmoire lors de l'excution d'un script, car tous les rsultats en
mmoire seront librs la fin du script. Il est conseill de la mettre. Elle retourne toujours la valeur
TRUE.
int odbc_free_result (resource result_identifier)
avec :
resource_identifier : identifiant retourn par odbc_query()
Remarque : Si l'auto-validation est dsactive (voir odbc_autocommit()) et que
odbc_free_result() est appel avant de valider les requtes, toutes les transactions
prpares sont annules
odbc_free_result ($result);

Fermer la connexion : odbc_close()

La fonction odbc_close() ferme la connexion avec la source de donnes. Elle retourne FALSE si la
connexion a chou et TRUE en cas de succs.
boolean mysql_close (resource connection_id )
avec
connection_id : identifiant de la connexion ouverte par odbc_connect().

ENITA Bordeaux UF Informatique

- 15 -

Apprendre Php

Remarques : odbc_close() chouera s'il y a des transactions en cours sur cette connexion.
Dans ce cas, la connexion restera ouverte
mysql_close ($maConnexion);

Rsum : 2 exemples complets


Affichage des rsultats avec boucle sur les enregistrements
<?
// connexion la source de donnes appele "eval"
$maConnexion = odbc_connect ("eval", "administrateur", "");
if ($maConnexion == FALSE) // si la connexion a chou
{
die ("chec la connexion"); // fin du script
}
// dfinition et envoi d'une instruction SQL au serveur
$sql = "select nom_etud, prenom_etud from t_etudiant";
$result = odbc_exec ($maConnexion, $sql); // excution
// boucle sur le nombre d'enregistrements retourns
while (odbc_fetch_row($result) == TRUE) // si ligne trouve
{
echo (odbc_result ($result, "nom_etud") . " -- " .
odbc_result ($result, "prenom_etud") . "<BR>");
}
// libration de la mmoire
odbc_free_result($result);
// fermeture de la connexion avec la source de donnes
odbc_close($maConnexion);
?>

ENITA Bordeaux UF Informatique

- 16 -

Apprendre Php

Affichage de tous les rsultats issus de la requte


<?
// connexion la source de donnes appele "eval"
$maConnexion = odbc_connect ("eval", "administrateur", "");
if ($maConnexion == FALSE) // si la connexion a chou
{
die ("chec la connexion"); // fin du script
}
// dfinition et envoi d'une instruction SQL au serveur
$sql = "select nom_etud, prenom_etud from t_etudiant";
$result = odbc_exec ($maConnexion, $sql); // excution
// affichage des rsultats dans un tableau HTML
echo (odbc_result_all($result) . "<HR>");}
// libration de la mmoire
odbc_free_result($result);
// fermeture de la connexion avec la source de donnes
odbc_close($maConnexion);
?>

Quelques autres fonctions ODBC

fonction
odbc_pconnect

rle et syntaxe
Ouvre une connexion persistante une source de donnes.
resource odbc_pconnect (string dsn , string user , string password , int
cursor_type)

odbc_rollback
odbc_autocommit
odbc_commit
odbc_primarykeys

Annule une transaction.


int odbc_rollback (odbc_prepare connection_id)
Active le mode auto-validation.
int odbc_autocommit (resource connection_id , int OnOff)
Valide une transaction ODBC.
int odbc_commit (resource connection_id)
Liste les colonnes utilises dans une cl primaire.
int odbc_primarykeys (resource connection_id , string qualifier , string
owner , string table)

odbc_num_rows
odbc_field_len
odbc_tableprivileges

Nombre de ligne dans un rsultat.


int odbc_num_rows (odbc_prepare result_id)
Lit la longueur d'un champs.
int odbc_field_len (resource result_id , int field_number)
Liste les tables et leurs privilges.
int odbc_tableprivileges (resource connection_id , string qualifier , string
owner , string name)

odbc_gettypeinfo
odbc_statistics

Liste les types de donnes supports par une source.


int odbc_gettypeinfo (resource connection_id , int data_type)
Calcule des statistiques sur une table.
int odbc_statistics (resource connection_id , string qualifier , string owner ,
string table_name , int unique , int accuracy)

ENITA Bordeaux UF Informatique

- 17 -

Apprendre Php
odbc_error
odbc_columns

Lit le dernier code d'erreur.


string odbc_error (resource connection_id)
Liste les colonnes d'une table.
int odbc_columns (resource connection_id , string qualifier , string owner ,
string table_name , string column_name)

odbc_field_name
odbc_execute
odbc_columnprivileges

Lit le nom de la colonne.


string odbc_field_name (resource result_id , int field_number)
Excute une requte SQL prpare.
int odbc_execute (resource result_id , array parameters_array)
Liste les colonnes et leurs droits associs.
int odbc_columnprivileges (resource connection_id , string qualifier , string
owner , string table_name , string column_name)

odbc_errormsg
odbc_procedures

Lit le dernier message d'erreur.


string odbc_errormsg (int connection_id)
Liste les procdure stockes.
int odbc_procedures (resource connection_id , string qualifier , string owner
, string name)

odbc_foreignkeys

Liste les cls trangres.


int odbc_foreignkeys (resource connection_id , string pk_qualifier , string
pk_owner , string pk_table , string fk_qualifier , string fk_owner , string
fk_table)

odbc_close_all
odbc_procedurecolumns

Ferme toutes les connexions ODBC.


void odbc_close_all ()
Liste les paramtres des procdures.
int odbc_procedurecolumns (resource connection_id , string qualifier ,
string owner , string proc , string column)

odbc_field_precision
odbc_cursor
odbc_setoption
odbc_num_fields
odbc_fetch_into

Alias de odbc_field_len.
string odbc_field_precision (resource result_id , int field_number)
Lecture du pointeur de fiche courante (cursorname).
string odbc_cursor (resource result_id)
Modifie les paramtres ODBC.
int odbc_setoption (resource id , int function , int option , int param)
Nombre de colonnes dans un rsultat.
int odbc_num_fields (resource result_id)
Lit une ligne de rsultat, et la place dans un tableau.
int odbc_fetch_into (resource result_id , int rownumber , array
result_array)

odbc_prepare
odbc_specialcolumns

Prpare une commande pour l'excution.


resource odbc_prepare (resource connection_id , string query_string)
Retourne l'ensemble optimal de colonnes, qui permettent de dfinir
uniquement une ligne dans une table.
int odbc_specialcolumns (resource connection_id , int type , string qualifier ,
string owner , string table , int scope , int nullable)

odbc_field_type
odbc_tables

Type de donnes d'un champs.


string odbc_field_type (resource result_id , int field_number)
Liste les tables d'une source.
int odbc_tables (odbc_setoption connection_id , string qualifier , string
owner , string name , string types)

odbc_field_num

ENITA Bordeaux UF Informatique

Numro de colonne.
int odbc_field_num (resource result_id , string field_name)

- 18 -

Apprendre Php

Les Sessions
avec Php 4
-------------------------------------------------------------------------------Article rdig par Guillaume SMET [Avril 2001] - http://www.phpinfo.net/imp-article.php?art=sessions
--------------------------------------------------------------------------------

A quoi servent les sessions ?


Lorsque quune personne se connecte sur votre site, elle ouvre une session. Il est parfois intressant de
conserver les valeurs de certaines variables tout au long de cette session.
Exemple : La personne entre un login et un mot de passe pour accder au site et on souhaite vrifier au
dbut de chaque page du site que cette personne est bien autorise.
Solutions possibles :
On peut ventuellement transmettre la valeur de ces variables dans lURL mais il sagit parfois de
donnes sensibles, de tableaux, dobjets Ce nest pas une solution lgante et elle nest pas toujours
ralisable. Cette solution est totalement irrecevable quand il sagit de scurit. De plus, une URL est
limite 255 caractres.
On peut galement enregistrer ces donnes en utilisant un cookie sur la machine du client. Ceci pose
plusieurs problmes : si le client naccepte pas les cookies, ce qui est relativement courant, on ne peut
stocker les donnes. De plus, cest une solution client-side assez peu fiable au niveau scurit par
nature.
Aucune de ces solutions nest rellement satisfaisante pour ce que nous souhaitons faire. De nombreux
moyens de grer les sessions ont t dvelopps reposant en gnral sur des bases de donnes. PHP4
introduit des fonctions permettant de grer les sessions relativement simplement. Cest lobjet du
prsent article.

Comment fonctionnent les sessions ?

Du ct du serveur

Lors de louverture dune session, une id de session est attribue au client. Celle-ci permet de
lidentifier et daccder ses variables de session.
Les variables de session sont enregistres sur le serveur dans le rpertoire session.save_path dfini
dans la configuration de PHP sous la forme dun fichier texte par session.
A l'aide de l'id de session de l'utilisateur, PHP peut retrouver la valeur des variables de session dans le
fichier texte correspondant.

ENITA Bordeaux UF Informatique

- 19 -

Apprendre Php
Simplifions : Une personne se connecte avec son login et son mot de passe. On lui donne lid de session
1. On enregistre son login et son mot de passe comme variables de session. Sur le serveur, un fichier
texte session_1 est cr. Il contient login="login rentr"; password="mot de passe rentr". C'est une
simplification assez grossire mais n'hsitez pas aller voir quoi ressemble un tel fichier dans le
rpertoire session.save_path (configuration de PHP).
On comprend assez vite la ncessit de transmettre l'id de session de l'utilisateur de page en page.
Cette question sera aborde au paragraphe 3.

Les fonctions utilises

PHP4 dispose d'un certain nombre de fonctions permettant de manipuler les sessions. Voici les plus
utiles :
session_start : cette fonction est mettre en tte de toutes les pages o vous souhaitez avoir
accs vos variables de session. Il ne doit y avoir aucun code affichable avant l'utilisation de cette
fonction sous peine d'erreur (headers already sent).
Cette fonction ouvre une session s'il n'existe pas de session dj ouverte. Si une session a dj
t ouverte et que l'id de session a t correctement transmise la page, elle reprend la session
existante et permet l'accs aux variables de session correspond cette session.
session_id([id]) : dfinit l'id de session utiliser ou renvoie l'id de session utilise. Lors d'un
session_start, une id de session est automatiquement gnre par PHP. Il n'est donc en gnral pas
ncessaire de la dfinir.
session_name([nom]) : dfinit le nom de la session en cours ou renvoie le nom utilis par la session
en cours. Le nom par dfaut est dfini par le session.name dfini dans la configuration de PHP.
session_register("variable") : permet d'enregistrer la variable de session passe en paramtre. Il
est noter que pour enregistrer $login, il faut utiliser session_register("login").
session_is_registered("variable") : vrifie si la variable spcifie en paramtre est enregistre
dans la session active.
session_unregister("variable") : dtruit une variable de session pralablement enregistre.
session_destroy() : dtruit la session active.
Important : cette liste n'est pas exhaustive et ne dispense en aucun cas de la lecture du
manuel prsent sur php.net, rubrique Sessions.
Reprenons l'exemple vu prcdemment.
Exemple 1 :
<?
session_start(); // Dmarre la session. Spcifie un id de session
$login="nom"; // On dfinit la variable classique $login
$password="mot de passe"; // On dfinit la variable $password
session_register("login"); // On enregistre $login dans la session
session_register("password"); // On enregistre $password dans
// la session
header("Location: exemple2.php?".session_name()."=".session_id());
exit(); // Redirection. On en reparle dans le II.3.
?>

ENITA Bordeaux UF Informatique

- 20 -

Apprendre Php
Exemple 2 :
<?
// Ici $login et $password ne sont pas dfinis
session_start();
// Ils sont dfinis partir d'ici.
echo $login;
echo $password;
if ($login != "nom") session_destroy(); // destruction de la session
?>
Cet exemple simple devrait vous permettre de comprendre comment sont manipules les variables de
session.
Si l'on souhaite modifier la valeur d'une variable de session, il faut procder comme suit :
<?
session_start();
echo $login; // a la valeur de la variable de session correspondante
// la variable $login prsente dans notre page prend une valeur
// diffrente de celle prsente dans la session. La variable de
// session $login n'a pas t modifie ; elle a toujours la mme
// valeur !
$login="nouveau_login";
echo $login; // Affiche "nouveau_login"
// Met jour la variable de session $login avec la nouvelle valeur
// savoir "nouveau_login"
session_register("login");
?>

Transmettre l'id de session

Comme nous l'avons vu prcdemment, l'id de session permet d'identifier un utilisateur de manire
unique et lui donne accs ses variables de session. Il est donc ncessaire de transmettre cette id de
session de page en page. Cette transmission doit tre parfaite car si pour une page l'id de session n'est
pas correctement transmise, le session_start cre une nouvelle session et les variables de session de la
session prcdente sont perdues.
Nous nous placerons ici dans un cadre gnral et ne rentrerons pas dans les cas particuliers de certains
hbergeurs qui utilisent des versions spcifiques de PHP.
Voici les diverses solutions que l'on peut retenir. Il est noter que l'utilisation de telle ou telle solution
dpend la fois de la configuration du serveur et de celle du client.
La solution la plus simple : si PHP a t compil avec l'option -enable-trans-sid et qu'on a configur
session.use_trans_sid 1, il n'est pas ncessaire de se proccuper de transmettre l'id de session,
PHP la transmet automatiquement dans l'URL de manire transparente (on ne voit pas l'id de
session dans l'URL). C'est sans doute la solution la plus lgante et la moins casse-tte.
MAIS, cette solution ne peut pas tre retenue dans la majorit des cas ! En effet, PHP ne gre
plus cette fonctionnalit sitt qu'on effectue une redirection avec un header ! De plus, si on utilise

ENITA Bordeaux UF Informatique

- 21 -

Apprendre Php
des URL absolues, ce qui peut arriver dans certains dveloppements, PHP ne transmet pas l'id de
session car il suppose qu'on se dirige vers un site extrieur.
On peut comme souvent se reposer sur un systme de cookies. PHP le gre d'ailleurs
automatiquement dans sa configuration avec session.use_cookies. S'il est 1, l'id de session est
automatiquement enregistr en tant que cookie sur l'ordinateur du client. Cette solution ne peut
pas non plus tre retenue telle quelle car si le client refuse les cookies, l'id de session n'est pas
enregistre.
On peut dcider de passer chaque fois l'id de session dans l'URL. C'est une solution qui
fonctionne tous les coups mme si elle est lourde et peu lgante.
Les URL seront alors de la forme : "index.php?".session_name()."=".session_id() ou index.php?<?
echo session_name();?>=<? echo session_id(); ?> ou autres variantes du mme genre.
Ce sont les trois solutions que l'on peut retenir a priori. Il n'y a donc pas rellement de solutions
miracles.
J'utilise personnellement une solution "batarde" qui fonctionne dans tous les cas et qui est, mon sens,
relativement lgre.
Je me repose sur le session.use_cookies=1. Cependant, je prvois une solution de secours au cas o les
cookies sont refuss par le client. J'utilise la constante SID dfinie par PHP. SID est une chane vide
si l'id de session a bien t enregistre dans un cookie et vaut session_name()."=".session_id() si l'id de
session n'a pas pu tre enregistre comme cookie.
Mes URL sont donc du type "index.php?".SID ou index.php?<? echo SID; ?> et autres variantes.
On peut d'ailleurs facilement crire une fonction url($chane) qui ajoute SID ou non la fin de l'URL
passe en paramtre si SID est nul ou non. Ceci permet d'viter les ? et les & inutiles en fin d'URL.
NB : cette solution est une solution personnelle. Elle n'est pas parfaite et il existe d'autres mthodes
qui fonctionnent tout aussi bien. A vous de trouver celle qui vous va le mieux.

Sessions et programmation oriente objet

Les variables de session peuvent tre de tout type : chanes, entiers, tableaux, objets Cependant,
quand on utilise des objets, il est ncessaire de prendre quelques prcautions : la dfinition de la classe
doit tre incluse avant le session_start afin que PHP puisse manipuler l'objet enregistr dans la
session.
Exemple :
Supposons l'existence d'une classe Utilisateur dfinie dans le fichier class_utilisateur.inc.php.
Supposons l'existence d'une variable de session $user qui est une instance d'Utilisateur. On crira le
dbut de notre fichier comme suit :

ENITA Bordeaux UF Informatique

- 22 -

Apprendre Php
<?
// Inclusion de la dfinition de Utilisateur
include("class_utilisateur.inc.php");
// PHP connat la dfinition de Utilisateur, il peut donc
// manipuler l'objet $user et rcuprer les donnes stockes
// dans le fichier texte correspondant la session.
session_start();
?>

A quoi ne servent pas les sessions ?


Les sessions ne sont pas utiliser dans tous les cas. Il est parfois plus simple et plus lgant d'utiliser
d'autres solutions. Les sessions ne sappliquent pas de toute faon toutes les situations.
Les sessions ne permettent pas de conserver des informations dune visite une autre. Pour cela, il
faut soit recourir aux cookies pour enregistrer des donnes sur lordinateur du client (avec toujours les
mmes problmes que prcdemment), soit utiliser un systme didentification reposant sur une base
de donnes.
Pour transmettre des informations vers une seule page, les sessions peuvent tre lourdes mettre en
place. On peut alors soit recourir un passage dans lURL pour des informations courtes et peu
sensibles, soit utiliser les champs cachs dun formulaire du type <input type="hidden" name="variable"
value="valeur">.
En conclusion, l'utilisation des sessions PHP4 peut tre trs intressante mais elles ne sont pas
utiliser tort et travers. Leur utilisation est notamment trs diffrente de l'utilisation des cookies.

Quelques erreurs communes


Ce paragraphe reprend quelques messages d'erreurs frquents ainsi que les erreurs les plus souvent
commises lors de l'utilisation des sessions. Cette liste est loin d'tre exhaustive. N'hsitez pas faire
part de vos erreurs et du diagnostic correspondant dans les commentaires.
Erreur 1 :
Warning: Cannot send session cookie - headers already sent by (output started at
c:\easyphp\www\test5.php:2) in c:\easyphp\www\test5.php on line 4
Warning: Cannot send session cache limiter - headers already sent (output started at
c:\easyphp\www\test5.php:2) in c:\easyphp\www\test5.php on line 4
C'est l'erreur la plus classique. Un caractre affichable est prsent avant le session_start. Ceci peut
tre un simple espace ou passage la ligne avant le <? Ou un echo qui ne doit pas tre avant le
session_start.
Erreur 2 :
Fatal error: The script tried to execute a method or access a property of an incomplete
object. Please ensure that the class definition utilisateur of the object you are trying to

ENITA Bordeaux UF Informatique

- 23 -

Apprendre Php
operate on was loaded _before_ the session was started in
c:/easyphp/www/extranetpei/include/securite/fonction_check_auth_user.php on line 26
La classe d'une instance utilise comme variable de session n'a pas t dclare avant le session_start.
PHP n'arrive pas grer cette variable de session car il ne connat pas la structure de l'objet.

Conclusion
Cet article n'a pas pour but d'tre exhaustif ou de remplacer la documentation de PHP. Il s'agit juste
de mettre en lumire ce que l'on peut faire et ne pas faire avec les sessions PHP4 ainsi que les
problmes que l'on peut rencontrer.
Il est loin d'tre parfait ou complet et ne demande qu' tre amlior.

ENITA Bordeaux UF Informatique

- 24 -

Apprendre Php

Fonctions PHP
Gestion des chanes de caractres : quelques fonctions
Fonctions
addslashes ($chaine)

Description
Ajoute un slash devant tous les
caractres spciaux (', ", \, et NULL)

stripslashes ($chaine)

Enlve les slashs ajouts par la fonction


addslashes()

chop ($chaine)
ou rtrim ($chaine)
ltrim ($chaine)
trim ($chaine)

Enlve les espaces de fin de chane


( droite =right).
Enlve les espaces de dbut de chane
Enlve tous les espaces de dbut de
chane et de fin de chane
Retourne le caractre correspondant au
code ASCII donn
Retourne la valeur ASCII du caractre
C'est l'inverse de la fonction chr()
Scinde une chane en morceaux, grce
un caractre dlimiteur separ et met les
valeurs dans un tableau. Si limit est
fourni, le tableau retourn contiendra un
maximum de limit lments, et le dernier
lment contiendra le reste de la chane.
Regroupe tous les lments d'un tableau
dans une chane, avec une chane de
jointure.

chr ($caractere)
ord ($caractere)
explode ($separ,
$chaine, $limit)

implode ($jointure,
$tableau)
ou join ($jointure,
$tableau)
nl2br($chaine)

strcasecmp($chaine1,
$chaine2)

strcmp ($chaine1,
$chaine2)

strip_tags ($chaine,
$tag)

ENITA Bordeaux UF Informatique

Exemple
$x="L'cole";
$y = addslashes ($x);
// "L\'cole"
$y = "L\'cole";
$x = stripslashes ($y);
// "L'cole"
$x = chop(" ENITA "); //" ENITA"
$x = rtrim(" ENITA "); //" ENITA"
$x = ltrim(" ENITA "); //"ENITA "
$x = trim (" ENITA "); // "ENITA"
$x = chr (65);
$x = ord ("A");

// "A"
// = 65

$x = "ENITA Bordeaux";
$mot = explode(" ", $x, 2);
// $mot[0]="ENITA"
// $mot[1]="Bordeaux"

$x[0]="ENITA";
$x[1]="Bordeaux";
$chaine=implode ("- -", $x);
// $chaine="ENITA - - Bordeaux"
Insre un retour ligne HTML <BR> avant $x = "ENITA\nBordeaux";
chaque nouvelle ligne "\n"
$html = nl2br ($x);
// "ENITA<BR>Bordeaux"
$x1= "ENITA Bordeaux";
Compare en binaire des chanes,
$x2 = "enita bordeaux";
insensible la casse. Retourne :
< 0 si chaine1 plus petite que chaine2; > 0 $val=strcasecmp($x1,$x2);
// $val = 0 (chanes identiques)
si chaine1 plus grande que chaine2,
= 0 si elles sont gales
Identique strcasecmp() mais cette
$x1= "ENITA Bordeaux";
fonction tient compte de la casse.
$x2 = "enita bordeaux";
$val=strcmp($x1,$x2);
// < 0
valeur ascii de "E" < valeur ascii de "e"
Enlve les balises HTML et PHP
$x="<H1>ENITA</H1>";
$y = strip_tags ($x); // "ENITA"

- 25 -

Apprendre Php
Fonctions
strlen ($chaine)

Description
Retourne la longueur de la chane

str_pad($chaine,
$longueur,
$remplissage,
$type)
strpos($chaine,
$recherche,
$pos_debut)
str_repeat ($chaine,
$nb)
strrev ($chaine)

Complte une chane avec une autre.


type peut prendre les valeurs de
STR_PAD_RIGHT (par dfaut),
STR_PAD_LEFT, ou STR_PAD_BOTH.
Recherche la premire occurrence d'un
caractre dans une chane.
Rpte une chane

strtolower($chaine)

Inverse l'ordre des caractres d'une


chane
Met tous les caractres en minuscules

strtoupper ($chaine)

Met tous les caractres en majuscules

str_replace($cherche, Remplace toutes les occurrences d'une


$remplace, $chaine) chane par une autre.
substr ($chaine,
$debut, $longueur)
substr_count($chaine
, $sous_chaine)
substr_replace($ss_c
haine, , $remplace,
$debut, $longueur)

Retourne une sous-chane


Compte le nombre de sous-chanes
Remplace une sous-chane par une autre

Exemple
$x = "ENITA Bordeaux";
$lg = strlen ($x); // = 14
$x = "ENITA Bordeaux";
$y = str_pad ($x, 20, "-=");
// "ENITA Bordeaux-=-=-="
$x = "ENITA Bordeaux";
$y = strpos ($x, "de", 1);
// = 10
$x = str_repeat ("=-", 10);
// "=-=-=-=-=-=-=-=-=-=-"
$x = "ENITA Bordeaux";
$y = strrev ($x); // xuaedroB ATINE
$x = "ENITA Bordeaux";
$y = strtolower ($x);
// enita bordeaux
$x = "ENITA Bordeaux";
$y = strtoupper ($x);
// ENITA BORDEAUX
$x = "ENITA BORDEAUX";
$y = str_replace ("E", "W", $x);
// WNITA BORDWAUX
$x = "ENITA Bordeaux";
$y = substr ($x, 3, 5); // "ITA B"
$x = "ENITA Bordeaux";
$y = substr_count($x, "or"); // = 1
$x = "ENITA BORDEAUX";
$y = substr_replace ($x, "DX", 8, 7);
// = "ORDEAUX" est remplac par
"DX"
"ENITA BDX"

Fonctions mathmatiques
Fonctions
abs($nb)

Description
Retourne la valeur absolue d'un nombre

ceil($nb)

Retourne l'entier suprieur ou gal la


valeur donne en paramtre
Number_format($nb, Met en forme $nb avec le nombre de
$nb_dec, $sep_dec, $ places dcimales en utilisant les
sep_mil)
sparateurs dcimal et des milliers.
floor($nb)
Retourne l'entier infrieur ou gal la
valeur donne en paramtre
round($nb)
Arrondit l'entier le plus proche la
valeur donne en paramtre

ENITA Bordeaux UF Informatique

- 26 -

Exemple
$x =abs(3.26) // x = 3.26
$x = abs(-3.26) // x = 3.26
x = Math.ceil(6.01) // x = 7
x = Math.ceil(3.99) // x = 4
$x = number_format(1006.01, 5, ",",
" ") // x = 1 006,01000
$x = floor(6.01) // x = 6
$x = floor(3.99) // x = 3
$x = round(6.01) // x = 6
$x = round(3.8) // x = 4
$x = round(3.5) // x = 4

Apprendre Php
Fonctions
max($nb1, $nb2, )

Description
Retourne le plus grand des nombres
donns en paramtre

min ($nb1, $nb2, )

Retourne le plus petit des nombres


donns en paramtre

pow ($val1, $val2)

Retourne le nombre Val1 la puissance


Val2
Retourne un nombre alatoire compris
entre min et max
Initialise le gnrateur de nombres
alatoires
Renvoie la plus grande valeur alatoire
pouvant tre renvoye par rand()
Retourne un nombre alatoire compris
entre min et max (autre
Initialise le gnrateur de nombres
alatoires
Renvoie la plus grande valeur pouvant
tre renvoye par un appel mt_rand()
renvoie la valeur de Pi
Retourne la racine carre du nombre
pass en paramtre
Retourne l'exponentielle de la valeur nb
Retourne le logarithme de la valeur nb
Retourne le logarithme de nb en base 10
Retourne le sinus de la valeur nb (donne
en radians)
Retourne l'arcsinus de la valeur nb
(donne en radians)
Retourne le cosinus de la valeur nb
(donne en radians)
Retourne l'arcosinus de la valeur nb
(donne en radians)
Retourne la tangente de la valeur nb
(donne en radians)
Retourne l'arctangente de la valeur nb
(donne en radians)

rand ($min, $max)


srand ($val)
Getrandmax ()
mt_rand($min, $max)*
mt_srand($val) *
mt_getrandmax()*
pi()
sqrt($nb)
exp($nb)
log($nb)
log10($nb)
sin($nb)
asin($nb)
cos($nb)
acos($nb)
tan($nb)
atan($nb)

Exemple
$x = max(6, 7.25, -2.1) // x = 7.25
$x = max(-8.21, -3.65, -1) //x=-1
$x = max(5, 5) // x = 5
$x = min(6, 7.25, 2.1) // x = 2.1
$x = min(-8.21, -3.65) // x = -8.21
$x = min(5,5) // x = 5
$x = pow(3, 3) // x = 27
$x = pow(9, 0.5) // (racine carre) x = 3
$x = rand(0, 1)
// x = 0.6489534931546957
srand(12542) //

$x = mt_rand(0, 1)
// x = 0.6489534931546957
mt_srand(12542) //

$x = sqrt(9) // x = 3

* Ces fonctions utilisent les gnrateur de nombre alatoire "Mersenne Twister" qui produit des

nombres utilisables en cryptographie et qui est 4 fois plus rapide que la fonction standard (rand).

ENITA Bordeaux UF Informatique

- 27 -

Centres d'intérêt liés