Information personnelle...

Slides:



Advertisements
Présentations similaires
MySQL Base de données.
Advertisements

Présentation du Stage en Entreprise
Conception de Site Webs dynamiques Cours 6
Créer une base de données MySQL
Créer une base de données MySQL Et création de tables, enregistrements, interaction avec PHP.
TOUQUET Arnaud ▪ GI05 BLONDEEL Igor ▪ GM05
MySQL I / Présentation. II / Administration et Outils.
Exposé de Système - Informatique et Réseau
TRANSFER Alger – Serveur Web Nicolas Larrousse Septembre Petit historique du Worl Wide Web Notion dHypertexte Extension à internet par Tim Berners.
MySQL et PHP.
PHP mySQL Extension php_mysql. Connexion à une base de données Établir une connexion mysql_connect(string server, string username, string password) –permet.
TP 3-4 BD21.

Jérôme CUTRONA PHP et bases de données Jérôme CUTRONA 01:07:51 Programmation Web
LE LANGAGE SQL : LDD La création de tables L’ordre CREATE CREATE TABLE nom_de_table (Nom_colonne Type_colonne, Nom_colonne Type_colonne,
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Révision Avant lintra – Architecture de lordinateur, les composants, le fonctionnement, codage – Système dexploitation: organisation des données (fichier),
Common Gateway Interface
Le Téléphone Russe Le Téléphone Russe. Le Téléphone Russe Le Téléphone Russe.
Techniques Internet de Base Licence 2 (Info, Maths, PC/PA) Université Jean Monnet Ruggero G. PENSA
L’utilisation des bases de données
LES LANGAGES DE PROGRAMMATIONS JAVASCRIPTH.T.M.LP.H.PS.Q.L Reynald Maréchal DI045.
JDBC ou comment manipuler une base de données en Java ?
Les instructions PHP pour l'accès à une base de données MySql
L’utilisation des bases de données
Gestion des bases de données
Services fournis par le SI et technologies associées
1 PHP 1.Langage PHP 1.1. Types de base, variables et constantes 1.2. Opérateurs et expressions 1.3. Instructions 1.4. Fonctions 2.Accès aux bases de données:
MySQL Création des sites dynamiques
PhP-MySQL Pagora 2012/2013 CTD 1 - Presentation de moi ^^
Formulaires, CGI et PHP David Gross-Amblard (CNAM-Vertigo/Cédric) Transparents originaux : Philippe Rigaux Projet 3I
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
CPI/BTS 2 Programmation Web PHP et les Bases de données Prog Web CPI/BTS2 – M. Dravet – 11/03/2004 Dernière modification: 11/03/2004.
Introduction.
PHP & My SQL.
Jean-Michel ILIE - novembre SIL - module M12 Programmation Internet en PHP SIL module M12 Jean-Michel Ilié IUT Paris 5 - département informatique.
Programmation Internet en PHP SIL module M12
GROUPE BTS IRIS 2 Informatique et Réseaux pour l’industrie et les Services techniques E-6 PROJET INFORMATIQUE REVUE N°2      INTERROGATION DE LA BASE DE.
Chap 4.5 : SQL (LDD) LDD : Langage de définition de données Réfs : Manuel p105.
Présenté par COMTE Jeremy et DE LAZZARI Thomas Sommaire b Présentation générale b Include b Notion de variables b MySQL.
Comment stocke-t-on des données sur un site web ?
Cours n°4M2. ESCE (S. Sidhom) Séminaire ( 6-12 Février 2007 ) Promo. M2 ESCE-Tunis 2006/07 Conception d’un système d'information sur Internet Architecture.
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Bases de données Open Source Pierre Crépieux 13/03/2008.
0 Objectifs de la session n°1  Revenir sur toutes les bases théoriques nécessaires pour devenir un développeur Web,  Découvrir l’ensemble des langages.
Lyda tourisme Process en PHP. Objectif Il s’agit de construire un segment de process dans un système d’information touristique.
PHP & MySQL Master1 ICD Claire Jacquot Emilie Hot le 24/10/2006.
 Requêtes MySQL en PHP Introduction
PostgreSQL – Présentation
Gérer les rôles.
G.KEMBELLEC - UP81 Master 2 THYP Cas pratique d’utilisation De simpleXML Un lecteur de RSS Novembre 2009.
Module : Pages Web Dynamiques (Production Électronique Avancée)
 Formulaires HTML : traiter les entrées utilisateur
Master 1 SIGLIS Intégration des données dans l’entreprise Stéphane Tallard JDBC: Java Database Connectivity Master 1 SIGLIS1JDBC.
Centralisation des sites web d’ELTA & Mise en place d’un serveur NAS
Module 1 : Vue d'ensemble de Microsoft SQL Server
Initiation à Oracle Server
Cours n°4M1.ist-ie (S. Sidhom) UE 203 Promo. M1 IST-IE 2006/07 Conception d’un système d'information sur Internet Architecture trois-tiers : technologies.
Cours Access TuanLoc NGUYEN. Contact Nguyen TuanLoc Tél: Web:
CPI/BTS 2 Programmation Web Les sites dynamiques Prog Web CPI/BTS2 – M. Dravet – 02/10/2003 Dernière modification: 02/10/2003.
JDBC (Complément de cours) IFT 3030
Le langage SQL.
Séance /10/2004 SGBD - Approches & Principes.
Séminaire de rentrée cours de programmation web & Wordpress
Initiation aux bases de données et à la programmation événementielle
Cours n°2 Implémentation et exploitation
1 CEC A.-CHAVANNE Sites Web et bases de données. 2 UNE BASE DE DONNÉES : POURQUOI ? Manipulation de grandes quantités d’information – représentation des.
1 Les bases de données Séance 5 -- Le Langage de Définition de Données ou la manœuvre de la structure de la base -- Le Langage de Manœuvre de Données.
Transcription de la présentation:

Information personnelle... Mon groupe de projet, lundi prochain : pour l’instant, même salle (pc5, accès 17)

David Gross-Amblard (CNAM-Vertigo/Cédric) dgram@cnam.fr Web et bases de données David Gross-Amblard (CNAM-Vertigo/Cédric) dgram@cnam.fr Projet 3I 5.12.2001

Plan Une base de données, pourquoi Mysql Interconnexion avec Php : exemples Connexions multiples (odbc) Transparents et informations complémentaires sur : http://cortes.cnam.fr:8080/PROJET3I

Une base de données : pourquoi

Rôle d’une base de données Manipulation de grandes quantités d’information représentation des données de l’application interrogation des données (requêtes, langage) optimisation des requêtes Modelisation des données (méthode) Securité (pannes) Gestion de droits d’accès Accès multiples en simultané

Modèle relationnel Modèle le plus courant données = table Nom Prenom Email CB Gross David dgram@cnam.fr 33203343 John Jimmy truc@bidule.com 45443321 Onyme Anne onyme@chez.com 44543343 Typage des données requête : SQL (standard galactique)

MySQL : un sgbd à la mode

Qu'est-ce que MySQL ? C'est un SGBD relationnel Gratuit (www.mysql.com), sous la GNU GPL Disponible sous Windows et tous les Unix Propose le minimum vital (Presque) tout le langage SQL Stockage, indexation, optimisation Qualités reconnues (outre la gratuité): Simplicité Efficacité Robustesse

Quelques limites de MySQL Pas de transactions ! Inadapté pour les applications transactionnelles (finances, réservations) Ni commit, ni rollback, une reprise sur panne rudimentaire Pas de requêtes imbriquées Pas très grave !? Pas d'environnement de développement Pas de générateur d’écran ou de rapport, pas d'outil pour le DBA, etc. Juste une API en C !

Statut de MySQL à l'heure actuelle Très prisé pour les sites web Très bonne intégration avec Apache et PHP Tout est gratuit ! En fort développement Intégration des transactions ? Beaucoup de « contributions » extérieures API en C++, Perl, PHP, Java (JDBC) Des clients graphiques, des utilitaires En résumé, un moteur SQL, simple et efficace

Architecture de MySQL mysql Serveur mysqld phpMyAdmin utilisateur Connexion Serveur mysqld Connexion phpMyAdmin Connexion utilisateur mysqlimport var Connexion mysql mysqladmin Films

Le serveur mysqld Il est en écoute sur un port réseau (le 3306 par défaut) Il gère une ou plusieurs bases de données La base mysql est le «dictionnaire de données» Les autres bases sont des bases utilisateur Il dialogue avec ses clients en multi-threading (processus léger)

Les bases de données Une base = un répertoire ! Une table = 3 fichiers ! DATADIR (/mysql/var) mysql FILMS rigaux_p Film.MYD Film.MYI Film.frm Artiste.MYD Artiste.MYI Artiste.frm Données Index Structure

Le client mysql Permet de se connecter sous un nom d'utilisateur: mysql -u root -p Films -> se connecte sous root (MySQL) à la base Films, avec un mot de passe Permet d'entrer toutes les commandes (en fonction des droits d'accès bien sûr)

Les utilisateurs : puissant mais compliqué Un utilisateur MySQL est défini par son nom le nom (Internet) de sa machine Problèmes : 1: rigaux@cortes.fr, rigaux@cartier.fr ne sont pas les mêmes utilisateurs ! 2 : si le serveur tourne sous cortes, il faut utiliser le synonyme localhost ! 3 : on peut utiliser des '%' : %.cnam.fr désigne toutes les machines du CNAM

Les droits Un utilisateur peut avoir plusieurs types de droits: sur le serveur (administration) sur les bases et tables (création, destruction) sur les données (lecture, écriture) sur d'autres utilisateurs (transmission de droits) Le compte root est le DBA: il a tous les droits sur tout

Création d'utilisateurs : la commande GRANT Pour créer un utilisateur avec tous les droits sur la base Films: GRANT ALL ON Film.* TO admin@localhost IDENTIFIED BY 'mdpAdmin' Pour créer un utilisateur avec des droits en lecture sur la table Artiste: GRANT select ON Film.Artiste TO visiteur@localhost IDENTIFIED BY 'mdpVisiteur'

Création de bases et de tables On crée des bases sous root : % mysql -u root -p mysql> CREATE DATABASE Films; Tout utilisateur ayant des droits peut créer des tables dans une base: % mysql -u adminFilms -p Films mysql> CREATE TABLE Film (...); Les commandes SQL CREATE, ALTER, DROP sont reconnues

Types de données MySQL MySQL reconnaît les principaux types SQL2, et quelques autres: INTEGER : les entiers FLOAT : numériques flottants DECIMAL (M, D) : numériques exacts CHAR : chaînes de longueur fixe VARCHAR :chaînes de longueur variable TEXT : textes longs DATE : dates TIME : moments

Exemple de création de table CREATE TABLE Film (id INT NOT NULL AUTO_INCREMENT titre VARCHAR (50) NOT NULL, annee INTEGER NOT NULL, idMES INTEGER, resume TEXT, codePays VARCHAR (4), PRIMARY KEY (titre), FOREIGN KEY (idMES) REFERENCES Artiste, FOREIGN KEY (codePays) REFERENCES Pays);

Insertion dans une table mysql> CREATE TABLE MaTable -> (MaDonnee INTEGER NOT NULL, -> PRIMARY KEY (MaDonnee)); Query OK, 0 rows affected (0.02 sec) mysql> INSERT INTO MaTable (MaDonnee) VALUES (1); Query OK, 1 row affected (0.05 sec) Il vaut mieux placer toutes les commandes dans un fichier de script, MonF.sql mysql -u MonNom -p MaBase < MonF.sql

Exemple d'un fichier de script # Création d'une table 'FilmSimple' USE Films; CREATE TABLE FilmSimple (titre VARCHAR (30), annee INTEGER, nomMES VARCHAR (30), prenomMES VARCHAR (30), anneeNaiss INTEGER ) ;

MySQL en résumé Tout à fait conforme à la norme SQL ANSI CREATE TABLE, DROP TABLE, ALTER TABLE SELECT, INSERT, DELETE, UPDATE Avec des extensions (très utiles) Types de données (TEXT, BLOB) Contraintes (AUTO_INCREMENT) Beaucoup de fonctions

Programmation MySQL/PHP

Rappel : langage Php Du code inséré dans une page HTML Situé entre balises <?php et ?> Code executé par le serveur Résultat : une nouvelle page HTML

Rappel : langage Php <HTML> <BODY> <H1>Bienvenue ! </H1> Il est <?php echo date(‘h’); ?> h à ma montre. </BODY> </HTML>

Architecture avec base de données Requête CGI Navigateur Serveur web + PHP Document HTML Résultat Fichier HTML/PHP machine serveur

CGI/Bases de données Application avec MySQL/PHP Principe : création de documents web à partir d'une BD MySQL se charge du stockage, de la protection des données, de l'interface SQL PHP : extrait des données et les met en forme reçoit des données et les stocke Le navigateur fournit l'interface graphique Architecture à trois pôles, à la sauce Web

Architecture avec base de données Requête CGI Navigateur Serveur BD Serveur web + PHP SQL Document HTML Fichier HTML/PHP Base de données machine serveur

Connexion à MySQL avec un script PHP mysql_pconnect (serveur, nom, passe) établit une connexion si OK, renvoie un identifiant non nul cnx mysql_select_db(base, cnx) se place dans une base et renvoie vrai si OK mysql_query (requete, cnx) exécute une requête et renvoie un identifiant mysql_fetch_object (resultat) renvoie la ligne suivante sous forme d'objet

Programmation MySQL/PHP : premier exemple Connexion à la base MaBase (base de films) Affichage du titre, année et metteur en scene du film

Exemple : interrogation et affichage (1) <?php $connexion = mysql_pconnect ("localhost", "MonNom", "MonMDP"); if (!$connexion) { echo "Désolé, connexion impossible\n"; exit; } if (!mysql_select_db ("MaBase", $connexion)) echo "Désolé, accès à la base impossible\n";

Exemple : interrogation et affichage (2) $resultat = mysql_query ("SELECT * FROM FilmSimple", $connexion); if ($resultat) while ($film = mysql_fetch_object ($resultat)) echo "$film->titre, paru en $film->annee, réalisé " . "par $film->prenomMES $film->nomMES.<BR>\n"; else { echo "<B>Erreur dans l'exécution de la requête.</B><BR>"; echo "<B>Message :</B> " .mysql_error($connexion); }

Programmation MySQL/PHP : exemple avec formulaire

En association avec un formulaire (démo) <H1>Formulaire pour programme PHP</H1> <FORM ACTION='ExMyPHP2.php' METHOD=POST> <P> Titre : <INPUT TYPE=TEXT SIZE=20 NAME = 'titre'> <P> Année début : <INPUT TYPE=TEXT SIZE=4 NAME='anMin'> Année fin : <INPUT TYPE=TEXT SIZE=4 NAME='anMax'> <P> <B>Comment combiner ces critères. </B> ET <INPUT TYPE=RADIO NAME='comb' VALUE='ET'> OU <INPUT TYPE=RADIO NAME='comb' VALUE='OU'> ? <INPUT TYPE=SUBMIT VALUE='Rechercher'> </FORM>

On récupère donc les variables $titre, $anMin, $anMax, et $comb <?php echo "<B>Titre = $titre anMin = $anMin anMax= $anMax\n"; echo "Combinaison logique : $comb<P></B>\n"; if ($comb == 'ET') $requete = "SELECT * FROM FilmSimple " . "WHERE titre LIKE '$titre' " . "AND annee BETWEEN $anMin and $anMax"; else . "OR (annee BETWEEN $anMin and $anMax)";

Il reste à exécuter la requête <?php $connexion = mysql_pconnect (SERVEUR, NOM, PASSE); mysql_select_db (BASE, $connexion); $resultat = mysql_query ($requete, $connexion); while ( ($film = mysql_fetch_object ($resultat))) echo "$film->titre, paru en $film->annee, réalisé " . "par $film->prenomMES $film->nomMES.<BR>\n"; ?>

Programmation MySQL/PHP : mise à jour d’une base

Mises à jour de la base On utilise un formulaire de saisie, et on déclenche: Un ordre INSERT pour des insertions Un ordre UPDATE pour une modification Un ordre DELETE pour une destruction Dans tous les cas la fonction mysql_query permet d'exécuter l'ordre.

Exemple: mise à jour de la table FilmSimple (démo) <FORM ACTION="ExMyPHP3.php" METHOD=POST> Titre : <INPUT TYPE=TEXT SIZE=20 NAME="titre"><BR> Ann₫e : <INPUT TYPE=TEXT SIZE=4 NAME="annee"> <P> Nom : <INPUT TYPE=TEXT SIZE=20 NAME="prenom"> <BR> Pr₫nom : <INPUT TYPE=TEXT SIZE=20 NAME="nom"> <BR> Ann₫e : <INPUT TYPE=TEXT SIZE=4 NAME="anneeNaissance"> <H1>Votre choix</H1> <INPUT TYPE=SUBMIT VALUE='Ins₫rer' NAME='inserer' > <INPUT TYPE=SUBMIT VALUE='Modifier' NAME='modifier' > <INPUT TYPE=SUBMIT VALUE='D₫truire' NAME='detruire' > </FORM>

L'action dépend du bouton choisi par l'utilisateur // Test du type de mise à jour effectuée echo "<HR><H2>\n"; if (isset($inserer)) echo "Insertion du film $titre"; elseif (isset($modifier)) echo "Modification du film $titre"; elseif (isset($detruire)) echo "Destruction du film $titre"; echo "</H2><HR>\n"; // Affichage des données du formulaire echo "Titre: $titre <BR> annee: $annee<BR>\n"; echo "Mis en scène par $prenom $nom, né en $anneeNaiss\n";

Choix de la requête en fonction de l'action demandée if (isset($inserer)) $requete = "INSERT INTO FilmSimple (titre, annee, " . "prenomMES, nomMES, anneeNaiss) " . "VALUES ('$titre', $annee, " . "'$nom', '$prenom', $anneeNaiss) "; if (isset($modifier)) $requete = "UPDATE FilmSimple SET annee=$annee, " . "prenomMES = '$prenom', nomMES='$nom', " . "anneeNaiss=$anneeNaiss WHERE titre = '$titre' "; if (isset($detruire)) $requete = "DELETE FROM FilmSimple WHERE titre='$titre'"; $resultat = mysql_query ($requete, $connexion);

Programmation MySQL/PHP : requêtes sur la structure de la base

Informations sur le schéma Etant donné le résultat d'une requête : mysql_num_fields($res) donne le nombre d'attributs mysql_field_name($res, $i) donne le nom de l'attribut mysql_fetch_row ($res) renvoie une ligne du résultat sous la forme d'un tableau indicé.

Information sur le schéma Application : SQL dynamique. -> phpmyadmin http://cortes.cnam.fr:8080/phpMyAdmin exemple

Programmation MySQL/PHP : gestion de sessions Comment associer à un utilisateur web une grande quantité d’information

Problèmes Le serveur ne distingue pas les connexions succesives : comment identifier un utilisateur ? Comment faire pour que les données relatives à un utilisateur soit disponibles pour tous les scripts du site web ?

Identification de l ’utilisateur On utilise les cookies utilisateur saisit (login,password) le navigateur enregistre les cookies (login,password) chaque page du site teste l ’existence de ces cookies -> on connaît ainsi l’utilisateur

Données associées à l ’utilisateur On ne peut pas mettre toutes les données dans les cookies (taille, sécurité) -> base de données Solution : Identification de l ’utilisateur -> numero de session unique cookies (login,passwd,numero session)

Données associées à l ’utilisateur Login session limite donnée1 donnée2 … dgram 552 5mn rateau 3 truc 127 2mn pelle 1 … Chaque script retrouve les données associées grâce au numéro de session -> requête SQL Ajout/suppression d ’information

Connexions : - A plusieurs bases - A plusieurs SGBD Intégration de données Vitesse de connexion

Interroger plusieurs bases Mysql Serveur BD Navigateur Serveur web + PHP Serveur BD Fichier HTML/PHP Serveur BD machine serveur machines distantes

Plusieurs connexion php $connexion1 = mysql_pconnect (serveur1, nom1, pass1); mysql_select_db (base1, $connexion1); $connexion2 = mysql_pconnect (serveur2, nom2, pass2); mysql_select_db (base2, $connexion2); $resultat1 = mysql_query ($requete1, $connexion1); $resultat2 = mysql_query ($requete2, $connexion2); traitement($resultat1,$resultat2); ?>

Et si la base n’est pas Mysql ? Serveur BD Mysql Navigateur Serveur web + PHP Serveur BD Oracle Fichier HTML/PHP Serveur BD Postgres machine serveur machines distantes

Interface commune ODBC (Open Database Connectivity) Fonctions php valable pour tout SGBD odbc_connect(db,login,pass); odbc_exec(requete,connexion); odbc_fetch_row(connexion);

Descripteur (aperçu) <?php $connexion1 = odbc_connect (“mysql:localhost”,...); $connexion2 = odbc_connect (“oracle:db.fournisseur.fr”...); $connexion3 = odbc_connect (“postgres:128.176.212.3”,...); ?>

 Conclusion Mysql : sgbd libre, puissant, répandu Interconnexion avec Php : production de documents HTML à partir de requêtes SQL gestion des interactions avec l ’utilisateur (requêtes/données de formulaires) Odbc 