PHP & BD. PHP & Bases de données. Logiciels & matériels utilisés. Bases de données et Web



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

PHP 4 PARTIE : BASE DE DONNEES

CREATION WEB DYNAMIQUE

PDO : PHP Data Object 1/13

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

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

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

Attaques applicatives

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

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

PHP. PHP et bases de données

Application web de gestion de comptes en banques

Java DataBaseConnectivity

INSTALLATION DE L APPLICATION DU CONTEXTE ITASTE

Pratique et administration des systèmes

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

Bases de données relationnelles

Mysql avec EasyPhp. 1 er mars 2006

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

Stockage du fichier dans une table mysql:

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)

laposte.net) Ministère de l'éducation nationale Atelier sécurité Rabat RALL 2007

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

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

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

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

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

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

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

Les bases de données

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Bases de données Outils de gestion

1. Base de données SQLite

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

1 Introduction et installation

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

Module BD et sites WEB

Comment Accéder à des Bases de Données MySQL avec Windows lorqu'elles sont sur un Serveur Linux

Performance web. Mesurer. Analyser. Optimiser. Benjamin Lampérier - Benoît Goyheneche. RMLL Beauvais. 8 Juillet 2015

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

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

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Bases de données élémentaires Maude Manouvrier

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

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

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

Test de HSQLDB et Comparatif avec Sqlite

Programmation Web. Madalina Croitoru IUT Montpellier

PHP 5.4 Développez un site web dynamique et interactif

Bases de Données Relationnelles. Le Modèle Relationnel

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Maarch Framework 3 - Maarch. Tests de charge. Professional Services. 11, bd du Sud Est Nanterre

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

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

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

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Logiciel : GLPI Version : SYNCRHONISATION DE GLPI AVEC ACTIVE DIRECTORY. Auteur : Claude SANTERO Config. : Windows 2003.

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

TP JAVASCRIPT OMI4 TP5 SRC

PROJET 1 : BASE DE DONNÉES REPARTIES

Programme détaillé. Administrateur de Base de Données Oracle - SQLServer - MySQL. Objectifs de la formation. Les métiers

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

Installation FollowMe Q server

Gestion de stock pour un magasin

Bases de données et sites WEB

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

Les BASES de DONNEES dans WampServer

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

Dans l'article précédent, vous avez appris

Devoir Data WareHouse

Une famille d'applications permettant à toute organisation d'optimiser le suivi et la gestion de ses ressources internes vous présente

OpenPaaS Le réseau social d'entreprise

SQL Historique

BTS/CGO P10 SYSTEME INFORMATION Année

CASE-LINUX MAIL - ROUNDCUBE

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

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Projet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations

Configurer la supervision pour une base MS SQL Server Viadéis Services

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

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

Information utiles. webpage : Google+ : digiusto/

1 Position du problème

Architectures web/bases de données

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Le langage SQL Rappels

Documentation de conception

I. MySQL : Serveur et SGBD

Microsoft OSQL OSQL ou l'outil de base pour gérer SQL Server

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

Bases de Données et Internet

Compte-rendu de projet de Système de gestion de base de données

Cours: Administration d'une Base de Données

Transcription:

PHP & Bases de données La quantité de données utilisée par certains sites web nécessite l'utilisation d'une base de données Il faut donc disposer d'un SGBD (mysql, postgresql, oracle, ) installé sur un serveur (pas forcément le même que le serveur web) Interactions? Le script PHP envoie la requête SQL au SGBD Le SGBD exécute la requête Le script PHP récupère le résultat Le script PHP traite le résultat (génération de HTML) IUT A Service Direction 19 août 2004 1 IUT A Service Direction 19 août 2004 2 Bases de données et Web Logiciels & matériels utilisés Relier directement le serveur Web au SGBD Page PHP + Requête SQL BD Client avec navigateur Page HTML SQL données Génération HTML (selon modèle) Serveur Web SGBD Serveur de données Client avec navigateur Indépendant du système et du matériel Système Serveur Web SGBD Linux Apache MySql PostgreSQL Oracle Langage de script PHP IUT A Service Direction 19 août 2004 3 IUT A Service Direction 19 août 2004 4

