PHP 4 PARTIE : BASE DE DONNEES



Documents pareils
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)

CREATION WEB DYNAMIQUE

PHP. PHP et bases de données

Mysql avec EasyPhp. 1 er mars 2006

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

INSTALLATION DE L APPLICATION DU CONTEXTE ITASTE

PDO : PHP Data Object 1/13

Bases de données relationnelles

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

Java DataBaseConnectivity

La problématique de la Préservation des Bases de Données. Olivier ROUCHON CINES Groupe PIN Jeudi 7 Octobre

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

Stockage du fichier dans une table mysql:

Faculté des sciences de gestion et sciences économiques BASE DE DONNEES

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Les bases de données Page 1 / 8

Application web de gestion de comptes en banques

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

Pratique et administration des systèmes

Mercredi 15 Janvier 2014

Gestion du parc informatique matériel et logiciel de l Ensicaen. Rapport de projet. Spécialité Informatique 2 e année. SAKHI Taoufik SIFAOUI Mohammed

SQL Historique

Sommaire. Etablir une connexion avec une base de données distante sur PostGreSQL

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

CESI Bases de données

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

Présentation du module Base de données spatio-temporelles

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

Les bases de données

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

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

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

Evidian IAM Suite 8.0 Identity Management

I. MySQL : Serveur et SGBD

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

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)

THEME PROJET D ELABORATION D UNE BASE DE DONNEES SOUS LE SERVEUR MYSQL

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

Introduction aux Bases de Données Relationnelles Conclusion - 1

Le Langage SQL version Oracle

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

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

SQL MAP. Etude d un logiciel SQL Injection

Le langage SQL Rappels

Olivier Mondet

Jérôme FESSY. IUT de Paris 5. Base de Données. Cours Introductif. Base de Données

Introduction aux bases de données Cours 1 : Généralités sur les bases de données

PROJET 1 : BASE DE DONNÉES REPARTIES

Architecture de la plateforme SBC

1 Introduction et installation

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

Information utiles. webpage : Google+ : digiusto/

//////////////////////////////////////////////////////////////////// Administration bases de données

Initiation aux bases de données (SGBD) Walter RUDAMETKIN

Département Génie Informatique

Bases de données et sites WEB

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

Licence Professionnelle Commerce Electronique. MySQL. Michel DUBOIS Michel Dubois : Support de cours SGBD N 1

Les BASES de DONNEES dans WampServer

Accès aux bases de données

Bases de données relationnelles : Introduction

BASES DE DONNÉES. CNAM Centre associé de Clermont-Ferrand Cycle A Année J. Darmont I. INTRODUCTION II. LES SYSTÈMES HIÉRARCHIQUES

Compte Rendu d intégration d application

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

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

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

INTRODUCTION AUX BASES de DONNEES

Devenez un véritable développeur web en 3 mois!

Bases de données Cours 1 : Généralités sur les bases de données

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

Dossier Technique. Détail des modifications apportées à GRR. Détail des modifications apportées à GRR Le 17/07/2008. Page 1/10

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

BULK SMS Envoi en masse d un message texte moyennant un téléphone mobile (GSM)

OpenPaaS Le réseau social d'entreprise

Cours Base de données relationnelles. M. Boughanem, IUP STRI

RÉALISATION D UN SITE DE RENCONTRE

Attaques applicatives

Bases de données élémentaires Maude Manouvrier

Master I Génie Logiciel

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

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

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

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

arcopole Studio Annexe 4 Intégration LDAP et processus d authentification Site du programme arcopole :

Gestion de stock pour un magasin

1. Base de données SQLite

Gestion des utilisateurs et de leurs droits

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

Introduction à la B.I. Avec SQL Server 2008

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Architectures web/bases de données

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Configuration de SQL server 2005 pour la réplication

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

Transcription:

PHP 4 PARTIE : BASE DE DONNEES 1. Introduction 2. Présentation de MySQL 3. Principe 4. Connexion 5. Interrogation 6. Extraction des données 7. Fonctions de services 8. Traitement des erreurs 9. Travaux pratiques BTS IRIS 2003 [tv]

1. Introduction Parmi les nombreux atouts du langage PHP, un des plus connus est son interfaçage avec la majorité des bases de données du marché. Parmi les plus connues, on peut citer : MySQL, PostgreSQL, Oracle, Ingres, Interbase, Informix, Microsoft SQL Server, msql, Sybase, FrontBase, dbase, etc La base de donnée la plus utilisée avec PHP est sans aucun doute : MySQL, un SGDBR GPL.

