Introduction Mysql API mysqli Annexe. Introduction à PHP. Web et SGBD : un exemple avec Mysql. IUT de Fontainebleau. 8 mars 2014. Introduction à PHP

Documents pareils
PHP. PHP et bases de données

CREATION WEB DYNAMIQUE

PHP 4 PARTIE : BASE DE DONNEES

Mysql avec EasyPhp. 1 er mars 2006

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)

PDO : PHP Data Object 1/13

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

Pratique et administration des systèmes

Java DataBaseConnectivity

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

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

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

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

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

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

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

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

Bases de données relationnelles

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

OpenPaaS Le réseau social d'entreprise

Gestion de stock pour un magasin

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

Application web de gestion de comptes en banques

Stockage du fichier dans une table mysql:

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

I. MySQL : Serveur et SGBD

Les BASES de DONNEES dans WampServer

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

Les bases de données

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

INSTALLATION DE L APPLICATION DU CONTEXTE ITASTE

Information utiles. webpage : Google+ : digiusto/

Mise en oeuvre d'une base de données mono-utilisateur avec SQLite

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

SQL Historique

1 Introduction et installation

CREATION d UN SITE WEB (INTRODUCTION)

Architectures web/bases de données

FileMaker 13. Guide ODBC et JDBC

Bases de Données. Stella MARC-ZWECKER. Maître de conférences Dpt. Informatique - UdS

Java et les bases de données

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

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

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

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

Accès aux bases de données

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

Devoir Data WareHouse

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)

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

1/ Présentation de SQL Server :

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

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

Bases de SQL. Hacks 1-6 CHAPITRE UN

les techniques d'extraction, les formulaires et intégration dans un site WEB

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

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

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

BASES DE DONNEES TP POSTGRESQL

PROJET 1 : BASE DE DONNÉES REPARTIES

IFT3030 Base de données. Chapitre 1 Introduction

Mercredi 15 Janvier 2014

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

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

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

MySQL. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

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

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

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

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

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

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

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

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

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

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

Programmation Web. Madalina Croitoru IUT Montpellier

Bases de données élémentaires Maude Manouvrier

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

Installation et Mise en œuvre de MySQL

Attaques applicatives

Bases de données cours 1

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

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

Introduction à MySQL (ou MySQL en 3 heures montre en main)

SQL MAP. Etude d un logiciel SQL Injection

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

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

III. Contexte. Objectifs. Philippe HOUE, Ecole des Mines de Nantes

Cours: Administration d'une Base de Données

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

INTRODUCTION AUX BASES de DONNEES

1. Base de données SQLite

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

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

Transcription:

Web et SGBD : un exemple avec IUT de Fontainebleau 8 mars 2014

1 2 Modèle relationnel 3 4 listes des fonctions mysqli

1 2 Modèle relationnel 3 4 listes des fonctions mysqli

Problématique Sites dynamiques $ "Informations dynamiques". Comment la gérer, i.e la stocker, l utiliser et la modifier à partir d un site? Plusieurs solutions : Fichiers : difficulté à accéder/organiser l information logiquement. Suffisant par exemple pour un compteur de visite!!! Utilisation d un SGBD : plusieurs solutions. Une api pour chaque sgbd api MySQL, api Oracle, api access, api PostGreSQL, etc. api indépendate du sgbd Une seule interface : c est le cas d ODBC (Open DataBase Connectivity), ou encore PDO (PHP Data Objects). Compromis : Sqlite (sans serveur externe). Bases sql dans des fichiers sur le serveur http.

Le modèle Modèle relationnel L application utilise des données gérées par un sgbd. Le php intègre une api mysql qui lui permet de faire des requêtes sur un serveur mysql et d exploiter leurs résultats.

Modèle relationnel MySQL est une base de données implémentant le langage de requête SQL un langage relationnel très connu. Cette partie suppose connue les principes des bases de données relationnelles. Disponible sur toutes les plates-formes. (Unix, Windows) 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. Le site 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/.

Modèle relationnel Modèle relationnel Modèle le plus répandu et le plus classique. Les données sont organisées en des tables, chacune des colonnes représentant un attribut des données. Exemple Prénom Nom Date de naissance Jean Dupond 1998-07-12 Marcel Durand 1951-12-12 Serge Lang NULL Chaque attribut (colonne) est typé. SQL (Structured Query Language) : langage standard de requête et de mise à jour des données (petites variantes suivant les SGBD)

