Université Nancy 2 - L3 Miage - Initiation réseau et programmation web - Nazih Ouwayed

Documents pareils
PHP 5. La base de données MySql. A. Belaïd 1

CREATION WEB DYNAMIQUE

Olivier Mondet

Bases de données relationnelles

Le Langage De Description De Données(LDD)

Pour les débutants. langage de définition des données

Les BASES de DONNEES dans WampServer

I. MySQL : Serveur et SGBD

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Création et Gestion des tables

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Bases de Données relationnelles et leurs systèmes de Gestion

Mysql avec EasyPhp. 1 er mars 2006

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Mysql. Les requêtes préparées Prepared statements

Les bases de données

Le langage SQL (première partie) c Olivier Caron

Cours: Administration d'une Base de Données

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

SQL Historique

Modélisation et Gestion des bases de données avec mysql workbench

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

WEB DEVELOPER SGBD SYSTEME DE GESTION DE BASES DE DONNEES L étudiant sera capable :

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

1. Base de données SQLite

PHP. PHP et bases de données

Langage SQL : créer et interroger une base

PHP 4 PARTIE : BASE DE DONNEES

Stockage du fichier dans une table mysql:

Système de Gestion de Bases de Données Relationnelles. MySQL. Youssef CHAHIR

Pratique et administration des systèmes

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Bible MySQL! La première version de MySQL est apparue en Cette première version est créée pour un usage personnel à partir de msql.

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Introduction aux Bases de Données 2004/2005

PDO : PHP Data Object 1/13

Introduction à JDBC. Accès aux bases de données en Java

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Java DataBaseConnectivity

1 Introduction et installation

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Support de cours. Introduction à SQL et MySQL. 2003, Sébastien Namèche

TP3 : Creation de tables 1 seance

Optimisations des SGBDR. Étude de cas : MySQL

Installation d'un serveur FTP géré par une base de données MySQL

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

Historisation des données

Compétences Business Objects

PHP et les Bases de données - Généralités

1 Position du problème

A QUOI SERVENT LES BASES DE DONNÉES?

Application web de gestion de comptes en banques

Notes de cours : bases de données distribuées et repliquées

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

DOSSIER D'ACTIVITES SUR LE PHP N 03 Créer une base de données MySQL avec PHPMyAdmin

Bases de données élémentaires Maude Manouvrier

Partie 0 : Gestion des tablespace et des utilisateurs... 3

FileMaker 13. Guide de référence SQL

Gestion de base de données

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

OpenPaaS Le réseau social d'entreprise

SYSTÈMES D INFORMATIONS

Introduction au Système de Gestion de Base de Données et aux Base de Données

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

Le Langage SQL version Oracle

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

Ecole Industrielle et Commerciale de la ville de Namur. Structure et application des bases de données. Y. Mine

Cours Bases de données 2ème année IUT

I4 : Bases de Données

Bases de données relationnelles & SQL

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Bases de données et sites WEB

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE

Optimisation de MySQL

MySQL avec Mac OS X. Quelques manipulations avec le terminal sont nécessaires si une version de MySQL est déjà lancée:

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Bases de Données Réparties

Sybase Adaptive Server Enterprise 15

TP Contraintes - Triggers

Bases de Données. Plan

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Construire une base de donnée pour bibliothèque

1/ Présentation de SQL Server :

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

BASES DE DONNEES TP POSTGRESQL

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

16H Cours / 18H TD / 20H TP

MODE OPERATOIRE OPENOFFICE BASE

Transcription:

UE 503 L3 MIAGE Initiation Réseau et Programmation Web Séance 06 PHP Nazih OUWAYED nazih.ouwayed@loria.fr http://www.loria.fr/~ouwayedn/ Bases de données Année Universitaire 2010/2011 2 g C est quoi une base de données? Une base de données contient une ou plusieurs tables, chaque table ayant un ou plusieurs enregistrements g Exemple de table : g La gestion de la base est rendue possible grâce à un Système de Gestion de Base de Données (S.G.B.D) Il a pour rôle de : manipuler, compléter, mettre à jour les données dans les tables et de pouvoir les interroger via des requêtes, par le langage SQL (Structured Query Language : Langage de requêtes structurées) Il existe plusieurs S.G.B.D., certains gratuits, d'autres payants : pour les gratuits, on trouve 3 4 1