Logiciels & matériels utilisés Client avec navigateur Indépendant du système et du matériel Système Windows 2008 Serveur Web Internet Information Server Langage de script ASP SGBD SqlServer Les 5 étapes pour l'écriture d'un script 1. Se connecter au SGBD 2. Sélectionner la BD 3. Envoie d'une requête 4. Récupération du résultat 5. Se déconnecter Les exemples présentés se feront en utilisant la bibliothèque PDO (PHP Data Objects) qui permet de rendre l application indépendante du SGBD. PDO est une bibliothèque orientée objet et utilise le mécanisme des exceptions. IUT A Service Direction 19 août 2004 5 IUT A Service Direction 19 août 2004 6 PHP orienté objet PHP est un langage de programmation qui permet de développer des applications orientées objet Il est donc possible de définir des classes avec des attributs et méthodes, constructeurs, accesseurs (get), mutateurs (set), Exemple : class Personnage { private $_experience = 50; // attribut public function afficherexperience() { echo $this->_experience; // méthode $perso = new Personnage(); $perso->afficherexperience(); PDO (PHP Data Objects) Création d un objet instance de la classe qui tente de réaliser les étapes 1 (connexion) et 2 (choix de la BD) $bdd = new PDO(DSN, USER, PASSWD); Le DSN (Data Source Name) est la chaîne de connexion spécifique au SGBD $bdd = new PDO("mysql:host=sql.free.fr; dbname=test", "dupont", "truc" ); Etape 5 : se déconnecter pas de fonction PDO déconnexion automatique en fin de script Université Paul Sabatier - Toulouse 7 3 Université Paul Sabatier - Toulouse 8 3 IUT A Service Direction 19 août 2004 7 IUT A Service Direction 19 août 2004 8

Etape 1 & étape 2 : 4 paramètres nécessaires dans toutes les pages et variables suivant les hébergeurs : Création d'un fichier de configuration config.inc.php $server = " sql.free.fr" ; $user = "dupont" ; $passwd = "truc" ; $database = "test" ; inclure le fichier de config au début de chaque script qui doit utiliser la BD include "config.inc.php" Etape 1 & étape 2 : include "config.inc.php" // tentative de connexion avec gestion des exceptions try { $bdd = new PDO("mysql:host=$server;dbname=$database", $user, $passwd); catch (Exception $e) { die('erreur : '. $e->getmessage()); // die arrête le script IUT A Service Direction 19 août 2004 9 IUT A Service Direction 19 août 2004 10 Etape 3 : Exécution d une commande SQL Il faut distinguer 2 cas : - la requête ne renvoie pas de données (toutes les commandes sauf SELECT, comme par exemple INSERT, UPDATE, DELETE, ) il suffit d exécuter la requête $bdd->exec("requête SQL") - la requête renvoie des données vers l application (commande SELECT) il faut exécuter la requête $bdd->query("requête SELECT") mais en plus, il faut récupérer le résultat qui est l'ensemble des tuples de la requête Etape 3 & 4 : exécution d'une requête SQL autre que SELECT // suppression de l'étudiant nommé Dupont $nb = $bdd->exec("delete from etudiant where nom = 'Dupont' "); // si la requête est correcte, $nb contient le nombre de tuples supprimés, sinon c est un booléen qui permet de savoir que la requête n est pas correcte if ($nb) echo $nb." étudiant(s) supprimé(s)" else echo "Pb lors de la suppression"; IUT A Service Direction 19 août 2004 11 IUT A Service Direction 19 août 2004 12