Modèle relationnel SGBD relationnels les plus connus sgbds Oracle IBM DB2 Microsoft SQL Server Microsoft Access MySQL PostGreSQL Sqlite commercial, le plus utilisé en entreprise commercial commercial commercial, pauvre en fonctionnalités libre (?), le plus utilisé sur le Web libre, plus abouti que MySQL libre, pas besoin de serveur Je vous renvoie à votre cours!

Modèle relationnel Architecture Client/serveur, communication via TCP/IP. Un serveur (daemon) mysqld (port 3306). Une multitude de clients : client en mode console : mysql

Modèle relationnel Une multitude de clients : phpmyadmin : administration via le Web

1 2 Modèle relationnel 3 4 listes des fonctions mysqli

Intéraction Script(s)$SGBD Intéraction d un script php avec le(s) sgbd(s) 1. au(x) serveur(s). 2. Selection de(s) la base(s) de données. 3. Requête(s). 4. Exploitation des résultats. 5..

php avec mysql L extension procédurale mysql est obsolète depuis PHP 5.5.0, car elle ne prend pas en charge les nouvelles fonctionalités de mysql5 : procédures stockées, fonctions, transactions. Pas de requêtes préparées, gestion manuelle des échappements. Elle sera supprimée dans un futur proche. A la place, soit l extension mysqli ou PDO_MySQL devrait être utilisée. Dans la suite, on présente l extension mysqli. C est une extension objet, mais qui offre une version procédurale que l on utilisera. Dans la plupart des cas, les noms de fonctions ne diffèrent (de celle de mysql) que par leurs préfixes. Quelques fonctions mysqli prennent un gestionnaire de connexion comme premier argument, alors que la fonction correspondante de l ancienne interface mysql le prennait comme argument optionnel en dernière position.

Un exemple 1 connexion $link=mysqli_connect("host","user","passwd","db"); if(!$link) { die("<p>connexion impossible</p>"); } 2 Requête $resultat=mysqli_query($link,"select titre,annee FROM Film");

