1 Chapitre1 - Free
Les trois actions de correction possibles sont la proportionnelle P, l'intégrale I et
la dérivée D. Le ... 6.2 Régulateur tout ou rien à comparateur ou trigger. C'est la ...
part of the document
avec affichage dynamique des colonnes PAGEREF _Toc253641295 \h 11
HYPERLINK \l "_Toc253641296" 1.4 Jointures PAGEREF _Toc253641296 \h 13
HYPERLINK \l "_Toc253641297" 1.4.1 Equi-jointure PAGEREF _Toc253641297 \h 13
HYPERLINK \l "_Toc253641298" 1.4.2 Jointure externe à gauche PAGEREF _Toc253641298 \h 14
HYPERLINK \l "_Toc253641299" 1.4.3 Jointure externe à droite PAGEREF _Toc253641299 \h 14
HYPERLINK \l "_Toc253641300" 1.4.4 Jointure multi-bases PAGEREF _Toc253641300 \h 14
HYPERLINK \l "_Toc253641301" 1.4.5 Affichage d'une jointure dans une table HTML PAGEREF _Toc253641301 \h 15
HYPERLINK \l "_Toc253641302" Chapitre 2 GESTION DES ERREURS MYSQL PAGEREF _Toc253641302 \h 19
HYPERLINK \l "_Toc253641303" 2.1 Prémisses PAGEREF _Toc253641303 \h 20
HYPERLINK \l "_Toc253641304" 2.2 Codage PAGEREF _Toc253641304 \h 20
HYPERLINK \l "_Toc253641305" 2.3 Gestion personnaliséé des erreurs PAGEREF _Toc253641305 \h 22
HYPERLINK \l "_Toc253641306" Chapitre 3 MISES A JOUR DE LA BD PAGEREF _Toc253641306 \h 24
HYPERLINK \l "_Toc253641307" 3.1 Généralités sur les mises à jour PAGEREF _Toc253641307 \h 24
HYPERLINK \l "_Toc253641308" 3.2 Insertion d'une nouvelle ville (Dynamique et Self) PAGEREF _Toc253641308 \h 25
HYPERLINK \l "_Toc253641309" 3.3 Inclusion des fonctions de connexion PAGEREF _Toc253641309 \h 28
HYPERLINK \l "_Toc253641310" 3.4 Suppression d'une ville (Dynamique et Self) PAGEREF _Toc253641310 \h 30
HYPERLINK \l "_Toc253641311" 3.5 Gestion des transactions PAGEREF _Toc253641311 \h 31
HYPERLINK \l "_Toc253641312" Chapitre 4 LES TABLES ET LES LISTES PAGEREF _Toc253641312 \h 33
HYPERLINK \l "_Toc253641313" 4.1 Afficher une table dans une liste PAGEREF _Toc253641313 \h 33
HYPERLINK \l "_Toc253641314" 4.2 Affichage générique d'une table dans une liste PAGEREF _Toc253641314 \h 34
HYPERLINK \l "_Toc253641315" 4.3 Saisie d'un client avec une liste déroulante pour les cp (Version 1) PAGEREF _Toc253641315 \h 37
HYPERLINK \l "_Toc253641316" 4.4 Saisie d'un client avec une liste déroulante pour les cp (Version 2) PAGEREF _Toc253641316 \h 39
HYPERLINK \l "_Toc253641317" Chapitre 5 AUTHENTIFICATION PAGEREF _Toc253641317 \h 43
HYPERLINK \l "_Toc253641318" 5.1 L'inscription PAGEREF _Toc253641318 \h 44
HYPERLINK \l "_Toc253641319" 5.2 Boîte de connexion PAGEREF _Toc253641319 \h 45
HYPERLINK \l "_Toc253641320" 5.3 Déconnexion PAGEREF _Toc253641320 \h 46
HYPERLINK \l "_Toc253641321" 5.4 Restriction de page PAGEREF _Toc253641321 \h 47
HYPERLINK \l "_Toc253641322" Chapitre 6 GESTION DES DATES PAGEREF _Toc253641322 \h 48
HYPERLINK \l "_Toc253641323" 6.1 Fonctions MySQL PAGEREF _Toc253641323 \h 48
HYPERLINK \l "_Toc253641324" 6.2 Fonctions PHP PAGEREF _Toc253641324 \h 48
HYPERLINK \l "_Toc253641325" 6.3 Scripts d'insertion PAGEREF _Toc253641325 \h 49
HYPERLINK \l "_Toc253641326" 6.3.1 Script d'insertion de dates avec des fonctions MySQL PAGEREF _Toc253641326 \h 49
HYPERLINK \l "_Toc253641327" 6.3.2 Script d'insertion de dates avec des fonctions PHP PAGEREF _Toc253641327 \h 50
HYPERLINK \l "_Toc253641328" 6.4 Scripts de visualisation avec des fonctions date de MySQL PAGEREF _Toc253641328 \h 51
HYPERLINK \l "_Toc253641329" Chapitre 7 TRAITEMENTS GENERIQUES PAGEREF _Toc253641329 \h 52
HYPERLINK \l "_Toc253641330" 7.1 Affichage d'une table sur plusieurs pages PAGEREF _Toc253641330 \h 52
HYPERLINK \l "_Toc253641331" 7.1.1 Création de la table PAGEREF _Toc253641331 \h 52
HYPERLINK \l "_Toc253641332" 7.1.2 Visualisation de la table sur plusieurs pages PAGEREF _Toc253641332 \h 53
HYPERLINK \l "_Toc253641333" 7.2 Visualisation générique PAGEREF _Toc253641333 \h 55
HYPERLINK \l "_Toc253641334" 7.3 Insertion générique (La metabase) PAGEREF _Toc253641334 \h 58
HYPERLINK \l "_Toc253641335" Chapitre 8 MULTICRITERES PAGEREF _Toc253641335 \h 64
HYPERLINK \l "_Toc253641336" 8.1 Objectif : faire des recherches multi-critères PAGEREF _Toc253641336 \h 64
HYPERLINK \l "_Toc253641337" 8.1.1 Ecrans PAGEREF _Toc253641337 \h 65
HYPERLINK \l "_Toc253641338" 8.1.2 Script PAGEREF _Toc253641338 \h 66
HYPERLINK \l "_Toc253641339" Chapitre 9 PROCEDURES ET FONCTIONS STOCKEES MySQL PAGEREF _Toc253641339 \h 68
HYPERLINK \l "_Toc253641340" 9.1 Introduction PAGEREF _Toc253641340 \h 68
HYPERLINK \l "_Toc253641341" 9.1.1 Principes PAGEREF _Toc253641341 \h 68
HYPERLINK \l "_Toc253641342" 9.1.2 Syntaxe de base PAGEREF _Toc253641342 \h 68
HYPERLINK \l "_Toc253641343" 9.1.3 La gestion des jeux de caractères PAGEREF _Toc253641343 \h 69
HYPERLINK \l "_Toc253641344" 9.2 Exemples de procédures stockées MYSQL PAGEREF _Toc253641344 \h 71
HYPERLINK \l "_Toc253641345" 9.2.1 Insertion d'une ville PAGEREF _Toc253641345 \h 71
HYPERLINK \l "_Toc253641346" 9.2.2 Suppression d'une ville PAGEREF _Toc253641346 \h 73
HYPERLINK \l "_Toc253641347" 9.3 Procédure stockée qui renvoie un SELECT PAGEREF _Toc253641347 \h 74
HYPERLINK \l "_Toc253641348" 9.4 Procédures stockées avec un argument OUT PAGEREF _Toc253641348 \h 75
HYPERLINK \l "_Toc253641349" 9.5 Fonctions stockées PAGEREF _Toc253641349 \h 76
HYPERLINK \l "_Toc253641350" 9.5.1 Fonction stockée technique : une addition de 2 nombres PAGEREF _Toc253641350 \h 77
HYPERLINK \l "_Toc253641351" 9.5.2 Fonction stockée en relation avec une table PAGEREF _Toc253641351 \h 79
HYPERLINK \l "_Toc253641352" 9.6 Une procédure qui gère un curseur PAGEREF _Toc253641352 \h 80
HYPERLINK \l "_Toc253641353" Chapitre 10 ANNEXES PAGEREF _Toc253641353 \h 81
HYPERLINK \l "_Toc253641354" 10.1 BD et CharSet PAGEREF _Toc253641354 \h 81
HYPERLINK \l "_Toc253641355" 10.1.1 Les tables PAGEREF _Toc253641355 \h 82
HYPERLINK \l "_Toc253641356" 10.1.2 Le SELECT PAGEREF _Toc253641356 \h 83
HYPERLINK \l "_Toc253641357" 10.1.3 Le DELETE PAGEREF _Toc253641357 \h 84
HYPERLINK \l "_Toc253641358" 10.1.4 Les INSERTS PAGEREF _Toc253641358 \h 85
HYPERLINK \l "_Toc253641359" 10.1.5 Insertion à partir d'un fichier PAGEREF _Toc253641359 \h 87
HYPERLINK \l "_Toc253641360" 10.2 Tableau des fonctions mysql_ PAGEREF _Toc253641360 \h 88
HYPERLINK \l "_Toc253641361" 10.3 Jointures multi-bases PAGEREF _Toc253641361 \h 89
HYPERLINK \l "_Toc253641362" 10.4 mysql_insert_id et transactions PAGEREF _Toc253641362 \h 90
HYPERLINK \l "_Toc253641363" 10.5 Un petit moteur de recheche PAGEREF _Toc253641363 \h 93
HYPERLINK \l "_Toc253641364" 10.6 Un forum PAGEREF _Toc253641364 \h 95
HYPERLINK \l "_Toc253641365" 10.7 BD 2 CSV PAGEREF _Toc253641365 \h 96
HYPERLINK \l "_Toc253641366" 10.8 BD Création des tables PAGEREF _Toc253641366 \h 97
HYPERLINK \l "_Toc253641367" 10.9 BD Ajout des enregistrements PAGEREF _Toc253641367 \h 100
ACCES BD
CF AUSSI LE SUPPORT php_bd_supplements.doc
Rappel sur les BDR
Un SGBDR
Un SGBDR est un Système de Gestion de Bases de Données Relationnelles.
Un système de Gestion est un ensemble de machines et de logiciels de gestion d'objets (Textes, feuilles de calcul, Images, Tables,
)
Une base de données est un ensemble de tables reliées entre elles pour représenter le système d'informations d'une organisation.
Une table est un rectangle composé de colonnes et de lignes permettant de stocker des données structurées homogènes représentant un "objet" du monde réel.
Les colonnes sont les champs.
Les lignes des enregistrements. Les enregistrements doivent être uniques.
L'unicité est garantie par la clé primaire de la table. Une clé primaire est composée d'un champ ou de plusieurs.
Une clé étrangère est un champ d'une table qui correspondant à une clé primaire dans une autre table. Elle permet de relier les tables entre elles et de garantir l'intégrité référentielle.
Avec MySQL le moteur de tables MyISAM ne permet pas de créer des clés étrangères. Le moteur de tables InnoDB permet de créer des clés étrangères. De plus le moteur InnoDB gère les transactions.
SQL
SQL (Structured Query Language) est un langage prédicatif qui permet de définir des objets, de manipuler les données d'une base de données. C'est l'implémentation de l'algèbre relationnelle.
Quatre actions fondamentales (CRUD : Create, Read, Update, Delete) sont exercées sur les données :
L'insertion,
L'extraction,
La modification,
La suppression.
Quatre instructions du LMD (Langage de Manipulation de Données) correspondent à ces actions : INSERT, SELECT, UPDATE, DELETE.
Syntaxes de base de ces instructions. (Se référer au cours SQL).
SELECT col1, col2,
FROM nom_de_table [ WHERE col1 = v1
]
INSERT INTO nom_de_table(col1, col2,
) VALUES (v1, v2,
)
DELETE FROM nom_de_table [WHERE col1=v1
]
UPDATE nom_de_table SET col2=v2 [, col3=v3] [WHERE col1=v1]
A côté du LMD il existe le LDD (Langage de Définition de Données) qui permet de gérer des objets de données. Ce langage permet de créer des objets (Table, Index, User,
).
Il possède trois instructions : CREATE (pour créer) , ALTER (pour modifier) et DROP (pour supprimer).
Syntaxes de base :
CREATE TABLE villes(cp char(5), nom_ville varchar(50));
ALTER TABLE villes ADD PRIMARY KEY ('cp');
DROP TABLE villes;
Le LCD (Langage de Contrôle de Données) permet de contrôler des accès aux objets.
Il comprend au moins deux instructions pour donner des droits (GRANT) et pour les retirer (REVOKE).
Syntaxes de base :
GRANT SELECT ON villes TO invite;
REVOKE SELECT ON villes FROM invite;
Principaux objets et principales actions d'une base de données
Les principaux objets sont les suivants :
Serveur,
Base de Données,
Tables,
Requêtes,
Curseur,
Champs,
Procédures stockées et fonctions stockées,
Triggers.
Les principales actions sont des suivantes :
Connexion au serveur,
Déconnexion du serveur,
Sélection de la Base de Données,
Ouverture d'un curseur,
Parcours d'un curseur,
Fermeture d'un curseur,
Exécution d'une requête de mise à jour,
Exécution d'une procédure stockée.
NB : il est possible aussi via PHP de réaliser des actions de DDL (Data Definition Language) telles que la création et/ou la suppression de tables, d'index, de users,
mais l'objet de ce support est principalement de faire du LMD (Data Manipulation Language).
PHP et les bases de données
A la différence de nombreux autres produits servant de frontal à une base de données les rédacteurs de PHP ont choisi d'avoir une syntaxe (et donc une bibliothèque) propre à chaque fournisseur. Ce choix optimise l'accès mais pénalise la maintenance (en cas de changement de cible).
Il existe un accès standard avec ODBC ainsi qu'un accès via les couches d'abstraction des bibliothèques PEAR ou PDO (cf cours perfectionnement).
PHP possède des bibliothèques pour MYSQL, ODBC, Oracle, DB2, Sybase, POSTGRES, SQL-SERVER,
.
Dans ce support nous utiliserons la bibliothèque MYSQL.
La BD utilisée : son schéma
EMBED MSPhotoEd.3
Script de création des tables
Cf annexes
Scripts d'insertion de données
Cf annexes
LECTURE D'UNE TABLE MySQL
Objectif
Lire et afficher quelques champs de la table Villes.
Ecran
Instructions utilisées
SyntaxeFonctionnalitéLien = mysql_connect(hote , ut , mot de passe)Se connecter à un serveur de bases de données. Renvoie l'identifiant de connexion ou False en cas d'erreur.booléen = mysql_select_db(nom de la BD[ , lien])Sélectionner une base de données. Renvoie False en cas d'erreur.Curseur = mysql_query(requete[ , lien]) Exécuter une requête qui renvoie un curseur ou False en cas d'erreur.Enr = mysql_fetch_row(curseur)Récupérer une ligne, un enregistrement sous forme de tableau ordinal. Renvoie False s'il n'y a plus de lignes.Booléen = mysql_free_result(curseur)Fermer un curseurBooléen = mysql_close([lien])Fermer la connexionInt = mysql_num_rows([lien])Renvoie le nombre d'enregistrements du curseur.Array = mysql_fetch_array ( curseur [,type de résultat] )Récupérer une ligne, un enregistrement sous forme de tableau ordinal ou de tableau associatif. Renvoie False s'il n'y a plus de lignes.
Les constantes sont MYSQL_ASSOC, MYSQL_NUM, et la valeur par défaut est MYSQL_BOTH.Array = mysql_fetch_assoc (curseur)Récupérer une ligne, un enregistrement sous forme de tableau associatif. Renvoie False s'il n'y a plus de lignes.
Script
Commentaires
Les principales étapes du script
Connexion au serveur (1),
Connexion à la base de données (2),
Préparation et exécution de la requête (3),
Boucle sur les enregistrements du curseur et extraction des enregistrements (4),
Affichage des valeurs des champs (5),
Fermeture du curseur (6),
Déconnexion de la base (7).
$enr $enr $curseur
$lien
Le même avec affichage dynamique des colonnes
Objectif
Démarche
Le script est quasiment le même.
On boucle sur les colonnes grâce à une boucle ForEach sur l'enregistrement à l'intérieur de la boucle sur le curseur.
Script
Exercice
Affichez les données de la table Villes avec un lien vers le site de chaque ville et la photo de la ville.
EMBED MSPhotoEd.3
Corrigé