Vous êtes sur la page 1sur 22

Programmation web Avancée

Partie II: PHP


Chap 4: Interfaçage de MySql via le langage PHP

Par O. Boutkhoum

Faculté des Sciences – El Jadida SMI S6, 2022/2023


Interfaçage de MySql via le langage PHP
Introduction
 L'intérêt majeur de PHP est son interfaçage avec un grand nombre de bases de données d'une manière
relativement simple et efficace.

 PHP supporte un grand nombre de bases de données: Oracle, Sybase, Microsoft SQL Server, MySQL,
PostgreSQL, SQLite,….

 PHP s'utilise bien souvent avec MySQL, un SGBD libre, gratuit, rapide et qui satisfait à la plupart des
sites Internet, même si il n'a pas encore toutes les potentialités des autres types de bases de données.

 Pour la visualisation des tables et bases de données MySQL, nous allons utiliser phpMyAdmin qui est
une interface de gestion très simple d'utilisation.

2
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. web Avancée – SMI S6 / F.S El Jadida
Interfaçage de MySql via le langage PHP
Utiliser MySQL avec PHP
 Pour se connecter à MySQL via PHP on utilise une API qui définit les classes, méthodes, fonctions et
variables dont votre application va faire usage pour exécuter différentes tâches.

 Il existe trois API principales pour se connecter à MySQL :


◼ L'extension mysql (pour les versions PHP < 4.1.3): ses fonctions sont vieilles et on recommande de
ne plus les utiliser aujourd'hui.
◼ L'extension mysqli (mysql improved pour les versions PHP > 5): ce sont des fonctions améliorées, et
proposent plus de fonctionnalités et sont plus à jour (Utilise soit les fonctions commençant par
mysqli_* ou la classe mysqli).
◼ PHP Data Objects (PDO) qui a des fonctionnalités moins avancées que mysqli mais permet de
travailler avec différentes bases de données en conservant le même code (Utilisé seulement en
orienté objet: la classe PDO).

3
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. webProg.
Avancée SMI S6–/ SMI
web –Avancée F.S ElS6Jadida
/ F.S El Jadida
Interfaçage de MySql via le langage PHP
Etapes pour se connecter à une base de données

L'exploitation de MySQL avec PHP s'effectue en plusieurs étapes :

1. ouverture d'une connexion à MySQL et sélection de la base de données


2. requête sur la base de données
3. exploitation des résultats de la requête
4. fermeture de la connexion à MySQL

NB: Dans ce cours, nous choisissons l’extension mysqli_ , car elle est plus utilisée à nos jours.

4
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. webProg.
Avancée SMI S6–/ SMI
web –Avancée F.S ElS6Jadida
/ F.S El Jadida
Interfaçage de MySql via le langage PHP
Ouverture d'une connexion à MySQL
 Pour se connecter à MySQL, on va utiliser cette fonction :
$bdd=mysqli_connect(serveur, utilisateur, mot_de_passe, baseDeDonnées);

 $bdd : La variable où seront stockées les informations de la base de données.


 serveur : correspond au serveur MySQL (dans notre cas c’est localhost ou 127.0.0.1).
 utilisateur : correspond au nom d'utilisateur pour se connecter au serveur MySQL (par défaut root).
 mot_de_passe : correspond au mot de passe de l’utilisateur pour se connecter à MySQL .
 baseDeDonnées : correspond à votre base de données du serveur MySQL.

5
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. webProg.
Avancée SMI S6–/ SMI
web –Avancée F.S ElS6Jadida
/ F.S El Jadida
Interfaçage de MySql via le langage PHP
Ouverture d'une connexion à MySQL
 On peut tester si la connexion a réussi ou non :
<?php
$bdd=objet représentant la connexion au serveur MySQL, ou false en cas d'échec.

if($bdd=mysqli_connect(serveur, utilisateur, mot_de_passe, bd)){


echo 'connexion réussite !!';
} else {
die(mysqli_connect_error());
}
?>
 On utilise aussi souvent la méthode fréquente suivante :
$bdd=mysqli_connect(serveur, utilisateur, mot_de_passe, base) or die(mysqli_connect_error());

