Td corrigé 1 Chapitre1 - Free pdf

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é