2. Présentation MySQL MySQL est une base de données implémentant le langage de requête SQL. SGBDR = Système de Gestion de Base de Données Relationnelle Remarque : cette partie suppose connue les principes des bases de données relationnelles. Il existe un outil libre et gratuit développé par la communauté des programmeurs libres : phpmyadmin, qui permet l administration aisée des bases de données MySQL avec php. Il est disponible sur : http://sourceforge.net/projects/phpmyadmin/ et http://www.phpmyadmin.net. Avec MySQL vous pouvez créer plusieurs bases de données sur un serveur. Une base est composée de tables contenant des enregistrements. Plus d'informations sont disponibles à http://www.mysql.com/. La documentation de MySQL est disponibles à http://www.mysql.com/documentation/, ainsi qu'en français chez nexen : http://dev.nexen.net/docs/mysql/.

3. Principe PHP fournit un grand choix de fonctions permettant de manipuler les bases de données. Toutefois, parmi celles-ci quatre fonctions sont essentielles : La fonction de connexion au serveur La fonction de choix de la base de données La fonction de requête La fonction de déconnexion Avec le SGBD MySQL, ces fonctions sont les suivantes : mysql_connect mysql_select_db mysql_query mysql_close Evidemment, il faudra traiter le résultat de la requête effectuée et donc transformer le résultat d un ligne soit sous forme de variables, de tableau, de tableau associatif, d objets.

4. Connexion (I) Pour se connecter à une base de donnée en php, il faut spécifier un nom de serveur, un nom d utilisateur, un mot de passe et un nom de base. Les fonctions de connexion : mysql_connect($server,$user,$password) : permet de se connecter au serveur $server en tant qu utilisateur $user avec le mot de passe $password, retourne l identifiant de connexion si succès, FALSE sinon mysql_select_db($base[,$id]) : permet de choisir la base $base, retourne TRUE en cas de succès, sinon FALSE mysql_close([$id]) : permet de fermer la connexion mysql_pconnect() : idem que mysql_connect() sauf que la connexion est persistante, il n y a donc pas besoin de rouvrir la connexion à chaque script qui travaille sur la même base. Remarque : les identifiants de connexion ne sont pas nécessaires si on ne se connecte qu à une seule base à la fois, ils permettent seulement de lever toute ambiguïté en cas de connexions multiples.