(SELECT) Etape 3 & 4: exécution d'une commande Select query renvoie un résultat Ce résultat contient un ensemble d'enregistrements Il n'est possible d'accéder qu'à un seul enregistrement à la fois Une fonction fetch_... permette de récupérer l'enregistrement courant (au début le premier) et de passer au suivant Pour parcourir tous les enregistrements, il faut utiliser une boucle. La fonction fetch_... renvoie faux si il n'y a plus d'enregistrements (SELECT) Etape 3 & 4: exécution d'une commande Select // liste des étudiants dans l'ordre alphabétique $rs = $bdd->query("select nom, prenom FROM etudiant ORDER BY nom, prenom"); // boucle pour afficher tous les étudiants while ($etud = $rs->fetch()) { // $etud est un tableau associatif qui contient autant de cases que le select d'attributs echo $etud["nom"]. " ".$etud["prenom"]; IUT A Service Direction 19 août 2004 13 IUT A Service Direction 19 août 2004 14 (SELECT) Options de la fonction fetch : PDO::FETCH_ASSOC: retourne un tableau indexé par le nom de la colonne comme retourné dans le jeu de résultats $rs = $bdd->query("select nom, prenom FROM etudiant"); $etud = $rs->fetch(pdo::fetch_assoc)) nom Leroy prenom Paul $etud echo $etud["nom"]." ".$etud["prenom"]; (SELECT) Options de la fonction fetch : PDO::FETCH_OBJ: retourne un objet anonyme avec les noms d'attributs qui correspondent aux noms des colonnes retournés par le SELECT $rs = $bdd->query("select nom, prenom FROM etudiant"); $etud = $rs->fetch(pdo::fetch_obj)) $etud->nom Leroy $etud-> prenom Paul echo $etud->nom." ".$etud->prenom; IUT A Service Direction 19 août 2004 15 IUT A Service Direction 19 août 2004 16

: tableau Quelques exemples Exemple1 : Tableau HTML contenant la liste des étudiants <?php include "config.inc.php" try { $bdd = new PDO("mysql:host=$server;dbname=$database", $user, $passwd); catch (Exception $e) { die('erreur : '. $e->getmessage()); // die arrête le script $rs = $bdd->query("select nom, prenom FROM Etudiant ORDER BY nom, prenom"); J.-M. Université Peccante IUT Paul Sabatier Sabatier - Toulouse 3 IUT A Service Direction 19 août 2004 17 IUT A Service Direction 19 août 2004 18 : tableau // récupération des étudiants 1 par 1 et affichage dans une ligne d'un tableau HTML echo <table> ; while ($etud = $rs->fetch(pdo::fetch_assoc)) { echo <tr><td> ; echo $etud["nom"]; echo </td><td> ; echo $etud["prenom"]; echo </td></tr> ; echo </table> ; mysql_close();?> : formulaires Exemple 2 : zone de liste d'un formulaire contenant la liste des étudiants pour en choisir un La zone de liste affiche les nom et prénom des étudiants mais la valeur renvoyé est le code étudiant <select name="etudiant"> <option value="13"> jean dupont </option> <option value="21"> pierre durand </option> <option value="7"> leo leroy </option>... </select> Les valeurs (code et nom de l étudiant) doivent être récupérées dans la BD IUT A Service Direction 19 août 2004 19 IUT A Service Direction 19 août 2004 20

: formulaires Accès à la base pour construire le formulaire <?php $rs = $bdd->query("select code, nom, prenom FROM Etudiant ORDER BY nom, prenom"); // zone de liste sport echo '<select name="etudiant"> ; while ($etud = $rs->fetch(pdo::fetch_obj)) { echo <option value=". $etud->code. "> ; echo $etud->prenom.. $etud->nom; echo </option> ; echo </select> ;?> : gestion de données Formulaire de gestion de données Ex : suppression d'un étudiant J. Dupont <form action="delete.php" method="post"> delete.php // récupère le code de l'étudiant à supprimer $code_etud=$_post["etudiant"]; // exécution de la commande DELETE parametree par le code etudiant $ok = $bdd->exec("delete from etudiant where code=".$code_etud); IUT A Service Direction 19 août 2004 21 IUT A Service Direction 19 août 2004 22