La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Programmation Internet en PHP SIL module M12

Présentations similaires


Présentation au sujet: "Programmation Internet en PHP SIL module M12"— Transcription de la présentation:

1 Programmation Internet en PHP SIL module M12
Jean-Michel Ilié IUT Paris 5 - département informatique Partie II : Accès aux SGBD – cas de MYSQL

2 PLAN du cours Introduction : composants additionnelles aux langages
(dont gestionnaires de bases de données) interface MYSQL

3 Composants de services associés à l'interpréteur PHP
Extensions pour le langage, de type bibliothèque Intégré (dans le cœur du langage) : MYSQL (SGBD), DOM (XML), COM et DOT NET, NuSOAP, … Externe (type bibliothèque) DLL (Windows), SO (Unix) Extensions spécialisées (php_....dll) Création de ses propres composants. Chargement des composants Chargement dynamique à l’initialisation du serveur fichier de configuration voir PHP.ini dans le dossier apache. Chargement par défaut : exemple MYSQLI Chargement/déchargement dynamique à l’exécution (php sous Unix) Test de chargement des composants fonction du langage if (extension_loaded(‘mysqli’)) …

4 Quelques exemples de composants additionnels
extension=php_mysqli.dll MYSQL optimisé ;extension=php_dba.dll BD type fichier ;extension=php_oracle.dll ORACLE (prévoir le client Oracle) ;extension=php_ldap.dll Interface LDAP identification ;extension=php_mcrypt.dll CRYPTAGE ;extension=php_snmp.dll Interface MAIL ;extension=php_sockets.dll Gestion de Sockets ;extension=php_w32api.dll Interface API WINDOWS (fenêtres …) ;extension=php_xmlrpc.dll Compléments XML ;extension=php_xsl.dll ;extension=php_zip.dll Accès aux fichier Zippés A ajouter ou à dé-commenter ( ; ) dans le fichier de configuration php.ni

5 Serveur MYSQL de bases de données
MYSQL : serveur de base de données RELATIONNELLES Connection sécurisée nom, mot-de-passe, postes d’accès (% tout poste, localhost : le serveur courant seul) Sélection de base de données Fonction de requêtes SQL (éventuellement imbriquées) Fonctions ou requêtes SQL de gestion de la structure Gestion de bases de données avancées Contraintes d’intégrité, procédure stockées, trigger, … Compatibilité PL/SQL MSQLI : version MYSQL évoluée Logiciel libre comme PHP (cission avec les concepteurs de MYSQL) Syntaxe orientée objet Performance

6 Serveur MYSQL de bases de données (2)
Pour des questions d'économie de liaison, le serveur gère toutes les données y compris les tables de résultats Serveur de bases de données base administrateur table des bases existantes, tables des sites pouvant se connecter au serveur tables des utilisateurs (dont root) et droits d'accès bases de données utilisateurs tables temporaires de résultats bd admin (mysql) bds utilisateur temporaire Le résultat d'une requête est souvent un entier qualifiant le résultat : une référence sur une table temporaire ou 0 si échec Des requêtes sont nécessaires pour obtenir les valeurs

7 Connexion à une base de données MySQL
connexion = création d'un espace temporaire dans MySql (tables résultats) connect() Connection contextuelle à une page PHP pconnect() Connexion permanente (le même espace est réutilisé pour les pconnect des pages suivantes) Les connexions permanentes sont réservées aux accès multiples rapprochés Il faut penser à se déconnecter le plus rapidement possible.

8 Connexion à une base de données MySQL
MYSQL * mysql_connect ($hostName, $userName, $password); //connexion temporaire // validité maximum : 1a page courante MYSQL * mysql_pconnect ($hostName, $userName, $password); //connexion permanente paramètres URL de la machine hôte ($hostName = adresseweb [:port [:socketEcouteSiUnix]]) nom utilisateur mot de passe retourne une référence pour la connexion ou 0 (type MYSQL*)

9 Exemple de connexion MySQL
<?php $serveur="localhost"; $utilisateur="php"; $passe="php"; if (!($link = mysql_connect($serveur, $utilisateur, $passe))) {echo "erreur de connexion à $Serveur"; exit();} else {echo "base exploitable sous la référence $link"} ?>

10 Accès à une des bases de données
définition de base de données courante pour une connexion mysql_select_db ($baseName [, $link]); //selection d'une base de données existante //après connexion paramètres nom de la base référence de connexion (par défaut : la dernière connectée) retourne une référence sur la base ou 0

