SlideShare une entreprise Scribd logo
ACCES aux SGBD (1)
En général, la communication entre un programme et une base de données
suit le schéma suivant :
En programmation PHP, il existe 2 méthodes pour mettre en place cette
architecture :
1.accéder nativement à la base par l’intermédiaire de l’API de son
middleware associé,
2.passer par ODBC, l’avantage d’ODBC est de proposer une API unifiée
quelque soit le SGBD utilisé.
En plus d'ODBC, PHP gère en accès natifs de nombreux SGBD :
Oracle, Sybase, Informix, MySQL, Adabas, Empress, FilePro, InterBase, mSQL,
PostgreSQL, Solid, SQLServer, Unix Dbm.
PROGRAMME MIDDLEWARE SGBD
ACCES aux SGBD (2)
Un SGBD est un ensemble d'applications permettant de manipuler les
données (ajout, suppression, modification et lecture), mais aussi de
contrôler l'accès. Les données sont structurées de la manière suivante :
Serveur de données
ACCES aux SGBD (3)
L'utilisation en général d’un SGBD (tel que MySQL) avec PHP
s'effectue en 5 temps :
1. Connexion au serveur de données
2. Sélection de la base de données
3. Requête
4. Exploitation des requêtes
5. Fermeture de la connexion
ACCES aux SGBD (4)
Connexion au serveur de données
Pour se connecter au serveur de données, il existe 2 méthodes :
– Ouverture d'une connexion simple avec la fonction mysql_connect
– Ouverture d'une connexion persistante avec la fonction mysql_pconnect
Remarque : la deuxième méthode diffère de la première par le fait que la
connexion reste active après la fin du script.
<?
if( mysql_connect("ma_base" , $login , $password ) > 0 )
echo "Connexion réussie ! " ;
else
echo "Connexion impossible ! " ;
?>
ACCES aux SGBD (5)
Sélection de la base de données
Pour faire cette sélection, utilisez la fonction mysql_select_db et vous lui
passez en paramètre, le nom de votre base.
<?
if( mysql_select_db("ma_base" ) == True )
echo "Sélection de la base réussie" ;
else
echo "Sélection de la base impossible" ;
?>
Remarque : les étapes sélection et requête peuvent être faites en même
temps, mais il est plus simple surtout pour une seule base, de sélectionner
la table avant de commencer les requêtes. Ainsi, toutes les requêtes à venir
utiliseront cette base par défaut.
ACCES aux SGBD (6)
Envoi d’une requête
Pour envoyer ces requêtes, on peut utiliser 2 fonctions :
– mysql_query dans le cas où la base de données serait déjà sélectionnée
– mysql_db_query dans le cas où l'on voudrait sélectionner la base en même
temps.
<?
$requête = "SELECT * FROM membres WHERE pseudo = 'président' ";
$résultat = mysql_query( $requête );
?>
ACCES aux SGBD (7)
Exploitation des requêtes
Après l'exécution d'une requête de sélection, les données ne sont pas
"affichées", elles sont simplement mises en mémoire, il faut les chercher,
enregistrement par enregistrement, et les afficher avec un minimum de
traitement.
PHP gère un pointeur de résultat, c'est celui qui est pointé qui sera retourné.
Lorsque vous utilisez une fonction de lecture, le pointeur est déplacé sur
l'enregistrement suivant et ainsi de suite jusqu'à ce qu'il n'y en ait plus.
Les fonctions qui retournent un enregistrement sont : mysql_fetch_row,
mysql_fetch_array et mysql_fetch_object et prennent comme paramètre
l'identifiant de la requête.
Les 3 exemples suivants partent d'une requête "SELECT nom, prénom, date
FROM membres."
ACCES aux SGBD (8)
mysql_fetch_row : Cette fonction
retourne un enregistrement sous la
forme d'un tableau simple.
<?
$enregistrement = mysql_fetch_row
($résultat);
// Affiche le champ - nom -
echo $enregistrement[0] . "<br>";
// Affiche le champ - prénom -
echo $enregistrement[1] . "<br> ";
// Affiche le champ - date -
echo $enregistrement[2] . "<br> ";
?>
mysql_fetch_array : Cette fonction
retourne un enregistrement sous la forme
d'un tableau associatif.
<?
$enregistrement = mysql_fetch_array
($résultat);
// Affiche le champ - prénom -
echo $enregistrement["prénom"] .
"<br>";
// Affiche le champ - nom -
echo $enregistrement["nom"] . "<br>";
// Affiche le champ - date -
echo $enregistrement["date"] . "<br>";
?>
ACCES aux SGBD (9)
mysql_fetch_object : Cette fonction retourne un enregistrement sous
forme d'une structure (objet).
<?
$enregistrement = mysql_fetch_object ($résultat );
// Affiche le champ - date -
echo $enregistrement->date . "<br>";
// Affiche le champ - nom -
echo $enregistrement->nom . "<br>";
// Affiche le champ - prénom -
echo $enregistrement->prénom . "<br>";
?>
ACCES aux SGBD (10)
Si il n'y a pas ou plus d'enregistrement à lire, ces fonctions retournent "false."
Pour savoir combien d'enregistrements ont été retournés par la sélection, la
commande mysql_num_rows prend comme paramètre l'identifiant de la
requête.
<?
echo "Il y a " . mysql_num_rows( $résultat ) . " membre(s) ";
while( $enregistrement = mysql_fetch_array( $résultat ))
{
echo $enregistrement['nom'] . " " . $enregistrement['prénom'];
echo " – " . $enregistrement['date'] . "<br>" ;
}
?>
ACCES aux SGBD (11)
Fermeture de la connexion
Vous pouvez fermer la connexion au moyen de la fonction mysql_close, mais il
est bon de savoir que cette opération sera faite lorsque le script se terminera.
C'est donc une opération facultative.
Gestion des erreurs
S’il y a une erreur dans la syntaxe de la requête, on utilise la fonction
mysql_error qui ne prend pas de paramètres.
<?
$résultat = mysql_query( $requête )
or die ("Erreur dans la requête : " . $requête . "<br>Avec l"erreur : " . mysql_error() );
?>

Contenu connexe

Similaire à Développement Web- PHP (partie II).pdf

Présentaion sur le modéle JDBC JEE .pptx
Présentaion sur le modéle JDBC JEE .pptxPrésentaion sur le modéle JDBC JEE .pptx
Présentaion sur le modéle JDBC JEE .pptx
salmachtioui1
 
chapitre 1 Android 2.pptx
chapitre 1 Android 2.pptxchapitre 1 Android 2.pptx
Optimisation du stockage share point 2010
Optimisation du stockage share point 2010Optimisation du stockage share point 2010
Optimisation du stockage share point 2010
Nicolas Georgeault
 
LP_chapitre3_Creation et gestion_BD_2019.pptx
LP_chapitre3_Creation et gestion_BD_2019.pptxLP_chapitre3_Creation et gestion_BD_2019.pptx
LP_chapitre3_Creation et gestion_BD_2019.pptx
FATIMAEZZAHRAEOUBELL
 
Les principes de base de PHP
 Les principes de base de PHP  Les principes de base de PHP
Les principes de base de PHP
EL JAOUARI Ahmed
 
Php cours
Php coursPhp cours
Php cours
funinformatique
 
JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java
Youness Boukouchi
 
3-android.pdf
3-android.pdf3-android.pdf
3-android.pdf
FethiBenYahia1
 
Crud
CrudCrud
Java Database Connectivity
Java Database ConnectivityJava Database Connectivity
Java Database Connectivity
Korteby Farouk
 
Digital GraphTour Paris - Neo4j 4.0, les nouveautés
Digital GraphTour Paris - Neo4j 4.0, les nouveautésDigital GraphTour Paris - Neo4j 4.0, les nouveautés
Digital GraphTour Paris - Neo4j 4.0, les nouveautés
Neo4j
 
Elastic serach
Elastic serachElastic serach
Elastic serach
TAOUFIQ ELFILALI
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDO
Abdoulaye Dieng
 
Bases de données réparties par la pratique
Bases de données réparties par la pratiqueBases de données réparties par la pratique
Bases de données réparties par la pratique
Abdelouahed Abdou
 
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introNosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introOlivier Mallassi
 
Php1
Php1Php1
Fmin103 0910 tpjdbc
Fmin103 0910 tpjdbcFmin103 0910 tpjdbc
Fmin103 0910 tpjdbcKarim Amane
 

Similaire à Développement Web- PHP (partie II).pdf (20)

Présentaion sur le modéle JDBC JEE .pptx
Présentaion sur le modéle JDBC JEE .pptxPrésentaion sur le modéle JDBC JEE .pptx
Présentaion sur le modéle JDBC JEE .pptx
 
chapitre 1 Android 2.pptx
chapitre 1 Android 2.pptxchapitre 1 Android 2.pptx
chapitre 1 Android 2.pptx
 
Optimisation du stockage share point 2010
Optimisation du stockage share point 2010Optimisation du stockage share point 2010
Optimisation du stockage share point 2010
 
LP_chapitre3_Creation et gestion_BD_2019.pptx
LP_chapitre3_Creation et gestion_BD_2019.pptxLP_chapitre3_Creation et gestion_BD_2019.pptx
LP_chapitre3_Creation et gestion_BD_2019.pptx
 
Cours jee 1
Cours jee 1Cours jee 1
Cours jee 1
 
Les principes de base de PHP
 Les principes de base de PHP  Les principes de base de PHP
Les principes de base de PHP
 
Php cours
Php coursPhp cours
Php cours
 
JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java
 
3-android.pdf
3-android.pdf3-android.pdf
3-android.pdf
 
Crud
CrudCrud
Crud
 
Java Database Connectivity
Java Database ConnectivityJava Database Connectivity
Java Database Connectivity
 
Digital GraphTour Paris - Neo4j 4.0, les nouveautés
Digital GraphTour Paris - Neo4j 4.0, les nouveautésDigital GraphTour Paris - Neo4j 4.0, les nouveautés
Digital GraphTour Paris - Neo4j 4.0, les nouveautés
 
Elastic serach
Elastic serachElastic serach
Elastic serach
 
Springioc
SpringiocSpringioc
Springioc
 
Jdbc
JdbcJdbc
Jdbc
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDO
 
Bases de données réparties par la pratique
Bases de données réparties par la pratiqueBases de données réparties par la pratique
Bases de données réparties par la pratique
 
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introNosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
 
Php1
Php1Php1
Php1
 
Fmin103 0910 tpjdbc
Fmin103 0910 tpjdbcFmin103 0910 tpjdbc
Fmin103 0910 tpjdbc
 

Plus de YasushiTsubakik

POO-JAVA-partie3.pdf
POO-JAVA-partie3.pdfPOO-JAVA-partie3.pdf
POO-JAVA-partie3.pdf
YasushiTsubakik
 
POO-JAVA-partie-2.pdf
POO-JAVA-partie-2.pdfPOO-JAVA-partie-2.pdf
POO-JAVA-partie-2.pdf
YasushiTsubakik
 
POO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdfPOO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdf
YasushiTsubakik
 
UML-DiagrammesSequence.pdf
UML-DiagrammesSequence.pdfUML-DiagrammesSequence.pdf
UML-DiagrammesSequence.pdf
YasushiTsubakik
 
Support de cours Conception orientée objets - partie 1.pdf
Support de cours Conception orientée objets - partie 1.pdfSupport de cours Conception orientée objets - partie 1.pdf
Support de cours Conception orientée objets - partie 1.pdf
YasushiTsubakik
 
UML-DiagrammesEtatsTransitions.pdf
UML-DiagrammesEtatsTransitions.pdfUML-DiagrammesEtatsTransitions.pdf
UML-DiagrammesEtatsTransitions.pdf
YasushiTsubakik
 
UML-DiagrammesEtatsTransitionsSuite.pdf
UML-DiagrammesEtatsTransitionsSuite.pdfUML-DiagrammesEtatsTransitionsSuite.pdf
UML-DiagrammesEtatsTransitionsSuite.pdf
YasushiTsubakik
 
UML-Scenarios.pdf
UML-Scenarios.pdfUML-Scenarios.pdf
UML-Scenarios.pdf
YasushiTsubakik
 
Support de cours Conception orientée objets - partie 2.pdf
Support de cours Conception orientée objets - partie 2.pdfSupport de cours Conception orientée objets - partie 2.pdf
Support de cours Conception orientée objets - partie 2.pdf
YasushiTsubakik
 
UML-Contraintes.pdf
UML-Contraintes.pdfUML-Contraintes.pdf
UML-Contraintes.pdf
YasushiTsubakik
 
UML-AssociationsDiverses-Heritage.pdf
UML-AssociationsDiverses-Heritage.pdfUML-AssociationsDiverses-Heritage.pdf
UML-AssociationsDiverses-Heritage.pdf
YasushiTsubakik
 
1-UML CasUtilisation.pdf
1-UML CasUtilisation.pdf1-UML CasUtilisation.pdf
1-UML CasUtilisation.pdf
YasushiTsubakik
 
UML-diagramme de classe Operations.pdf
UML-diagramme de classe Operations.pdfUML-diagramme de classe Operations.pdf
UML-diagramme de classe Operations.pdf
YasushiTsubakik
 
Développement Web- PHP (partie I).pdf
Développement Web- PHP (partie I).pdfDéveloppement Web- PHP (partie I).pdf
Développement Web- PHP (partie I).pdf
YasushiTsubakik
 
Support de Cours Gestion de projets (partie 2) - Tableau de bord.pdf
Support de Cours Gestion de projets (partie 2) - Tableau de bord.pdfSupport de Cours Gestion de projets (partie 2) - Tableau de bord.pdf
Support de Cours Gestion de projets (partie 2) - Tableau de bord.pdf
YasushiTsubakik
 
Planification de projet.pdf
Planification de projet.pdfPlanification de projet.pdf
Planification de projet.pdf
YasushiTsubakik
 
gestion projet Planification PERT.pdf
gestion projet Planification PERT.pdfgestion projet Planification PERT.pdf
gestion projet Planification PERT.pdf
YasushiTsubakik
 
Introduction Cours Gestion de projets.pdf
Introduction Cours Gestion de projets.pdfIntroduction Cours Gestion de projets.pdf
Introduction Cours Gestion de projets.pdf
YasushiTsubakik
 
Les critères de performance.pdf
Les critères de performance.pdfLes critères de performance.pdf
Les critères de performance.pdf
YasushiTsubakik
 
Diagramme des cas d’utilisation.pdf
 Diagramme des cas d’utilisation.pdf Diagramme des cas d’utilisation.pdf
Diagramme des cas d’utilisation.pdf
YasushiTsubakik
 

Plus de YasushiTsubakik (20)

POO-JAVA-partie3.pdf
POO-JAVA-partie3.pdfPOO-JAVA-partie3.pdf
POO-JAVA-partie3.pdf
 
POO-JAVA-partie-2.pdf
POO-JAVA-partie-2.pdfPOO-JAVA-partie-2.pdf
POO-JAVA-partie-2.pdf
 
POO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdfPOO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdf
 
UML-DiagrammesSequence.pdf
UML-DiagrammesSequence.pdfUML-DiagrammesSequence.pdf
UML-DiagrammesSequence.pdf
 
Support de cours Conception orientée objets - partie 1.pdf
Support de cours Conception orientée objets - partie 1.pdfSupport de cours Conception orientée objets - partie 1.pdf
Support de cours Conception orientée objets - partie 1.pdf
 
UML-DiagrammesEtatsTransitions.pdf
UML-DiagrammesEtatsTransitions.pdfUML-DiagrammesEtatsTransitions.pdf
UML-DiagrammesEtatsTransitions.pdf
 
UML-DiagrammesEtatsTransitionsSuite.pdf
UML-DiagrammesEtatsTransitionsSuite.pdfUML-DiagrammesEtatsTransitionsSuite.pdf
UML-DiagrammesEtatsTransitionsSuite.pdf
 
UML-Scenarios.pdf
UML-Scenarios.pdfUML-Scenarios.pdf
UML-Scenarios.pdf
 
Support de cours Conception orientée objets - partie 2.pdf
Support de cours Conception orientée objets - partie 2.pdfSupport de cours Conception orientée objets - partie 2.pdf
Support de cours Conception orientée objets - partie 2.pdf
 
UML-Contraintes.pdf
UML-Contraintes.pdfUML-Contraintes.pdf
UML-Contraintes.pdf
 
UML-AssociationsDiverses-Heritage.pdf
UML-AssociationsDiverses-Heritage.pdfUML-AssociationsDiverses-Heritage.pdf
UML-AssociationsDiverses-Heritage.pdf
 
1-UML CasUtilisation.pdf
1-UML CasUtilisation.pdf1-UML CasUtilisation.pdf
1-UML CasUtilisation.pdf
 
UML-diagramme de classe Operations.pdf
UML-diagramme de classe Operations.pdfUML-diagramme de classe Operations.pdf
UML-diagramme de classe Operations.pdf
 
Développement Web- PHP (partie I).pdf
Développement Web- PHP (partie I).pdfDéveloppement Web- PHP (partie I).pdf
Développement Web- PHP (partie I).pdf
 
Support de Cours Gestion de projets (partie 2) - Tableau de bord.pdf
Support de Cours Gestion de projets (partie 2) - Tableau de bord.pdfSupport de Cours Gestion de projets (partie 2) - Tableau de bord.pdf
Support de Cours Gestion de projets (partie 2) - Tableau de bord.pdf
 
Planification de projet.pdf
Planification de projet.pdfPlanification de projet.pdf
Planification de projet.pdf
 
gestion projet Planification PERT.pdf
gestion projet Planification PERT.pdfgestion projet Planification PERT.pdf
gestion projet Planification PERT.pdf
 
Introduction Cours Gestion de projets.pdf
Introduction Cours Gestion de projets.pdfIntroduction Cours Gestion de projets.pdf
Introduction Cours Gestion de projets.pdf
 
Les critères de performance.pdf
Les critères de performance.pdfLes critères de performance.pdf
Les critères de performance.pdf
 
Diagramme des cas d’utilisation.pdf
 Diagramme des cas d’utilisation.pdf Diagramme des cas d’utilisation.pdf
Diagramme des cas d’utilisation.pdf
 

Dernier

Iris van Herpen. pptx
Iris         van        Herpen.      pptxIris         van        Herpen.      pptx
Iris van Herpen. pptx
Txaruka
 
Iris van Herpen. pptx
Iris         van         Herpen.      pptxIris         van         Herpen.      pptx
Iris van Herpen. pptx
Txaruka
 
Textes de famille concernant les guerres V2.pdf
Textes de famille concernant les guerres V2.pdfTextes de famille concernant les guerres V2.pdf
Textes de famille concernant les guerres V2.pdf
Michel Bruley
 
Newsletter SPW Agriculture en province du Luxembourg du 12-06-24
Newsletter SPW Agriculture en province du Luxembourg du 12-06-24Newsletter SPW Agriculture en province du Luxembourg du 12-06-24
Newsletter SPW Agriculture en province du Luxembourg du 12-06-24
BenotGeorges3
 
Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...
Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...
Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...
M2i Formation
 
Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union - Bilan de l'année 2023Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union
 
Veille Audocdi 90 - mois de juin 2024.pdf
Veille Audocdi 90 - mois de juin 2024.pdfVeille Audocdi 90 - mois de juin 2024.pdf
Veille Audocdi 90 - mois de juin 2024.pdf
frizzole
 

Dernier (7)

Iris van Herpen. pptx
Iris         van        Herpen.      pptxIris         van        Herpen.      pptx
Iris van Herpen. pptx
 
Iris van Herpen. pptx
Iris         van         Herpen.      pptxIris         van         Herpen.      pptx
Iris van Herpen. pptx
 
Textes de famille concernant les guerres V2.pdf
Textes de famille concernant les guerres V2.pdfTextes de famille concernant les guerres V2.pdf
Textes de famille concernant les guerres V2.pdf
 
Newsletter SPW Agriculture en province du Luxembourg du 12-06-24
Newsletter SPW Agriculture en province du Luxembourg du 12-06-24Newsletter SPW Agriculture en province du Luxembourg du 12-06-24
Newsletter SPW Agriculture en province du Luxembourg du 12-06-24
 
Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...
Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...
Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...
 
Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union - Bilan de l'année 2023Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union - Bilan de l'année 2023
 
Veille Audocdi 90 - mois de juin 2024.pdf
Veille Audocdi 90 - mois de juin 2024.pdfVeille Audocdi 90 - mois de juin 2024.pdf
Veille Audocdi 90 - mois de juin 2024.pdf
 

Développement Web- PHP (partie II).pdf

  • 1. ACCES aux SGBD (1) En général, la communication entre un programme et une base de données suit le schéma suivant : En programmation PHP, il existe 2 méthodes pour mettre en place cette architecture : 1.accéder nativement à la base par l’intermédiaire de l’API de son middleware associé, 2.passer par ODBC, l’avantage d’ODBC est de proposer une API unifiée quelque soit le SGBD utilisé. En plus d'ODBC, PHP gère en accès natifs de nombreux SGBD : Oracle, Sybase, Informix, MySQL, Adabas, Empress, FilePro, InterBase, mSQL, PostgreSQL, Solid, SQLServer, Unix Dbm. PROGRAMME MIDDLEWARE SGBD
  • 2. ACCES aux SGBD (2) Un SGBD est un ensemble d'applications permettant de manipuler les données (ajout, suppression, modification et lecture), mais aussi de contrôler l'accès. Les données sont structurées de la manière suivante : Serveur de données
  • 3. ACCES aux SGBD (3) L'utilisation en général d’un SGBD (tel que MySQL) avec PHP s'effectue en 5 temps : 1. Connexion au serveur de données 2. Sélection de la base de données 3. Requête 4. Exploitation des requêtes 5. Fermeture de la connexion
  • 4. ACCES aux SGBD (4) Connexion au serveur de données Pour se connecter au serveur de données, il existe 2 méthodes : – Ouverture d'une connexion simple avec la fonction mysql_connect – Ouverture d'une connexion persistante avec la fonction mysql_pconnect Remarque : la deuxième méthode diffère de la première par le fait que la connexion reste active après la fin du script. <? if( mysql_connect("ma_base" , $login , $password ) > 0 ) echo "Connexion réussie ! " ; else echo "Connexion impossible ! " ; ?>
  • 5. ACCES aux SGBD (5) Sélection de la base de données Pour faire cette sélection, utilisez la fonction mysql_select_db et vous lui passez en paramètre, le nom de votre base. <? if( mysql_select_db("ma_base" ) == True ) echo "Sélection de la base réussie" ; else echo "Sélection de la base impossible" ; ?> Remarque : les étapes sélection et requête peuvent être faites en même temps, mais il est plus simple surtout pour une seule base, de sélectionner la table avant de commencer les requêtes. Ainsi, toutes les requêtes à venir utiliseront cette base par défaut.
  • 6. ACCES aux SGBD (6) Envoi d’une requête Pour envoyer ces requêtes, on peut utiliser 2 fonctions : – mysql_query dans le cas où la base de données serait déjà sélectionnée – mysql_db_query dans le cas où l'on voudrait sélectionner la base en même temps. <? $requête = "SELECT * FROM membres WHERE pseudo = 'président' "; $résultat = mysql_query( $requête ); ?>
  • 7. ACCES aux SGBD (7) Exploitation des requêtes Après l'exécution d'une requête de sélection, les données ne sont pas "affichées", elles sont simplement mises en mémoire, il faut les chercher, enregistrement par enregistrement, et les afficher avec un minimum de traitement. PHP gère un pointeur de résultat, c'est celui qui est pointé qui sera retourné. Lorsque vous utilisez une fonction de lecture, le pointeur est déplacé sur l'enregistrement suivant et ainsi de suite jusqu'à ce qu'il n'y en ait plus. Les fonctions qui retournent un enregistrement sont : mysql_fetch_row, mysql_fetch_array et mysql_fetch_object et prennent comme paramètre l'identifiant de la requête. Les 3 exemples suivants partent d'une requête "SELECT nom, prénom, date FROM membres."
  • 8. ACCES aux SGBD (8) mysql_fetch_row : Cette fonction retourne un enregistrement sous la forme d'un tableau simple. <? $enregistrement = mysql_fetch_row ($résultat); // Affiche le champ - nom - echo $enregistrement[0] . "<br>"; // Affiche le champ - prénom - echo $enregistrement[1] . "<br> "; // Affiche le champ - date - echo $enregistrement[2] . "<br> "; ?> mysql_fetch_array : Cette fonction retourne un enregistrement sous la forme d'un tableau associatif. <? $enregistrement = mysql_fetch_array ($résultat); // Affiche le champ - prénom - echo $enregistrement["prénom"] . "<br>"; // Affiche le champ - nom - echo $enregistrement["nom"] . "<br>"; // Affiche le champ - date - echo $enregistrement["date"] . "<br>"; ?>
  • 9. ACCES aux SGBD (9) mysql_fetch_object : Cette fonction retourne un enregistrement sous forme d'une structure (objet). <? $enregistrement = mysql_fetch_object ($résultat ); // Affiche le champ - date - echo $enregistrement->date . "<br>"; // Affiche le champ - nom - echo $enregistrement->nom . "<br>"; // Affiche le champ - prénom - echo $enregistrement->prénom . "<br>"; ?>
  • 10. ACCES aux SGBD (10) Si il n'y a pas ou plus d'enregistrement à lire, ces fonctions retournent "false." Pour savoir combien d'enregistrements ont été retournés par la sélection, la commande mysql_num_rows prend comme paramètre l'identifiant de la requête. <? echo "Il y a " . mysql_num_rows( $résultat ) . " membre(s) "; while( $enregistrement = mysql_fetch_array( $résultat )) { echo $enregistrement['nom'] . " " . $enregistrement['prénom']; echo " – " . $enregistrement['date'] . "<br>" ; } ?>
  • 11. ACCES aux SGBD (11) Fermeture de la connexion Vous pouvez fermer la connexion au moyen de la fonction mysql_close, mais il est bon de savoir que cette opération sera faite lorsque le script se terminera. C'est donc une opération facultative. Gestion des erreurs S’il y a une erreur dans la syntaxe de la requête, on utilise la fonction mysql_error qui ne prend pas de paramètres. <? $résultat = mysql_query( $requête ) or die ("Erreur dans la requête : " . $requête . "<br>Avec l"erreur : " . mysql_error() ); ?>