Chapitre 3 Base de Donnees

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 44

Chapitre 3 : BASE DE DONNEES

BASE DE DONNÉES

 Une base de données est un outil qui stocke des


données de manière organisée et permet de les
utiliser.
 SQL est un language de communication avec MySQL.
Ce langage est commun à tous les systèmes de gestion
de base de données (avec quelques petites différences
néanmoins pour certaines fonctionnalités plus avancées).
BASE DE DONNÉES

 PHP fait l'intermédiaire entre vous et MySQL.


 Une base de données contient plusieurs tables.
 Chaque table est un tableau où les colonnes sont
appelées « champs » et les lignes « entrées ».
Communication entre PHP et MySQL
phpMyAdmin
 phpMyAdmin est une interface d'administration pour le
SGBD MySQL. Il est écrit en langage PHP et s'appuie sur le
serveur HTTP Apache.
 Il permet d'administrer les éléments suivants :
¤ les bases de données
¤ les tables et leurs champs (ajout, suppression, définition du type)
¤ les index, les clés primaires et étrangères
¤ les utilisateurs de la base et leurs permissions
¤ Importer/exporter les données dans divers formats (CSV, XML,
PDF, OpenDocument, Word, Excel et LaTeX)
phpMyAdmin
 phpMyAdmin
 Localisation des fichiers bases de données:
¤ C:\wamp\mysql\data

 Démarrage de phpMyAdmin
¤ démarrez WAMP, faites un clic gauche sur l'icône de la
barre des tâches et allez dans « phpMyAdmin
phpMyAdmin
phpMyAdmin

1. Liste des bases : c'est la liste des bases de


données. Le nombre entre parenthèses est le
nombre de tables qu'il y a dans la base.
2. Création de base : pour créer une nouvelle base
de données, entrez un nom dans le champ de
formulaire à droite, cliquez sur « Créer ».
Création de base, table, champs

 Création d’une base: test


 Création de table: news avec 3 champs

 Champs: id, titre, contenu


Création de base, table, champs
Création de base, table, champs

 Champ : permet de définir le nom du champ (très important !) ;


 Type : le type de données que va stocker le champ (nombre entier, texte,
date…) ;
 Taille/Valeurs : permet d'indiquer la taille maximale du champ, utile pour
le type VARCHAR notamment, afin de limiter le nombre de caractères
autorisés ;
 Index : active l'indexation du champ. Ceci signifie que le champ sera
adapté aux recherches. Le plus souvent, on utilise l'index PRIMARY sur les
champs de type id ;
 AUTO_INCREMENT : permet au champ de s'incrémenter tout seul à chaque
nouvelle entrée. On l'utilise fréquemment sur les champs de type id.
Les types de champs
 Alors que PHP ne propose que quelques types de données (int, string, bool…),
MySQL propose une quantité très importante de types de données.
Ceux-ci sont classés par catégories.
 NUMERIC : ce sont les nombres. On y trouve des types dédiés aux petits nombres
entiers (TINYINT), aux gros nombres entiers (BIGINT), aux nombres décimaux, etc.
 DATE and TIME : ce sont les dates et les heures. De nombreux types différents
permettent de stocker une date, une heure, ou les deux à la fois.
 STRING : ce sont les chaînes de caractères. Là encore, il y a des types adaptés à
toutes les tailles.
 SPATIAL : cela concerne les bases de données spatiales, utiles pour ceux qui font de
la cartographie.
Les types de données phpMyAdmin
phpMyAdmin propose quatre types de données couramment utilisés :
 INT : nombre entier ;

 VARCHAR : texte court (entre 1 et 255 caractères) ;


¤ VARCHAR : c'est un type adapté aux textes courts. Sa seule exigence est
qu’il faut indiquer la taille maximale du champ (entre 1 et 255).

 TEXT : long texte (on peut y stocker un roman sans problème) ;

 DATE : date (jour, mois, année).


Onglets de phpMyAdmin

 Structure : présente la structure de la table (liste


des champs) ;
 Insérer : permet d'insérer de nouvelles entrées dans
la table.
Onglets de phpMyAdmin

 SQL: permet d’exécuter des requêtes SQL.


¤ SELECT * FROM ‘news’ WHERE 1!

 Importer: permet d’importer des fichiers


 Exporter: permet d’exporter des fichiers
