0% ont trouvé ce document utile (0 vote)
35 vues23 pages

BDPHP

q

Transféré par

Ghiles ZENTAR
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
35 vues23 pages

BDPHP

q

Transféré par

Ghiles ZENTAR
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Accès aux bases de données en PHP

Applications web L1

Olivier Mallet

Université de Rouen
1 Généralités

2 SQL

3 Accès aux bases de données en PHP


Généralités

Les bases de données


Base de données : ensemble de données organisé et interrogeable
Un serveur de bases de données contient une ou plusieurs bases
Système de gestion de base de données (SGBD) : ensemble de
programmes qui permettent le stockage d’informations dans une base
de données et l’accès à ces informations
Exemples de SGBD : MySQL, PostgreSQL, Oracle, Access. . .
Modèle relationnel :
La base est vue comme un ensemble de tables contenant les données
Exemple (Table contenant des informations sur des étudiants)
Numéro Nom Prénom Filière
237348 Croque Odile L1 IEEEA
237349 Bistrucla César L2 Maths
237383 Hochon Paul L3 Info

Accès grâce au langage SQL (Structured Query Language)


Olivier Mallet (Université de Rouen) Accès aux bases de données en PHP 3 / 23
Généralités

Exemple : le serveur MySQL du département


d’informatique

inf-mysql.univ-rouen.fr

duponjea martipie lefebjac

Produits
Etudiants Personnes

Clients

Olivier Mallet (Université de Rouen) Accès aux bases de données en PHP 4 / 23


SQL

Le langage SQL

Permet de :
créer des tables, modifier leur structure, les supprimer
insérer, mettre à jour et supprimer des données (lignes des tables)
interroger la base de données
définir les droits d’accès aux données
Principaux types de données : entier, nombre décimal, chaîne de
caractères, date (au format AAAA-MM-JJ)

Olivier Mallet (Université de Rouen) Accès aux bases de données en PHP 5 / 23


SQL

Remarques sur la syntaxe de SQL

Chaînes de caractères encadrées par ’’


Une instruction SQL se termine par un point-virgule
Commentaires introduits par --
Les noms des tables et des colonnes sont sensibles à la casse (mais
pas les mots-clés)
Pas d’accent ni d’espace dans les noms des tables et des colonnes
Les sauts de ligne ne sont pas significatifs

Olivier Mallet (Université de Rouen) Accès aux bases de données en PHP 6 / 23


SQL

Où utilise-t-on ce langage ?

On peut taper des requêtes SQL :


dans un programme en ligne de commande (ex : client MySQL)
dans un programme avec une interface graphique (ex : MySQL
Workbench, PHPMyAdmin)
On peut aussi inclure des requêtes SQL dans un programme (en C,
Java, PHP. . . ) qui sera chargé de les envoyer au serveur et utilisera
ensuite la réponse éventuelle de celui-ci
−→ C’est ce que nous allons apprendre à faire avec PHP

Olivier Mallet (Université de Rouen) Accès aux bases de données en PHP 7 / 23


SQL

Table utilisée pour les exemples


Table nommée Etudiants avec 6 attributs (colonnes) :
prenom (chaîne de caractères)
nom (chaîne de caractères)
ddn : date de naissance (date)
ville : ville où habite l’étudiant (chaîne de caractères)
filiere (chaîne de caractères)
note (nombre décimal)

Exemple (À quoi peut ressembler le contenu de cette table)


prenom nom ddn ville filiere note
Pauline Tran 1995-03-14 Rouen L1IEEEA 13.00
Gérard Menvussa 1993-12-13 Dieppe L2Info 8.00
Léo Pard 1994-05-10 Elbeuf L2Maths 11.00

Olivier Mallet (Université de Rouen) Accès aux bases de données en PHP 8 / 23


SQL

Insertion de données dans une table

Insertion d’une ligne :


Exemple
INSERT INTO Etudiants
VALUES(’Alain’, ’Proviste’, ’1989-01-17’, ’Rouen’, ’L1IEEEA’, 10);

Insertion de plusieurs lignes à la fois :


Exemple
INSERT INTO Etudiants
VALUES(’Alain’, ’Proviste’, ’1989-01-17’, ’Rouen’, ’L1IEEEA’, 10),
(’Line’, ’Yorance’, ’1989-03-20’, ’Dieppe’, ’L2Info’, 12);

Olivier Mallet (Université de Rouen) Accès aux bases de données en PHP 9 / 23


SQL

Mise à jour des données

Exemple (Un étudiant a déménagé à Sotteville)


