PHP 4° PARTIE : BASE DE DONNEES

Slides:



Advertisements
Présentations similaires
Transformation de documents XML
Advertisements

Vocabulaire pour la passage du modèle conceptuel des données au modèle relationnel des données. MCDMRD EntitéTable PropriétésChamps, attribut IdentifiantClé
51 Les technologies XML Cours 6 : XML et les architectures N-tiers – Tier Métier Janvier Version 1.0 -
Le publipostage La fonction de fusion permet de créer des documents identiques dans les grandes lignes que l’on personnalise automatiquement à chaque destinataires.
MySQL et PHP.
Design Pattern MVC En PHP5.
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.
Développement d’applications web
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Techniques Internet de Base Licence 2 (Info, Maths, PC/PA) Université Jean Monnet Ruggero G. PENSA
L’utilisation des bases de données
Rappel sur les bases de données et le vocabulaire
Le langage PHP 5.
Algorithmique et Programmation
Chap 4 Les bases de données et le modèle relationnel
JDBC ou comment manipuler une base de données en Java ?
Les instructions PHP pour l'accès à une base de données MySql
BERNARDIN Benoît Lycée Louis Pergaud
L’utilisation des bases de données
Manipulation de formulaires en Javascript
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Cours de Base de Données & Langage SQL
MySQL Création des sites dynamiques
Web dynamique PhP + MySQL AYARI Mejdi 2006
L3 Module Libre Année universitaire Initiation à la Bioinformatique Jean-Michel RICHER.
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
PHP 2° PARTIE : FONCTIONS ET FORMULAIRE
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.
PHP & My SQL.
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.
PHP 3° PARTIE : GESTION DE FICHIERS ET DE REPERTOIRES
Comment stocke-t-on des données sur un site web ?
PHP 5° PARTIE : LES COOKIES
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.
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
 Syntaxe du langage PHP
 Requêtes MySQL en PHP Introduction
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Application de gestion des retards
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
1 PHP 5 Notions fondamentales (cours #5) Formation continue – Cégep de Sainte-Foy.
Institut Supérieur d’Informatique
PHP 6° PARTIE : LES SESSIONS 1.Introduction 2.Identificateur de session 3.Variables de session 4.Client / Serveur 5.Principe 6.Ouverture de session 7.Enregistrement.
 Formulaires HTML : traiter les entrées utilisateur
Conception de Site Webs Interactifs Cours 7 Patrick Reuter
Initiation au web dynamique Licence Professionnelle.
 Le langage SQL Introduction SQL : Strutured Query Language, est un langage de requête, que l'on retrouve dans divers SGBDR (Access de Microsoft, MySQL,
Module 1 : Vue d'ensemble de Microsoft SQL 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.
Les vues Une vue: c’est une relation virtuelle. Définie par:
06/04/06 LES BASES DE DONNEES INTRODUCTION CogniTIC – Bruxelles Formation - Cepegra.
Comprendre le SGBDR Microsoft Access – partie 2
LES BASES DE DONNEES PRÉSENTÉ PAR CATHY ET THIBAULT.
Séance /10/2004 SGBD - Approches & Principes.
Gestion des documents internes avec SQL Server 2005 Date de publication : janvier 2006.
Initiation aux bases de données et à la programmation événementielle
INTRODUCTION AUX BASES DE DONNEES Base et métabase
Cours n°2 Implémentation et exploitation
Introduction Module 1.
Scénario Les scénarios permettent de modifier la position, taille … des calques au cours du temps. Son fonctionnement est très proche de celui de Macromedia.
Analyse, élaboration et exploitation d’une Base de Données
De Arnault Chazareix :
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.
FACTORY systemes Module 2 Section 1 Page 2-3 Installation d’Industrial SQL FORMATION InSQL 7.0.
APP-TSWD Apprentissage Par Problèmes Techniques des Sites Web Dynamiques Licence Professionnelle FNEPI Valérie Bellynck, Benjamin Brichet-Billet, Mazen.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 4 Support de cours rédigé par Bernard COFFIN Université.
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:

PHP 4° PARTIE : BASE DE DONNEES Introduction Présentation de MySQL Principe Connexion Interrogation Extraction des données Fonctions de services Traitement des erreurs 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.

SGBDR = Système de Gestion de Base de Données Relationnelle 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 Programmez! Linux Magazine 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)) {

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 $result = mysql_query("SELECT * FROM artistes"); // ajouter le if

9 . Travaux pratiques Créer la table revues comportant les 2 champs décris dans le cours. Insérer quelques enregistrements. 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. 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. 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. 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 …