g Les champs d une table de base de données correspondent à une des variables qui définit un enregistrement, par exemple "PRENOM" sont caractérisés par une nature, ils permettent, pour certains, d'identifier avec précision une valeur ou un groupe de valeurs peuvent être de plusieurs types : texte, valeur numérique ou valeur binaire g Les champs d une table de base de données Champ numérique Int : de -2 147 483 648 à 2 147 483 647 En mettant l'attribut UNSIGNED, on stocke de 0 à 4 294 967 295 (on ne se préoccupe plus du signe avec le paramètre UNSIGNED) Il existe INT, TINYINT, BIGINT, DOUBLE qui peuvent contenir des nombres plus ou moins grands Pour les réels : FLOAT 5 6 Champ texte VARCHAR pour stocker au plus 255 caractères TEXT peut stocker 65535 caractères LONGTEXT : 4 294 967 295 (2^32-1) caractères... ENUM : présente une énumération. Par exemple, ENUM('rouge', 'bleu', 'vert') assurera que la valeur du champ sera l'une des 3 de la liste Champs de type date et heure DATE permet d'effectuer des opérations sur les dates dans les requêtes, plutôt que de stocker la date sous forme de texte Autres types de champs On peut stocker des images, ou encore des fichiers complets dans une base de données : en les encodant dans un champ de type BLOB (binaire) par exemple 7 Clé primaire (Primary Key) La clé primaire est une propriété d'un des champs pour différencier des enregistrements identiques Exemple d ambiguïté : Pour distinguer les deux enregistrements de "Benjamin", on attribue un numéro à chaque individu, généralement appelé "identifiant" et abrégé sous la forme "id" (ou "ID") Cet identifiant sera "auto incrémenté" 8 2