11 Requêtes SQL paramètres Notion de ligne courante
MYSQL * mysql_query ($query [, $link]); Notion de ligne courante dans une table résultat paramètres chaîne SQL de la requête (CREATE, SELECT, DELETE …) référence de connexion (optionnel) retourne une référence sur une table- résultat ou renvoie (la référence sert de pointeur de ligne courante) $nb = mysql_num_rows (MYSQL *); //nombre de lignes dans la table résultat $nb = mysql_num_fields (MYSQL *); //nombre de colonnes dans la table résultat $enregT = mysql_fetch_array (MYSQL *); // rend un tableau associatif contenant la ligne courante // puis incrémente le pointeur de ligne $enregO = mysql_fetch_object ($res); //idem mais rend un objet Accès par $enregO->nomChps au lieu de l'accès indicé $enregT['nomChps']

12 Exemple de requête SQL Requête de sélection
Table Personnes Requête de sélection (après connexion et sélection de base) ID (PRIMARY KEY) NOM VILLE <?php $nomTable="Personnes"; $rech = "SELECT * from $nomTable WHERE NOM like '%$_GET['nom']%'"; if (!($res =mysql_query($rech, $link))) {exit(); } while ($enregT = mysql_fetch_array($res)) { echo "$enregT['NOM'], $enregT[' '], $enregT['VILLE']";} //while ($enreg = mysql_fetch_object($res)) { // echo "$enreg->NOM, $enreg-> , $enreg->VILLE";} ?>

13 Rappel : autres requêtes classiques CREATE, SELECT, DELETE
Table Personnes ID(PRIMARY KEY)(automatic incrementation) NOM VILLE A utiliser dans une requête msql_query <?php //... $nouvelleTab = "CREATE TABLE $tableName (NOM CHAR(255), CHAR(255), VILLE CHAR(255), ID INT PRIMARY KEY AUTO_INCREMENT)"; $modif = "UPDATE $tableName SET ='$mail', VILLE='$ville', NOM=$nom" WHERE ID=$id" ; $suppr = "DELETE FRom tableName WHERE ID=$id" ; ?>

14 Gestion des contraintes d’intégrité
Table Personnes Table Documents ID(PRIMARY KEY) NOM VILLE NOM_DOC THEME DESC URL POSTEUR Exple à utiliser dans une requête msql_query <?php $nouvelleTab = 'ALTER TABLE Documents ADD CONSTRAINTS Fk_DocPost FOREIGN KEY (Posteur) REFERENCES Personnes( ) '; ?> !! Choisir des tables de types INNODB pour permettre les clés étrangères

15 Libération des ressources
La libération des ressources est à faire dès que possible --> le site web n'a pas qu'un client !!! void mysql_free_result ($res); //libère la table temporaire référencée par $res void mysql_close ($link); //ferme une connexion au serveur impérativement

16 Informations sur la structure des bases
$refListeB = mysql_list_dbs ($link, $expr); //liste de bases existantes $refListeT = mysql_list_tables ($link, $expr); //liste de tables dans la base courante $refListeC = mysql_list_fields ($link, $nomTable, $expr); // liste des champs // de la table $nomTable Paramètres : $link : identifiant de connexion (optionnel) $expr : expression régulière permettant une selection partielle (non documenté et optionnel) retourne une référence sur la table temporaire créée Puis accès standard aux données via la table aux données $nb = mysql_num_rows ($refListeB); //nb de lignes de la table = nb de base

17 Informations d'erreurs sur requêtes
mysql_errno ([$link]); //numéro de l'erreur mysql_error ([$link]); //texte de l'erreur exit avec msg <?php $requete = mysql_query ($sql_req, db_link) or die (mysql_error()); ?> <?php $link = mysql_connect($hostName, $userName, $password); if (!($listOfDbs = mysql_list_dbs($link))) {printf("erreur:%d %s", mysql_errno($link), mysql_error($link))); exit();} ?>

18 Exercices Connaissance d'un environnement de gestion MySQL
Accès PHP à la structure d'une base Script PHP de création automatique d'une base Conception d’une interface d’interrogation en PHP.

19 Application Gestion d'un carnet d'adresse
Table carnetAdresse (base PHP) ID (PRIMARY KEY) NOM CIVILITE VILLE DESCRIPTION TELEPHONE $creat = "CREATE TABLE $tab ( `ID` INT AUTO_INCREMENT , `NOM` VARCHAR(255) NOT NULL, `CIVILITE` ENUM(`Mr`, `Mme`, `Melle`) DEFAULT `Mr`, ` ` VARCHAR(255), `VILLE` VARCHAR(255), `DESCRIPTION` VARCHAR(255), `TELEPHONE` VARCHAR(255), PRIMARY KEY(`ID`)) ENGINE=InnoDB DEFAULT CHARSET=latin1"; Actions sur la table Ajouter un enregistrement Rechercher un enregistrement modifier Détruire


Télécharger ppt "Programmation Internet en PHP SIL module M12"

Présentations similaires


Annonces Google