6
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. webProg.
Avancée SMI S6–/ SMI
web –Avancée F.S ElS6Jadida
/ F.S El Jadida
Interfaçage de MySql via le langage PHP
Les requêtes simples :
Le code de la requête est le suivant :
 $resultat=mysqli_query($bdd, ‘requête');
◼ $resultat est la variable où seront stockées les données retournées (booléen ou résultat de SELECT,…).
◼ $bdd est la variable retournée par la fonction de connexion à la base de données (objet retourné par la
fonction mysqli_connect()).
◼ ‘requête' est une requête SQL.

✓ Afficher le résultat d'une requête simple :


$row=mysqli_fetch_assoc($resultat)
➢ $row est transformé en un tableau associatif avec les noms des colonnes demandées dans la requête.
Cette transformation est réalisée grâce à la fonction mysqli_fetch_assoc($resultat).
➢ $resultat : le résultat brut de la requête.
➢ Cette fonction sert aussi, et surtout, à passer au résultat suivant, d'où l'utilité d’utiliser les boucles pour
parcourir le contenu du tableau associatif.
7
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. webProg.
Avancée SMI S6–/ SMI
web –Avancée F.S ElS6Jadida
/ F.S El Jadida
Interfaçage de MySql via le langage PHP
Quelques fonctions:
 mysqli_num_rows($resultat);
◼ Permet de compter le nombre de ligne retourné par une requête SQL.

 mysqli_free_result($resultat);
◼ Permet de fermer le curseur afin de libérer les données récupérées lors d'une requête SQL.

 Extract($array) : C'est une fonction qui permet de créer des variables à partir des éléments du tableau
$array, dont les noms des variables sont les indices/clés du tableau et ces valeurs sont les valeurs
associées aux indices/clés du tableau associatif.

 Pour déconnecter la base de données, utiliser la fonction: mysqli_close($bdd);

8
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. webProg.
Avancée SMI S6–/ SMI
web –Avancée F.S ElS6Jadida
/ F.S El Jadida
Interfaçage de MySql via le langage PHP
Création d’une base de données avec PHPMyAdmin
Il faut d’abord se connecter à l’interface PHPMyAdmin via le lien http://localhost/phpmyadmin/ , puis remplir
les champs Utilisateur, Mot de passe et serveur comme illustré dans la figure suivante:

9
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. webProg.
Avancée SMI S6–/ SMI
web –Avancée F.S ElS6Jadida
/ F.S El Jadida
Interfaçage de MySql via le langage PHP
Création d’une base de données avec PHPMyAdmin
En utilisant phpMyAdmin, créer une base de données « bd_tp_php »:
➢ Méthode 1: via l’onglet « SQL»:

➢ Méthode 2: via l’onglet « Base de données »:

10
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. webProg.
Avancée SMI S6–/ SMI
web –Avancée F.S ElS6Jadida
/ F.S El Jadida
Interfaçage de MySql via le langage PHP
La création de la table via phpMyAdmin selon deux méthodes:

Méthode 1: a) Cliquer sur l’onglet «SQL», puis taper le script sql de création de la table.

NB: il faut que la base de données ‘bd_tp_php’ soit déjà sélectionnée

11
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. webProg.
Avancée SMI S6–/ SMI
web –Avancée F.S ElS6Jadida
/ F.S El Jadida
Interfaçage de MySql via le langage PHP
La création de la table via phpMyAdmin selon deux méthodes:

Méthode 1: b) taper le script sql de création de la table et cliquer après sur «Exécuter».

12
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. webProg.
Avancée SMI S6–/ SMI
web –Avancée F.S ElS6Jadida
/ F.S El Jadida
Interfaçage de MySql via le langage PHP
La création de la table via phpMyAdmin selon deux méthodes:
Méthode 1: c) Résultats de l’exécution de la requête:

13
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. webProg.
Avancée SMI S6–/ SMI
web –Avancée F.S ElS6Jadida
/ F.S El Jadida
Interfaçage de MySql via le langage PHP
Création d’une table via phpMyAdmin :
Méthode 2: a) soit vous cliquer sur l’onglet «Structure» (après avoir déjà sélectionner la base de données
‘bd_tp_php’):

3
2

✓ Soit sélectionner la base de données ‘bd_tp_php’ puis ….(suivre la numérotation):

14
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. webProg.
Avancée SMI S6–/ SMI
web –Avancée F.S ElS6Jadida
/ F.S El Jadida
Interfaçage de MySql via le langage PHP
La création de la table via phpMyAdmin selon deux méthodes:

Méthode 2: b) Après exécution, on peut ajouter les champs nécessaires:

15
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. webProg.
Avancée SMI S6–/ SMI
web –Avancée F.S ElS6Jadida
/ F.S El Jadida
Interfaçage de MySql via le langage PHP
La création de la table via phpMyAdmin :
 Essayer maintenant les fonctionnalités suivantes :
◼ Insertion des données ;
◼ Modifier la structure d’un champ (ajouter, supprimer ou modifier un champ, son type…) ;
◼ Vider ou supprimer la table ;
◼ Exporter /Importer la base de données.

 Exemple de requête d’insertion (après sélection de la base de données):