Un exemple 3 Exploitation if($resultat) { echo "<ul>"; while($enr=mysqli_fetch_assoc($resultat)) { echo "<li>".$enr[ titre ]." en } echo "</ul>"; ".$enr[ annee ]."</li>"; } else die("<p>erreur dans l éxécution de la requête.</p>"); 4 mysqli_close($link);

Fonction de connexion mysqli mysqli_connect ( [ string $host = ini_get("mysqli.default_host") [, string $username = ini_get("mysqli.default_user") [, string $passwd = ini_get("mysqli.default_pw") [, string $dbname = "" [, int $port = ini_get("mysqli.default_port") [, string $socket = ini_get("mysqli.default_socket") ]]]]]] )

Exemple : $link = mysqli_connect( localhost, my_user, my_password, my_db ); if (!$link) { die( Erreur de connexion (. mysqli_connect_errno(). ). mysqli_connect_error()); } echo Succès.... mysqli_get_host_info($link). "\n"; mysqli_close($link);

La fonction mysqli_connect() renvoie un identifiant de connexion, généralement nécessaire par la suite. Renvoie FALSE en cas d échec. La fonction mysqli_select_db() permet de selectionner une base de données. Renvoie TRUE ou FALSE.

Requêtes Il existe plusieurs types de requêtes : Lecture. Modification/Insertion. Suppression. On utilise directement le langage SQL à partir de php. La fonction mixed mysqli_query (mysqli $link, string $query ) permet d envoyer une requête au serveur, et retourne le resultat de l éxecution sous forme d un objet mysqli_result qui permet par la suite de l exploiter, ou un booléen.

Caractères spéciaux Certains caractères dans des paramètres de bases de données mysql doivent être protéger (apostrophe par exemple). Il faut utiliser une fonction spécifique à msqyl : string mysqli_real_escape_string ( mysqli $link, string $escape $nom = mysqli_real_escape_string($_post[ nom ]); $prenom = mysqli_real_escape_string($_post[ prenom ]); $adresse = mysqli_real_escape_string($_post[ adresse ]); $conn = mysqli_connect("localhost","user","pass","db"); mysqli_query($conn, "INSERT INTO etudiants VALUES ( $nom, $prenom, $adresse )" );

Selection Pour une requête de selection, La fonction mysqli_query renvoie un mysqli_result qui représente le jeu de résultats selectionnées (analogie avec les curseurs en PL/SQL). On peut récupérer un à un les résultats avec : mysql_fetch_array() mysql_fetch_object() mysql_fetch_row() mysql_fetch_assoc() retourne un enregistrement sous la forme d un tableau associatif, numérique, ou les deux. retourne un enregistrement sous la forme d un objet retourne un enregistrement sous la forme d un tableau numérique retourne un enregistrement sous la forme d un tableau associatif. La fonction mysql_num_rows() permet de connaître le nombre d enregistrements retournés par une requête de selection.

// version mysql_fetch_array $result=mysqli_query($conn,"select nom,login FROM etudiant"); echo "<UL>"; while ($ligne=mysql_fetch_assoc($result)) { echo "<li>nom : ".$ligne[ nom ]."login : ".$ligne[ login ]."</li>"; } echo "</UL>"; // version mysql_fetch_row $result=mysqli_query($conn,"select nom,login FROM etudiant"); echo "<UL>\n"; while ($ligne=mysql_fetch_row($result)) { echo "<li>nom : ".$ligne[0]."login : ".$ligne[1]."</li>"; } echo "</UL>"; // version mysql_fetch_object $result=mysqli_query($conn,"select nom,login FROM etudiant"); echo "<UL>"; while ($ligne=mysql_fetch_object($result)) { echo "<li>nom : ".$ligne->nom."login : ".$ligne->login."</li>"; } echo "</UL>";

Remarque : depuis php 5.4, il est possible d utiliser foreach pour itérer un mysqli_result : <?php $resultat=mysqli_query($link,"select titre,annee FROM Film"); if($resultat) { echo "<ul>"; foreach($resultat as $enr){ echo "<li>".$enr[ titre ]." en ".$enr[ annee ]." </li>"; } echo "</ul>"; }?>

Insertion/Modification Les requêtes de type INSERT, UPDATE, REPLACE ou DELETE ne retournent normalement pas de données. Néanmoins, il est possible de savoir combien d enregistrement effectivement insérés, modifiés ou supprimés de dernière requête avec la fonction myqsli_affected_rows() <?php $query="update etudiant SET age=age+1 WHERE anniversisaire= 1995-11-11 ;"; mysql_query($conn,$query); echo mysql_affected_rows($conn)."etudiants concernes";?> Dans le cas d un SELECT myqsli_affected_rows() se comporte comme mysqli_num_rows.

Remarque : Lors d une requête d insertion dans une table contenant un champs autoincrémenté, on peut récupérer sa valeur pour la dernière insertion avec mysqli_insert_id() <?php $query="insert INTO etudiant..."; mysqli_query($conn,$query); echo "Identifiant etudiant : ".mysql_insert_id($conn);?>

La connexion au serveur est fermé automatiquement à la fin du script PHP. On peut nénamoins le faire manuellement à l aide la fonction mysqli_close()

Interférence HTML/PHP avec SQL Utiliser mysqli_real_escape_tring de manière à protéger les caractères apostrophes, antislashes et guillemets pour mysql. Utiliser la fonction trim qui supprime les espaces en début et fin de mot, avant insertion dans la base. Utiliser la fonction htmlentities qui permet de convertir les caractères spéciaux d HTML : par exemple &,<,>,",. Utiliser la fonction nl2br de manière à convertir les sauts lignes en balise <br />.

listes des fonctions mysqli de l api mysql mysqli_affected_row() nombre d enregistrements concernés par la dernière requête. mysqli_close() Deconnexion. mysqli_connect() à un serveur. mysqli_data_seek() déplace le pointeur interne de résultat. mysqli_query() Exécution d une requête. mysqli_error() Retourne le texte associé à l erreur provoqué par la dernière requête. mysqli_escape_string() Protège une chaîne pour la passer à mysql_query. mysqli_fetch_array() Lit une ligne de résultat dans tableau. mysqli_fetch_assoc() Idem, dans un tableau associatif. mysqli_fetch_object() Idem, dans un objet. mysqli_fetch_row() Idem, dans un tableau numérique.

Suite... listes des fonctions mysqli api suite mysqli_free_result() mysqli_insert_id() mysqli_num_fields() mysqli_fetch_fields mysqli_num_rows() mysqli_select_db() Efface le résultat de la mémoire. Retourne l identifiant de la dernière requête INSERT. Retourne le nombre de champs d un résultat. Retourne le prochain champs dans le jeu de résultats. Retourne le nombre de lignes d un resultat de SELECT. Selectionne une base de données.