UPDATE Etudiants -- table modifiée
SET ville = ’Sotteville’ -- changements effectués
WHERE prenom = ’Alain’ AND nom = ’Proviste’; -- lignes affectées

Exemple (On remonte de 10% les notes de toute la filière IEEEA ©)


UPDATE Etudiants
SET note = note * 1.1
WHERE filiere = ’L1IEEEA’;

Olivier Mallet (Université de Rouen) Accès aux bases de données en PHP 10 / 23


SQL

Suppression de données

Suppression des lignes vérifiant une condition :

Exemple (Suppression des étudiants nés avant 1995)


DELETE FROM Etudiants -- table concernée
WHERE ddn < ’1995-01-01’; -- condition

Suppression de toutes les lignes d’une table (ne supprime pas la table
elle-même) :

Exemple
DELETE FROM Etudiants;

Attention !
Il est impossible de récupérer les données supprimées !

Olivier Mallet (Université de Rouen) Accès aux bases de données en PHP 11 / 23


SQL

Lecture de données

Lecture de tout le contenu de la table :


Exemple
SELECT * FROM Etudiants;

Lecture des données d’une ou plusieurs colonnes :

Exemple (Nom et prénom de tous les étudiants)


SELECT nom, prenom FROM Etudiants ;

Exemple
SELECT ville FROM Etudiants; -- une ville pourra apparaître plusieurs fois
SELECT DISTINCT ville FROM Etudiants; -- pas de doublons dans ce cas

Olivier Mallet (Université de Rouen) Accès aux bases de données en PHP 12 / 23


SQL

Utilisation d’une clause restrictive

On ne veut récupérer que certaines lignes ⇒ clause WHERE

Exemple (Tout sur les étudiants qui habitent à Rouen)


SELECT * FROM Etudiants WHERE ville = ’Rouen’;

Exemple (Prénom et nom des étudiants de L1 IEEEA)


SELECT prenom, nom FROM Etudiants WHERE filiere = ’L1IEEEA’;

Exemple (Prénom et nom des étudiants habitant Rouen ou Dieppe)


SELECT prenom, nom
FROM Etudiants
WHERE ville = ’Rouen’ OR ville = ’Dieppe’;

Olivier Mallet (Université de Rouen) Accès aux bases de données en PHP 13 / 23


SQL

Opérateurs intervenant dans la clause WHERE

Opérateurs de comparaison : =, <>, <, <=, >, >=

Exemple (Prénoms des étudiants ayant au moins 12 de moyenne)


SELECT prenom FROM Etudiants WHERE note >= 12;

LIKE : s’utilise avec % qui signifie « n’importe quelle suite de


caractères »
col LIKE ’truc%’ : la valeur de la colonne col commence par « truc »
col LIKE ’%truc’ : la valeur de la colonne col finit par « truc »
col LIKE ’%truc%’ : la valeur de la colonne col contient « truc »

Exemple (Notes des étudiants habitant dans une ville dont le nom
commence par « Ro »)
SELECT note FROM Etudiants WHERE ville LIKE ’Ro%’;

Olivier Mallet (Université de Rouen) Accès aux bases de données en PHP 14 / 23


SQL

Opérateurs intervenant dans la clause WHERE (2)

IN : appartenance à un ensemble de valeurs

Exemple
SELECT prenom, nom
FROM Etudiants
WHERE ville IN (’Rouen’, ’Dieppe’);

est équivalent à
SELECT prenom, nom
FROM Etudiants
WHERE ville = ’Rouen’ OR ville = ’Dieppe’;

Opérateurs logiques : AND , OR , NOT

Olivier Mallet (Université de Rouen) Accès aux bases de données en PHP 15 / 23


SQL

L’opérateur NOT : exemples

Exemple (Affichage des étudiants qui ne sont ni en L1 IEEEA ni en


L2 Info)
SELECT *
FROM Etudiants
WHERE NOT(filiere = ’L1IEEEA’ OR filiere = ’L2Info’);
ou
SELECT *
FROM Etudiants
WHERE filiere NOT IN (’L1IEEEA’, ’L2Info’);

Olivier Mallet (Université de Rouen) Accès aux bases de données en PHP 16 / 23


Accès aux bases de données en PHP

Lien entre SQL et PHP

Requête HTTP Requête SQL


Exécution du
code PHP
HTML + CSS Réponse
client serveur serveur de
PHP bases de
données

Olivier Mallet (Université de Rouen) Accès aux bases de données en PHP 17 / 23


Accès aux bases de données en PHP

Les fonctions PHP utiles