¤ Transmission de BD sur Internet
¤ Sauvegarde
Onglets de phpMyAdmin
 Opération: permet d’effectuer diverses opérations
sur une table.
¤ Changement de nom de la table
¤ Déplacement de la table
¤ Optimisation de table

 Vider: Vide tout le contenu de la table. Suppression


des entrées (seule la structure de la table reste)
 Supprimer: supprime la totalité de la table
(structure et données).
IMPORTATION DE BASE DE DONNEES

 Cliquer sur la base de données - Cliquer sur


l’onglet “Importer”
  Exécuter
Connexion de la base de données en PHP

PHP propose plusieurs moyens de se connecter à une base de données MySQL.


 L'extension mysql_ : ce sont des fonctions qui permettent d'accéder à une
base de données MySQL. Leur nom commence toujours par mysql_.
Toutefois, ces fonctions sont vieilles et ne sont plus recommendées
aujourd'hui.
 L'extension mysqli_ : ce sont des fonctions améliorées d'accès à MySQL.
Elles proposent plus de fonctionnalités et sont plus à jour.
 L'extension PDO : c'est un outil complet qui permet d'accéder à n'importe
quel type de base de données. On peut donc l'utiliser pour se connecter
aussi bien à MySQL que PostgreSQL ou Oracle. (PDO: PHP Data Objects)
Connexion de la base de données en PHP
Activation de PDO

 PDO est activé par défaut. Pour le vérifier, faites un


clic gauche sur l'icône de WAMP dans la barre des
tâches, puis allez dans le menu PHP / Extensions
PHP et vérifiez que php_pdo_mysql est bien coché.
Se connecter à MySQL avec PDO

4 renseignements sont necessaires:


 Le nom de l’hôte: c'est l'adresse de l'ordinateur où
MySQL est installé (comme une adresse IP).
¤ ind1134610180990.db.8713453.hostedresource.com
 la base : c'est le nom de la base de données à laquelle
l’on veut se connecter.
 le login : il permet de vous identifier.
 le mot de passe
Connexion avec d’autres SGBD
Se connecter à MySQL avec PDO
<?php!
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');!
?>!
$bdd est un objet qui représente la connexion à la base de données.
On crée la connexion en indiquant dans l'ordre dans les paramètres :
 le nom d'hôte (localhost) ;

 la base de données (test) ;

 le login (root) ;

 le mot de passe (ici il n'y a pas de mot de passe, j'ai donc mis une
chaîne vide).
Test d’erreur de connexion
<?php!
try!
{!
!$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');!
}!
catch (Exception $e)!
{!
die('Erreur : ' . $e->getMessage());!
}!
?>!

 PHP essaie d'exécuter les instructions à l'intérieur du


bloc try. S'il y a une erreur, il rentre dans le bloc
catch
Récupération de données

 Fichier: jeux_video.sql
 Sélectionner la base de données “test”
 Importer jeux_video.sql
Récupération de données
$reponse = $bdd->query('Tapez votre requête SQL ici');!

On récupère ce que la base de données nous a


renvoyé dans un autre objet que l'on a appelé ici
$reponse.
<?php!
$reponse = $bdd->query('SELECT * FROM jeux_video');!
?>!
Affichage du résultat d’un requête

 Pour récupérer une entrée, on prend la réponse de