La solution g Clé étrangère (Foreign Key) La clé étrangère est un champ dans une table qui est clé primaire dans une autre table Attention Toutes les valeurs des clés doivent être uniques : il ne doit pas, pour une même table, y avoir 2 valeurs égales de clés primaires On peut demander à voir le contact dont l'id est 2 ou 3, on a bien 2 personnes distinctes 9 Pour l exemple, on peut très bien spécifier que ID_PAYS est une clé étrangère liée au champ ID de la table pays L'existence d'une clé étrangère dans les S.G.B.D.R. permet de mettre à jour des enregistrements en cascade Par exemple, supposons que j'efface le pays "France", je dois supprimer tous les contacts qui y vivent (puisqu'ils ne seront alors rattachés à aucun pays) 10 g Administration de L administration peut se faire de deux manières Par PHP (voir plus loin) Manuellement, par l interface phpmyadmin d EasyPhp L interface phpmyadmin Pour y accéder : Cliquer sur le bouton droit de la souris en le mettant sur le symbole d Easyphp puis appuyer sur Administration Ensuite, appuyer sur mysql Administration Les bases existantes Ex: zebda qui contient 83 tables Création d une base : 2 méthodes Informations générales sur le gestionnaire phpmyadmin 11 12 3

Les bases enregistrées g Création d une base personnelle Commençons par créer une base de données : ma-base Laissez le type en Interclassement par défaut ma-base(0) indique que la base contient 0 table Regardez le code SQL qui s affiche Les tables enregistrées 13 14 g Création d une table Rentrez le nom d'une table ("contacts" par exemple) et le nombre de champs (rubriques) souhaités, à ce stade, sélectionnez 4 g Création d une table 15 Ajouter un ou plusieurs champs 16 4

g Création d une table Afficher les enregistrements Ajouter un enregistrement Modifier ou supprimer un ou plusieurs champs g Les champs Le nom du champ ne peut pas être nul, ni comporter de caractères accentués, espaces, -,... par contre, il accepte _ Le type de champ est sélectionné dans une liste de choix pour l'instant, sélectionner VARCHAR qui correspond à du texte La taille/valeurs permet de déterminer la taille max des données à rentrer dans les champs Interclassement représente le jeu de caractères par défaut si vous ne sélectionnez rien (préférable) sinon sélectionner Latin1_swedish_ci. Si le jeu de caractères n'est pas démarré dans phpmyadmin, une erreur est produite Null permet de dire si le champ peut-être null (vide) ou non Ajouter un ou plusieurs champs 17 Default permet de donner une valeur par défaut au champ 18 g Les options PRIMARY : permet de déterminer si le champ est ou non une clé primaire dans ce cas, la valeur du champ sera unique dans la table aucun enregistrement n'aura la même valeur dans ce champ UNIQUE : permet de spécifier que le contenu est unique dans l'ensemble du champ évite les doublons INDEX : indique que le champ peut être utilisé comme une valeur de repérage (index) permet d'augmenter les vitesses de traitement (tri) dans la table la clé primaire est également un index FULLTEXT : permettent d'indexer des textes complets cette possibilité ralentit la table pour de longs champs 19 g Création de table CREATE TABLE Syntaxe CREATE table nomdetable( Nomattribut1 type[not null][auto_increment] nomattribut2 type[not null] nomattributn type[not null] primary key (nomattribut1,...,nomattributn) ; Auto_increment : l'entier sera augmenté de 1 à chaque nouvelle insertion 20 5

g Création de table : appuyer sur SQL et rentrer ce code g Modification de la table Une fois créée, on peut la modifier en utilisant ALTER TABLE et ADD On peut la modifier en utilisant ALTER TABLE et DROP 21 22 g Insertion d enregistrements Syntaxe INSERT INTO votre_table (nomattribut1,...,nomattributn) values ('valeur1',...,'valeurn'); Les attributs qui ne sont pas mentionnés prendront leur valeur par défaut Exemple Insert into clients_tbl(id,prenom,nom,ne_le,ville,enfants ) VALUES('','Patrick','Martin','1965-10 - 08','Bordeaux','2') 23 g Sélection d information d enregistrements affichez uniquement les personnes qui n'ont que 2 enfants, la requête SQL sera : SELECT * FROM clients_tbl WHERE enfants= 2 demander l'affichage que des noms et prénoms : SELECT nom,prenom FROM clients_tbl WHERE enfants='2' 24 6

g Sélection combinée SELECT * FROM clients_tbl WHERE (enfants='1') OR (enfants='2' AND ville='paris ) g La commande Update UPDATE clients_tbl SET prenom='jacques WHERE id=1 UPDATE clients_tbl SET prenom='jean- Pierre', nom='papin', ville='marseille', enfants=3 WHERE id=1 25 26 g La commande DELETE DELETE FROM clients_tbl WHERE id=1 g Jointure de tables Soient les deux tables : 27 28 7

g Jointure de tables SELECT * FROM Livres, Genres WHERE Livres.CodeGenre = Genres.CodeGenre; g Jointure de tables SELECT Titre, Livres.CodeGenre, LibelleGenre, Prix FROM Livres, Genres WHERE Livres.CodeGenre = Genres.CodeGenre; 29 30 g Précautions Ne touchez pas au mot de passe, N essayez pas de le changer g Dans php.ini, enlever les ; avant : extension=php_mysql.dll php_pdo.dll php_pdo_mysql.dll g Utilisation de la classe PDO (PHP Data Object) Principale nouveauté de PHP C est en quelque sorte un langage orienté objet pour traiter les bases de données L approche PDO permet d étendre les fonctions d accès à la base facilement et de manière transparente 31 32 8

g Utiliser votre base de données L utilisation de la BD avec PHP se fait en 5 étapes Connexion Sélection de la BD Requête Exploitation des résultats Fermeture de la connexion Structure des classes de PDO PDO propose 3 classes PDO : lien à la BD PDOStatement : requêtes et leurs résultats PDOException : pour la gestion des erreurs g Connexion au serveur de données La première étape consiste à déclarer les variables qui vont permettre la connexion à la base de données (ce sont les paramètres des fonctions de connexion à la base) Ces variables sont : $user : le nom d'utilisateur $passwd : le mot de passe $host : l'hôte (ordinateur sur lequel le SGBD est installé) $bdd : le nom de la base de données La deuxième étape est de construire la DSN (Data Source Name) $dsn = 'mysql:host=localhost;dbname=ma-base'; Enfin, la connexion se fait par la création d un objet de la classe PDO $dbh= new PDO($dsn, $user, $pass); Il ne faut pas oublier de fermer la base 33 $dbh=null; 34 g connexion-pdo.php <?php $user = 'root'; $pass = 'mysql'; // Data Source Name $dsn = 'mysql:host=localhost;dbname=ma-base'; try{ //tentative de connexion : on crée un objet de la classe PDO $dbh= new PDO($dsn, $user, $pass); //S'il y a des erreurs de connexion, un objet PDOException est // lancé. Vous pouvez attraper cette exception si vous voulez // gérer cette erreur } catch (PDOException $e){ print "Erreur! :". $e->getmessage(). "<br/>"; die(); } if ($dbh) { $dbh = NULL; //Fermeture de la connexion }?> 35 g Effectuer une requête Une fois la connexion ouverte, on va pouvoir utiliser la BD pour lire, modifier Pour cela, on utilise le langage SQL g Pour envoyer une requête au serveur On peut utiliser deux méthodes de la classe PDO query() pour la sélection exec() pour la mise à jour 36 9

g Requête de sélection On utilise la méthode query() Les données ne sont pas affichées, elles sont mises en mémoire Il faut donc aller les chercher et les afficher La méthode fetchall() retourne l ensemble des données sous forme d un tableau PHP et libère le SGBD La méthode fetch() permet une lecture séquentielle du résultat Le paramètre fetch_style détermine la façon dont PDO retourne les résultats (format des résultats) 37 g Exemple 1 Lire tous les enregistrements : lire-enregistrements.php <?php //Inclusion du fichier contenant la connexion à la base include_once('connexion-pdo.php'); //La requête SQL $sql = "SELECT * FROM `infos_tbl` LIMIT 0, 30"; //Recherche des données $sth = $dbh->query($sql); // On voudrait les résultats sous //la forme d un tableau associatif $result = $sth->fetchall(pdo::fetch_assoc); //Affichage des résultats foreach ($result as $row){ echo $row['nom'];echo '-'; echo $row['prenom'];echo '-'; echo $row['email'];echo '<br/>'; } $dbh=null;?> 38 g Exemple 2 Requête d insertion/modification : insertion-enreg.php On utilise la méthode exec() de la classe PDO <?php //Inclusion du fichier contenant la connexion à la base include_once('connexion-pdo.php'); //Insertion d'un enregistrement $sql = "INSERT INTO infos_tbl(id,nom,prenom,email,icq) VALUES ('', 'Ouwayed','Nazih', 'ouwayedn@loria.fr', '')"; //Exécution de la requête $dbh->exec($sql); $dbh=null;?> g exec() retourne le nombre de lignes modifiées, 0 si aucune et FALSE si erreur de requête 39 g Gestion des erreurs Les erreurs sont stockées et consultables en faisant appel aux méthodes errorcode() et errorinfo() Exemple : gestion-erreur-mod-sil.php <?php //Inclusion du fichier contenant la connexion à la base include_once('connexion-pdo.php'); //Insertion d'un enregistrement $sql = ""; if(!$dbh->exec($sql)){ echo $dbh->errorcode(). "<br>"; echo $dbh->errorinfo(); } $dbh=null;?> 40 10

Bibliographie g A. Belaïd, Programmation web, PHP 5 g http://www.php-astux.info/mysql-introduction.php g http://www.phpdebutant.org g http://php.net/ 41 11