Fonctions différentes selon le SGBD utilisé (ici, on traite le cas de


MySQL)
Connexion au serveur et choix d’une base de données :
mysqli_connect($serveur, $login, $mdp, $base)
→ on stocke le résultat dans une variable ($connexion dans les
exemples)
Exécution d’une requête : mysqli_query($connexion, $requete)
→ on stocke le résultat (pour les requêtes SELECT) dans une
variable ($res dans les exemples)
Récupération d’une ligne du résultat dans un tableau :
mysqli_fetch_array($res)
Nombre de lignes renvoyées : mysqli_num_rows($res)
Fermeture de la connexion : mysqli_close($connexion)

Olivier Mallet (Université de Rouen) Accès aux bases de données en PHP 18 / 23


Accès aux bases de données en PHP

Exemple d’accès à une base de données MySQL en PHP

On dispose d’une table Etudiants dans la base mabase située sur le


serveur inf-mysql.univ-rouen.fr
On veut afficher dans un tableau HTML le nom, le prénom et la note
des étudiants dont la note est ≥ 10

<table>
<tr> <!– Titres des colonnes -->
<th>Nom</th>
<th>Prénom</th>
<th>Note</th>
</tr>
<?php
// Connexion et choix de la base de données
$connexion = mysqli_connect("inf-mysql.univ-rouen.fr", "duponjea", "123456",
"mabase");

Olivier Mallet (Université de Rouen) Accès aux bases de données en PHP 19 / 23


Accès aux bases de données en PHP

Exemple d’accès à une base de données MySQL (suite)

// Exécution d’une requête


$requete = "SELECT * FROM Etudiants WHERE note >= 10";
$res = mysqli_query($connexion, $requete);

// Récupération et affichage des résultats ligne par ligne


while ($etu = mysqli_fetch_array($res)) {
echo "<tr><td>{$etu[’nom’]}</td><td>{$etu[’prenom’]}</td>";
echo "<td>{$etu[’note’]}</td></tr>";
}

// Fermeture de la connexion
mysqli_close($connexion);
?>
</table>

Olivier Mallet (Université de Rouen) Accès aux bases de données en PHP 20 / 23


Accès aux bases de données en PHP

Autre exemple : ajout d’un étudiant

Formulaire d’ajout d’un étudiant dans la base :


<form method="post" action="ajout_etudiant.php">
<p>
Prénom : <input type="text" name="prenom" /> <br />
Nom : <input type="text" name="nom" /> <br />
Date de naissance : <input type="text" name="ddn" /> <br />
Ville : <input type="text" name="ville" /> <br />
Filière : <input type="text" name="filiere" /> <br />
Note : <input type="text" name="note" /> <br />
</p>
<p>
<input type="submit" value="Envoyer" />
</p>
</form>

Olivier Mallet (Université de Rouen) Accès aux bases de données en PHP 21 / 23


Accès aux bases de données en PHP

Suite de l’exemple : page de traitement PHP

// Connexion à la base
$connexion = mysqli_connect("inf-mysql.univ-rouen.fr", "duponjea", "123456",
"mabase");

$prenom = $_POST["prenom"];
$nom = $_POST["nom"];
$ddn = $_POST["ddn"];
$ville = $_POST["ville"];
$filiere = $_POST["filiere"];
$note = $_POST["note"];
$requete = "INSERT INTO Etudiants VALUES(’$prenom’,’$nom’,’$ddn’,
’$ville’,’$filiere’,$note)";
mysqli_query($connexion, $requete);

// Fermeture de la connexion
mysqli_close($connexion);

Olivier Mallet (Université de Rouen) Accès aux bases de données en PHP 22 / 23


Accès aux bases de données en PHP

Afficher les erreurs SQL en PHP

Renvoyer un message en cas d’erreur de connexion :


mysqli_connect_error()
Renvoyer un message en cas d’erreur suite à l’appel d’une autre
fonction mysqli : mysqli_error($connexion) où $connexion est
la valeur renvoyée par mysqli_connect

Exemple
$connexion = mysqli_connect("inf-mysql.univ-rouen.fr", "duponjea", "123456",
"mabase");
echo mysqli_connect_error(); // affichera un message si la connexion a échoué

$requete = "SELECT * FROM Etudiants WHERE note >= 10";


$res = mysqli_query($connexion, $requete);
echo mysqli_error($connexion); // affichera un message si la requête a échoué

Olivier Mallet (Université de Rouen) Accès aux bases de données en PHP 23 / 23

Vous aimerez peut-être aussi