MySQL et on y exécute fetch() (fetch: « va
chercher»
<?php!
$donnees = $reponse->fetch();!
?>!
Affichage du résultat d’un requête
<?php!
try!
{!
!// On se connecte à MySQL!
!$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');!
}!
catch(Exception $e)!
{!
!// En cas d'erreur, on affiche un message et on arrête tout!
die('Erreur : '.$e->getMessage());!
}!
!
// Si tout va bien, on peut continuer!
!
Affichage du résultat d’un requête
// On récupère tout le contenu de la table jeux_video!
$reponse = $bdd->query('SELECT * FROM jeux_video');!
!
// On affiche chaque entrée une à une!
while ($donnees = $reponse->fetch())!
{!
?>!
<p>!
<strong>Jeu</strong> : <?php echo $donnees['nom']; ?><br />!
Le Possesseur: <?php echo $donnees['possesseur']; ?><br /> !
Le Prix: <?php echo $donnees['prix']; ?> euros !<br />!
La Console:<?php echo $donnees['console']; ?> <br />!
Le Nombre de joueur max: <?php echo $donnees['nbre_joueurs_max']; ?> <br />!
<?php echo $donnees['possesseur']; ?> a laissé ces commentaires sur <?php echo
$donnees['nom']; ?> : <em><?php echo $donnees['commentaires']; ?></em>!
</p>!
<?php!
}!
!
$reponse->closeCursor(); // Termine le traitement de la requête!
?>!
!
Affichage du résultat d’un requête
Affichage du contenu de quelques champs
<?php!
try!
{!
!$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');!
}!
catch(Exception $e)!
{!
die('Erreur : '.$e->getMessage());!
}!
!
$reponse = $bdd->query('SELECT nom FROM jeux_video');!
!
while ($donnees = $reponse->fetch())!
{!
!echo $donnees['nom'] . '<br />';!
}!
!
$reponse->closeCursor();!
!
?>!
Critères de Sélection

 WHERE permet de trier des données ;


SELECT * FROM jeux_video WHERE possesseur='Patrick' AND prix < 20!

 ORDER BY permet d'ordonner nos résultats;

 LIMIT permet de ne sélectionner qu'une partie des


résultats
SELECT * FROM jeux_video LIMIT 0, 20
WHERE
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$reponse = $bdd->query('SELECT nom, possesseur FROM jeux_video WHERE possesseur=
\'Patrick\'');
while ($donnees = $reponse->fetch())
{
echo $donnees['nom'] . ' appartient à ' . $donnees['possesseur'] . '<br />';
}
$reponse->closeCursor();
?>
ORDER BY
SELECT * FROM jeux_video ORDER BY prix

SELECT * FROM jeux_video ORDER BY prix DESC


LIMIT
 On indique tout d'abord à partir de quelle entrée
on commence à lire la table.
 Ensuite, le deuxième nombre indique combien
d'entrées on doit sélectionner.
LIMIT 0, 20 : affiche les vingt premières entrées ;

LIMIT 5, 10 : affiche de la sixième à la quinzième entrée ;

LIMIT 10, 2 : affiche la onzième et la douzième entrée.


LIMIT
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$reponse = $bdd->query('SELECT nom FROM jeux_video LIMIT 0, 10');
echo '<p>Voici les 10 premières entrées de la table jeux_video :</p>';
while ($donnees = $reponse->fetch())
{
echo $donnees['nom'] . '<br />';
}
$reponse->closeCursor();
?>
Modification de données

 INSERT permet d’ajouter des données;


 UPDATE permet de modifier des données;

 DELETE permet de supprimer des données.


INSERT

La requête INSERT INTO permet d'ajouter une entrée


INSERT INTO jeux_video(ID, nom, possesseur, console, prix, nbre_joueurs_max,
commentaires) VALUES('', 'Battlefield 1942', 'Patrick', 'PC', 45, 50, '2nde guerre
mondiale')
INSERT
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
// une nouvelle entrée dans la table jeux_video
$bdd->exec('INSERT INTO jeux_video(nom, possesseur, console, prix, nbre_joueurs_max,
commentaires) VALUES(\'Battlefield 1942\', \'Patrick\', \'PC\', 45, 50, \'2nde guerre
mondiale\')');
echo ’Nouveau jeu ajouté !';
?>
UPDATE

 La requête UPDATE permet de modifier une entrée


UPDATE jeux_video SET prix = 10, nbre_joueurs_max = 32 WHERE ID = 51!

UPDATE jeux_video SET possesseur = 'Florent' WHERE possesseur = 'Michel'!

<?php
$bdd->exec('UPDATE jeux_video SET prix = 10, nbre_joueurs_max = 32 WHERE nom =
\'Battlefield 1942\'');
?>
DELETE
DELETE FROM jeux_video WHERE nom='Battlefield 1942'
GESTION DE SITE WEB EN LIGNE

 Nom de domaine
 Hébergeur
 Client FTP
 Accès aux bases de données hébergeur
PROJET

CREATION D’UN LIVRE D’OR


 Les utilisateurs doivent d’abord s’enregistrer

 Ensuite ils doivent se connecter à la page contenant le

livre d’or pour entrer des données dans le livre d’or.


 Finalement les entrées doivent être postées (des plus

récentes au plus anciennes) ainsi que le nom de la


personne qui a fait l’entrée
Widescreen Pictures
Pictures can also be presented more dramatically in widescreen.8

Vous aimerez peut-être aussi