INSERT INTO `etudiants` VALUES ('mat-1', 'sadik', 'hicham', '2000-06-04', ‘M', 'el jadida');

16
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. webProg.
Avancée SMI S6–/ SMI
web –Avancée F.S ElS6Jadida
/ F.S El Jadida
Interfaçage de MySql via le langage PHP
Exemple 1: Requête de sélection et affichage des résultats
<?php NB: Les noms des champs renvoyés par cette fonction sont sensibles à la casse.
echo"<h1>Liste des étudiants</h1>";
$bdd=mysqli_connect("localhost", "root", "pwd", "bd_tp_php") or die(mysqli_connect_error());
$resultat=mysqli_query($bdd, 'SELECT * FROM etudiants');
while($donnee=mysqli_fetch_assoc($resultat)){
echo $donnee['matricule']." <br />";
echo $donnee['nom_etud']." <br />";
echo $donnee['prenom_etud']." <br />";
echo $donnee['date_nais']." <br />";
if ($donnee['sexe']=='M'){
echo 'Masculin <br />';
}else echo 'Féminin <br />';
echo "*********************<br>";
}
mysqli_free_result($resultat);
mysqli_close($bdd);
?> 17
Omar Boutkhoum –
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma
boutkhoum.o@ucd.ac.ma Prog. webProg.
Avancée SMI S6–/ SMI
web –Avancée F.S ElS6Jadida
/ F.S El Jadida
<h1>Liste des étudiants</h1>
<table>

Interfaçage de MySql via le langage PHP


<tr>
<th>Matricule</th>
<th>Nom</th>
<th>Prénom</th>
Exemple 1 avec tableau: <th>Date de naissance</th>
<th>Sexe</th>
<th>Adresse</th>
……………..………………..………..…… </tr>
<?php
$bdd=mysqli_connect("localhost", "root", "pwd", "bd_tp_php") or die(mysqli_connect_error());
$resultat=mysqli_query($bdd, 'SELECT * FROM etudiants');
while($donnee=mysqli_fetch_assoc($resultat)){
echo "<tr><td>".$donnee['matricule']." </td>";
echo "<td>".$donnee['nom_etud']." </td>";
echo "<td>".$donnee['prenom_etud']." </td>";
echo "<td>".$donnee['date_nais']."</td>";
if ($donnee['sexe']=='M'){
echo "<td>Masculin </td>";
} else echo "<td>Féminin </td>";
echo "<td>".$donnee['adresse']."</td></tr>"; }
mysqli_free_result($resultat);
mysqli_close($bdd);
?>
</table> 18
Omar Boutkhoum –
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma
boutkhoum.o@ucd.ac.ma Prog. webProg.
Avancée SMI S6–/ SMI
web –Avancée F.S ElS6Jadida
/ F.S El Jadida
Interfaçage de MySql via le langage PHP
✓ Création d’un nouveau Enregistrement à partir d’un formulaire:
<?php Connexion.php
require_once 'connexion.php'; <?php
$bdd=mysqli_connect("localhost", "root", "pwd", "bd_tp_php")
if($_POST){ Contenu: or die(mysqli_connect_error());
extract($_POST); ?>
$sql="INSERT INTO etudiants VALUES('$matricule','$nom_etud','$prenom_etud','$date_nais','$sexe','$adresse')";
$resultat=mysqli_query($bdd,$sql);
if($resultat){
echo "Etudiant enregistré avec succès.<br>";
echo"<a href='form-table.html'>Retour a la page d'accueil</a>";
}
else{
echo "Erreur d'enregistrement d'un étudiant <br>";
echo"<a href='form-table.html'>Retour a la page d'accueil</a>";
}
mysqli_free_result($resultat);
mysqli_close($bdd);
} Fait appel a ce script d’insertion
?> des données saisies
19
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. webProg.
Avancée SMI S6–/ SMI
web –Avancée F.S ElS6Jadida
/ F.S El Jadida
Interfaçage de MySql via le langage PHP
✓ Modification d’un Enregistrement :
<?php
require_once 'connexion.php';
if($_POST){
extract($_POST);
$sql="UPDATE etudiants SET nom_etud='$nom_etud',
prenom_etud='$prenom_etud',
date_nais='$date_nais',
sexe='$sexe',
adresse='$adresse'
WHERE matricule='$matricule'";
$resultat=mysqli_query($bdd,$sql);
if($resultat){
echo"Etudiant modifié avce succès <br>";
echo"<a href='liste_etudiants.php'>Retour a la page d'accueil</a>";
}
else echo "Erreur de modification d'un étudiant";
mysqli_free_result($resultat); mysqli_close($bdd);
?> 20
Omar Boutkhoum –
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma
boutkhoum.o@ucd.ac.ma Prog. webProg.
Avancée SMI S6–/ SMI
web –Avancée F.S ElS6Jadida
/ F.S El Jadida
Interfaçage de MySql via le langage PHP
✓ Suppression d’un Enregistrement :
<?php
Lien de suppression depuis la page contenant la liste des étudiants:
require_once 'connexion.php';
echo "<a href='modif-form.php?mat_sup=$matricule'>Supprimer</a>";
if(isset($_GET[‘mat_sup'])){
$matricule=$_GET[‘mat_sup'];
$sql="DELETE FROM etudiants WHERE matricule='$matricule'";
$resultat=mysqli_query($bdd,$sql);
mysqli_close($bdd);
if($resultat){
header('Location:liste_etudiants.php?action=vrai');
} Fait appel a ce script de
else{ suppression des données
header('Location:liste_etudiants.php?action=non');
}
mysqli_free_result($resultat);
}
?> 21
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. webProg.
Avancée SMI S6–/ SMI
web –Avancée F.S ElS6Jadida
/ F.S El Jadida
Interfaçage de MySql via le langage PHP

TP récapitulatif

22
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma
Omar Boutkhoum – boutkhoum.o@ucd.ac.ma Prog. webProg.
Avancée SMI S6–/ SMI
web –Avancée F.S ElS6Jadida
/ F.S El Jadida

Vous aimerez peut-être aussi