4. Connexion (II) Exemple simple de connexion : if($db = mysql_connect("localhost", "root", "")) { $id_db = mysql_select_db("test"); die("echec de connexion à la base!"); else die("echec de connexion au serveur de base de données"); // code du script // mysql_close($db);

4. Connexion (III) En pratique, on constate les comportements suivants : Utilisation de variables globales de connexion ($user, $passwd, $host et $base) qui seront placées dans un fichier du style config.inc.php et inclus dans chaque script qui en a besoin par un require() ou un include(). Intégration du code de connexion ou plus largement d interfaçage à la base de données dans un fichier à inclure (par exemple mysql.inc.php) Utilisation d un API de haut niveau pour notamment le portage vers d autres bases de données (pilote ODBC, couche DAO ou des bibliothèques comme PEAR::DB). Remarque : le plus souvent sous forme de classes. Utilisation des connexions persistantes : évite d avoir à rouvrir une connexion dans chaque script. Les connexions sont automatiquement fermées au bout d un certain temps en cas d absence de toute activité

5. Interrogation Pour envoyer une requête à une base de donnée, on utilise la fonction : mysql_query($str) qui prend pour paramètre une chaîne de caractères qui contient la requête écrite en SQL et retourne un identificateur de résultat ou FALSE en cas d échec. Les requêtes les plus couramment utilisées sont : CREATE (création d une table), SELECT (sélection), INSERT (insertion), UPDATE (mise à jour des données), DELETE (suppression), ALTER (modification d une table), etc... Exemple : $result = mysql_query("select * FROM revues WHERE revueid= $id "); L identificateur de résultat $result permettra à d autres fonctions d extraire ligne par ligne les données retournées par le serveur.

6. Extraction des données (I) Une fois la requête effectuée et l identificateur de résultat obtenu, il ne reste plus qu à extraire les données retournées par le serveur. Sous MySQL (comme pour beaucoup de SGBD), le traitement des résultats d une requête se fait ligne par ligne. Une boucle permettra de recueillir chacune des lignes à partir de l identifiant de résultat. revueid nom 1 Programmez! 2 Linux Magazine 3 LOGIN: Une ligne contient une ou plusieurs valeurs correspondants aux différents attributs retournés par la requête. Ainsi, une ligne de résultat pourra être sous la forme de variables, d un tableau, d un tableau associatif, ou d un objet.

6. Extraction des données (II) mysql_fetch_row($result) : retourne une ligne de résultat sous la forme d un tableau. Les éléments du tableau étant les valeurs des attributs de la ligne. Retourne FALSE s il n y a plus aucune ligne. Exemple : $requete = "SELECT * FROM revues"; if($result = mysql_query($requete)) { while($ligne = mysql_fetch_row($result)) { $revueid = $ligne[0]; $nom = $ligne[1]; echo "$revueid -> $nom<br />"; Ici, on accède aux valeurs de la ligne par leur indice dans le tableau. Une pratique courante est d utiliser la fonction list() pour avoir automatiquement les champs sous forme de variables : while(list($revueid, $nom) = mysql_fetch_row($result)) { echo "$revueid -> $nom<br />";

6. Extraction des données (III) mysql_fetch_array($result) : retourne un tableau associatif. Les clés étant les noms des attributs et leurs valeurs associées leurs valeurs respectives. Retourne FALSE s il n y a plus aucune ligne. Exemple : $requete = "SELECT * FROM revues"; if($result = mysql_query($requete)) { while($ligne = mysql_fetch_array($result)) { $revueid = $ligne["revueid"]; $nom = $ligne["nom"]; echo "$revueid -> $nom<br />"; Ici, on accède aux valeurs de la ligne par l attribut dans le tableau associatif.

6. Extraction des données (IV) mysql_fetch_object($result) : retourne un objet. Les attributs de l objet correspondent à ceux de la ligne de résultat. Et les valeurs des attributs de l objet correspondent à ceux de la ligne de résultat. Retourne FALSE s il n y a plus aucune ligne. Exemple : $requete = "SELECT * FROM revues"; if($result = mysql_query($requete)) { while($ligne = mysql_fetch_object($result)) { $revueid = $ligne->revueid; $nom = $ligne->nom; echo "$revueid -> $nom<br />"; Ici, on accède aux valeurs par leur attribut dans l objet.

7. Fonctions de service Quelques fonctions supplémentaires très utiles : mysql_free_result($result) : efface de la mémoire du serveur les lignes de résultat de la requête identifiées par $result. mysql_insert_id([$id]) : retourne l identifiant d un attribut clé primaire AUTO_INCREMENT de la dernière insertion. mysql_num_fields($result) : retourne le nombre d attributs du résultats. mysql_num_rows($result) : retourne le nombre de lignes du résultats.

8. Traitement des erreurs Généralement, on préfixe les appels aux fonctions mysql_ avec @ pour éviter les affichages dans le navigateur des messages de WARNING ou d erreur (sauf en débuggage ). Par contre, il faut systématiquement tester et traiter les erreurs en provenance de la base de données. Pour cela, on pourra utiliser : mysql_errno() : retourne le numéro de message d'erreur de la dernière opération MySQL mysql_error() : retourne le texte associé à l'erreur générée lors de la dernière requête. Exemple : mysql_connect("tf1"); // ajouter le if echo mysql_errno().": ".mysql_error()."<br>"; mysql_select_db("staracademy"); // ajouter le if echo mysql_errno().": ".mysql_error()."<br>"; $result = mysql_query("select * FROM artistes"); // ajouter le if echo mysql_errno().": ".mysql_error()."<br>";

9. Travaux pratiques 1. Créer la table revues comportant les 2 champs décris dans le cours. Insérer quelques enregistrements. 2. Réaliser un script revues.php qui permet de se connecter à la base et afficher la liste complète des revues disponibles ainsi que le nombre total de revues. 3. Ecrire l application qui réalisera les fonctions de base suivantes : ajouter des revues, modifier des revues existantes, supprimer des revues existantes et afficher les revues disponibles. On structurera son application en utilisant des fichiers séparés. 4. Compléter l application précédente en ajoutant un script d installation permettant de créer la table sur le serveur en vérifiant préalablement son existence. Dans ce cas, le script permettra, suivant le choix de l utilisateur, de la détruire puis de la créer ou de la conserver. 5. Aller plus loin : normalement, ce type d application doit permettre de stocker des articles parues dans les revues existantes. Un minimum est de conserver un sommaire et de pouvoir y faire une recherche suivant des mots clés