Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX...

45
DREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP - MySQL sous Dreamweaver MX I. INTRODUCTION 4 II. PHP - MYSQL 5 III. CONFIGURATION 6 IV. CREATION D’UNE BASE DE DONNEES MYSQL 11 V. CONNEXION A LA BASE DE DONNEES 15 VI. CREATION D'UNE PAGE AFFICHANT LES DONNEES D'UNE BASE MYSQL 16 VII. AJOUT DE DONNEES DANS UNE BASE MYSQL 19 VIII. SUPPRESSION DE DONNEES DE LA BASE MYSQL 21 IX. MODIFICATION DE DONNEES DE LA BASE MYSQL 23 X. RECHERCHE DE DONNEES DANS LA BASE MYSQL 27 XI. INSERTION D'OBJETS DYNAMIQUES DANS LA PAGE 29 XII. PAGE D'INFORMATIONS DETAILLEES 31 XIII. LIMITER L'ACCES AUX PAGES DU SITE 34 XIV. VARIABLES DE SESSION 37 XV. INSERTION DE SCRIPT PHP 38 ANNEXE I 40 ANNEXE II 45 AFCI-NEWSOFT 3

Transcript of Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX...

Page 1: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

Support de cours Création de sites dynamiques

PHP - MySQL sous Dreamweaver MX

I. INTRODUCTION 4

II. PHP - MYSQL 5

III. CONFIGURATION 6

IV. CREATION D’UNE BASE DE DONNEES MYSQL 11

V. CONNEXION A LA BASE DE DONNEES 15

VI. CREATION D'UNE PAGE AFFICHANT LES DONNEES D'UNE BASE MYSQL 16

VII. AJOUT DE DONNEES DANS UNE BASE MYSQL 19

VIII. SUPPRESSION DE DONNEES DE LA BASE MYSQL 21

IX. MODIFICATION DE DONNEES DE LA BASE MYSQL 23

X. RECHERCHE DE DONNEES DANS LA BASE MYSQL 27

XI. INSERTION D'OBJETS DYNAMIQUES DANS LA PAGE 29

XII. PAGE D'INFORMATIONS DETAILLEES 31

XIII. LIMITER L'ACCES AUX PAGES DU SITE 34

XIV. VARIABLES DE SESSION 37

XV. INSERTION DE SCRIPT PHP 38

ANNEXE I 40

ANNEXE II 45

AFCI-NEWSOFT 3

Page 2: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

I. Introduction

Macromedia Dreamweaver MX constitue un environnement professionnel destiné à la création d'applications web. Une application web est un ensemble de pages interagissant les unes avec les autres, ainsi qu'avec les différentes ressources d'un serveur web, notamment les bases de données (sites dynamiques).

Dreamweaver MX offre le choix de piloter des bases de données de provenances diverses. Dreamweaver MX propose plusieurs langages pour interagir sur ces bases de données et sur les comportements de serveur.

La solution retenue pour ce cours, outre l'utilisation de Dreamweaver MX sous Windows, est la combinaison PHP et MySQL

Une connaissance de la gestion des bases de données (par exemple avec MS Access) et de la conception de sites "statiques" (par exemple sous Dreamweaver) est indispensable pour assimiler toutes les leçons. Des notions de SQL seraient bienvenues

4 AFCI-NEWSOFT

Page 3: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

II. PHP et MySQL

a) PHP

PHP (officiellement, ce sigle est un acronyme récursif pour "PHP: Hypertext Preprocessor") est un langage de scripts généraliste, Open Source, spécialement conçu pour le développement d'applications web

PHP est un langage de programmation qui s'intègre dans vos pages HTML. Il permet entre autres de rendre automatiques des tâches répétitives, notamment grâce à la communication avec une base de données (utilisation la plus courante de PHP)

Techniquement, PHP tient la comparaison avec ses concurrents : ASP, ColdFusion, Perl ou Java Server Pages. Il n'y a plus de doutes sur le fait que PHP est devenu un standard du développement web. Très rapidement, on s'est aperçu aussi que PHP pourrait servir à autre chose que le web. C'est maintenant une réalité avec la sortie d'une version PHP-GTK, qui permet d'écrire des applications autonomes sous Unix ou Windows.

b) MySQL

MySQL est un système de gestion de Bases de Données (SGBD) fonctionnant sous Linux et Windows. Il est très souvent utilisé avec PHP afin de créer un site entièrement dynamique et une mise à jour simplifiée.

On retiendra que MySQL est devenu très populaire ces derniers temps. Relativement simple à prendre en main, il est déployé chez la plupart des hébergeurs (free ou pro) et répond parfaitement à des problématiques simples. A ce titre, il est parfaitement adapté pour gérer le stockage et la mise en ligne de contenu (informations, etc.).

PHP est maintenant clairement un outil de premier plan, et on ne compte plus les articles et les analyses qui présentent le trio Apache - PHP - MySQL comme la nouvelle formule gagnante du web. Après un succès immédiat dans la communauté Linux et Open Source, PHP s'est imposé dans le monde du business et de l'internet professionnel.

AFCI-NEWSOFT 5

Page 4: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

III. Configuration

Les hébergeurs de sites dynamiques PHP / MySql sont nombreux. Les prestations et les coûts sont variés. Chacun peut trouver l'hébergeur qui lui convient, du "free" au "pro".

Pour tester le site développé en local à l'aide de Dreamweaver MX, on a besoin d'installer un serveur web, PHP et MySQL.

Easyphp installe et configure automatiquement un environnement de travail complet permettant de mettre en oeuvre toute la puissance et la souplesse qu'offrent le langage dynamique PHP et son support efficace des bases de données. Easyphp regroupe un serveur Apache, une base de donnée MySQL, le langage PHP ainsi que des outils facilitant le développement de vos sites ou de vos applications

a) Extension PHP pour Dreamweaver MX

Dreamweaver MX intègre depuis peu la technologie de serveur PHP / MySQL. Cependant cette technologie n'est pas intégrée totalement. En effet plusieurs comportements de serveur ne sont pas développés par Macromédia.

Pour compenser cette lacune il existe des extensions, dont "Phakt" une extension offerte au téléchargement sur le site www.interakt.ro.

Installation de Phakt:

• Télécharger l'extension Phakt sur le site www.interakt.ro (choisir la dernière version stabilisée)

• Extraire les fichiers de l'archive téléchargée

• Suivre la procédure d'installation

• Recharger Dreamweaver MX

Petite remarque : cette extension est en anglais

6 AFCI-NEWSOFT

Page 5: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

b) Easyphp

Installation de Easyphp :

• Télécharger Easyphp sur le site www.easyphp.org

• Double cliquer sur l'exécutable téléchargé

• Sélectionner le répertoire d'installation et suivre la procédure

Lancement de Easyphp :

On ne peut pas réellement parler du lancement d' Easyphp, il s'agit en fait de la mise en route du serveur Apache et de MySQL.

A l'installation, un raccourci vers Easyphp est créé dans le répertoire "Démarrer/Programmes/Easyphp ".

Une fois Easyphp lancé, une icône se place dans la barre des tâches à coté de l'horloge. Un clic droit permet d'accéder à différents menus (plusieurs essais sont parfois nécessaires) :

• Fichier Log : renvoie aux erreurs générées par Apache et MySQL

• Configuration : donne accès aux différentes configurations d' Easyphp

• Web local : ouvre la page http://localhost/

• Démarrer/Arrêter : démarre/arrête Apache et MySQL

• Quitter : ferme Easyphp

c) Création d'un alias

En local il est pratique de créer un alias pour pouvoir tester le site.

Cette opération concerne le serveur Apache. Quand Easyphp est démarré, faire un clic droit sur l'icône et sélectionner "administration". Cette page vous permet d'administrer vos alias.

Quand vous êtes dans la page "administration", cliquer sur "[ajouter]" pour accéder à la page d'ajout d'alias. Il suffit alors de renseigner l'alias (ex support_dw) et le chemin du dossier du site avant de valider.

AFCI-NEWSOFT 7

Page 6: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

d) Paramétrage du site dans Dreamweaver MX

Tous les fichiers du site devront se trouver dans un dossier ou dans un de ses sous dossiers.

Ex : C:\Mes documents\Support DW

Définition du site dans Dreamweaver MX :

• Dans le menu Site, choisir Nouveau

Cliquer sur Suivant > quand le nom du site est saisi.

8 AFCI-NEWSOFT

Page 7: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

Choisir la technologie de serveur PHP ADODB (elle existe si l'extension phakt est installée dans Dreamweaver MX).

Puis Cliquer sur Suivant >

AFCI-NEWSOFT 9

Page 8: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

Renseigner l'URL de votre site. En local vous devez rajouter l'alias créé à l'URL http://localhost/ (ne pas oublier le "/" final).

Puis Cliquer sur Suivant >

Si vous avez un serveur distant, vous pouvez le définir dans la dernière étape de cet assistant.

Les paramètres du site sont consultables et modifiables à tout instant dans Dreamweaver MX en passant par le menu site puis Modifier les sites…

10 AFCI-NEWSOFT

Page 9: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

IV. Création d’une base de données MySQL

a) Création d'une base de données sous PHPMyAdmin

En local, pour accéder à PHPMyAdmin Easyphp doit être démarré. Le bouton d'entrée de PHPMyAdmin sur trouve sur la page d'administration d'Easyphp.

Saisir le nom de la nouvelle base puis cliquer sur le bouton Créer. Un message de confirmation indique que la base de données a été créée.

En général les hébergeurs n'offrent qu'une base en standard. Soigner la structure de la base est donc essentiel pour la gestion du site.

AFCI-NEWSOFT 11

Page 10: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

b) Création d'une table sous PHPMyAdmin

Dans un premier temps il faut se positionner dans la base de données concernée (à choisir dans le cadre de gauche).

Ensuite saisir le nom de la table et le nombre de champs qu'elle contient avant de cliquer sur le bouton Exécuter

Cliquer sur le bouton Exécuter pour accéder à la page de création de la structure de la table

12 AFCI-NEWSOFT

Page 11: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

Pour mieux comprendre la structure de cette table, voici la description des différents types de données utilisés :

• SMALLINT représente un nombre entier entre 0 et 65 535 (avec l'attribut UNSIGNED pour non signé, c'est à dire qu'il ne permet que des nombres positifs). Par rapport au type INT, SMALLINT prend moins de place mémoire et permet de coder des nombres moins grands. Il reste néanmoins amplement suffisant pour notre compteur.

• VARCHAR représente une chaîne de caractères de longueur variable mais dont on connaît le nombre maximal de caractères.

• TEXT est un type de données pouvant stocker jusqu'à 65 535 caractères. LONGTEXT, lui, peut en stocker jusqu'à 4 294 967 295 ! Ces types sont utiles pour stocker un contenu dont on ne connaît pas la taille à priori

Après avoir cliquer sur le bouton Sauvegarder un message de confirmation

Pour accéder la page d'insertion des données dans la table, cliquer sur le lien "Insérer".

AFCI-NEWSOFT 13

Page 12: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

Les données sont à saisir dans la colonne "Valeur". Avant de cliquer sur le bouton "Exécuter", choisir de retourner à la page précédente ou d'insérer un nouvel enregistrement suivant le cas.

Quand les données sont saisies, on peut les consulter, les modifier ou les effacer en cliquant sur le lien "Afficher".

c) Sauvegarde d'une base de données sous PHPMyAdmin

Une fois la base créée, il est important d'en faire une sauvegarde. Cette sauvegarde permettra la récupération en cas de problème, mais aussi en cas de transfert de la base.

Choisir la base dans Phpmyadmin.

Cocher transmettre sous le point Afficher le schéma de la base après avoir choisi structure seule, données seulement ou les 2 (Structure et données permet de sauvegarder l'ensemble de la base).

Il est possible de cocher "bzippé" pour compresser automatiquement la sauvegarde de la base. Ce fichier sera "dézippé" pour être utilisé.

En cliquant sur le bouton "Exécuter" un fichier texte (extension .sql) contenant la sauvegarde du schéma de la base va se créer.

14 AFCI-NEWSOFT

Page 13: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

Pour récupérer la sauvegarde, choisir la base dans Phpmyadmin puis cliquer sur le bouton "Parcourir" sous le point Exécuter une ou des requêtes sur la base … Cliquer sur le bouton Exécuter quand le fichier (avec l'extension .sql) est affiché. Un message de confirmation assure que la requête a été exécutée avec succès.

V.Connexion à la base de données

Dans un premier temps il faut ouvrir une nouvelle page : dans le menu Fichier choisir Nouveau puis PHP4 dans le choix des pages dynamiques.

Dans la fenêtre Application cliquer sur le petit + de l'onglet Bases de données puis choisir ADODB connection

Avec Easyphp, en local le nom du serveur par défaut est "localhost". De la même façon le nom d'utilisateur est "root" (administrateur) et sans mot de passe.

Pour le confort d'utilisation, il est judicieux de choisir les paramètres locaux en fonction de ceux qui sont fixés à distance.

Cette connexion pourra être utilisée dans toutes les pages du site.

AFCI-NEWSOFT 15

Page 14: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

VI. Création d'une page affichant les données d'une base MySQL

a) Conception de la page

La conception et la mise en page sont réalisées dans Dreamweaver (voir le support de cours concerné)

• Créer une nouvelle page dans Dreamweaver MX. Fichier Nouveau puis choisir PHP4 dans le choix des pages dynamiques

• Créer un tableau pour y disposer les données ex :

• Enregistrer la page, l'extension ".PHP" est par défaut (ex : voirboissons.php).

b) Création d'un jeu d'enregistrements, d'une requête.

C'est une requête (un jeu d'enregistrements) qui va permettre de choisir les données à intégrer dans la page.

Dans la fenêtre Application choisir l'onglet Liaison, cliquer sur le + et choisir Recordset (Query)

Rappel : Le menu est en anglais car l'extension installée n'existe pas en français.

16 AFCI-NEWSOFT

Page 15: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

En cliquant sur le bouton Advanced.. il est possible de créer des requêtes en SQL. (En annexe : notions de SQL)

Dans l'exemple, la requête affichée permet de réunir tous les champs de la relation entre la table tboisson et la table tcategorie (liste des catégories de boissons) en les triant par catégorie

Cliquer sur le bouton OK pour valider

Remarque : par copier coller, un jeu d'enregistrements peut-être intégré aux autres pages.

c) Insertion des données dans la page.

Cliquer sur le petit + Pour intégrer les données dans la page, il suffit de faire glisser les champs du jeu d'enregistrements dans la cellule du tableau qui correspond.

AFCI-NEWSOFT 17

Page 16: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

d) Ajout de liens dynamiques

L'extension installée sur Dreamweaver MX offre des comportements de serveur qui servent à passer de l'affichage d'un enregistrement à un autre.

Sélectionner dans la page à l'endroit de l'insertion du lien.

Dans la fenêtre Application, choisir l'onglet Comportements de serveur

Cliquer sur le + pour afficher le menu des comportements de serveur.

Choisir Recordset Paging puis le comportement qui convient.

Petite traduction :

Move to First Page = Aller à la première page

Move to Previous Page = Aller à la page précédente

Move to Next Page = Aller à la page suivante

Move to Last Page = Aller à la dernière page

Pour n'afficher ces liens que lorsqu'ils sont utiles, il est possible de rajouter le comportement de serveur "show region" correspondant au lien sélectionné. (Exemple : pour le lien "page suivante" il faut choisir le comportement de serveur "show region" "show if not last page")

D'autres comportements de serveur peuvent être ajoutés à cette page par exemple l'affichage du nombre total d'enregistrements (Display Record Count, Display Total Records) ou de l'enregistrement en cours (Display Record Count, Display Starting Record Number)

18 AFCI-NEWSOFT

Page 17: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

VII. Ajout de données dans une base MySQL

Pour ajouter un enregistrement "en ligne", 2 pages seront nécessaires, une pour la saisie des données (ex : ajout1.php), et une seconde pour confirmation (ex : ajout2.php).

a) Création de la page de saisie des données

• Créer un formulaire

• Insérer un tableau dans ce formulaire pour faire un "écran de saisie"

• Ajouter des champs de texte. Nommer ces champs de texte

• Ajouter éventuellement une (ou des) zone de liste/menu Il faut alors ajouter un jeu d'enregistrement pour avoir les éléments à afficher et un comportement de serveur Dynamic From Elements – Dynamic Liste/Menu

• Ajouter un bouton de commande pour envoyer le formulaire.

AFCI-NEWSOFT 19

Page 18: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

Quand les données sont saisies dans le formulaire, c'est un comportement de serveur qui va permettre de les ajouter dans la base de données.

• Dans la fenêtre des Comportements de serveur, choisir Insert Record

• Choisir la connexion, la table à enrichir, ainsi que la page à rejoindre après l'insertion des données (ajout2.php pour l'exemple).

• Dreamweaver MX trouve la correspondance entre les éléments de formulaire et les colonnes de la table si les différents objets du formulaire sont nommés comme les champs de la table. Si ce n'est pas le cas, il suffit de faire correspondre manuellement les éléments du formulaire avec les colonnes de la table.

• Valider par OK

b) Création de la page de confirmation

Dans cette page, un message de confirmation suffit, avec un lien de retour sur une la page souhaitée.

Pour tester, charger la page de saisie des données (ajout1.php).

20 AFCI-NEWSOFT

Page 19: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

VIII. Suppression de données de la base MySQL

Pour supprimer un enregistrement, 3 pages sont nécessaires :

- une page pour choisir l'enregistrement à supprimer (ex : supprime1.php)

- une page pour vérifier et confirmer (ex : supprime2.php)

- une page pour la suppression (ex : supprime3.php)

a) Création de la page de choix de l'enregistrement à supprimer

• Créer un formulaire

• Dans le formulaire, insérer l'objet une liste/un menu (nommé idboisson par exemple)

• Les données qui seront affichées dans la zone de texte doivent provenir de la table des enregistrements. Un nouveau jeu d'enregistrements doit donc être créé (identique à celui de la page de visualisation des données).

• Ajouter un comportement de serveur afin de choisir les enregistrements dans la zone de liste. Sélection de la zone de liste Dans la fenêtre Comportements de serveur, cliquer sur le petit + puis choisir Dynamic From Elements – Dynamic Liste/Menu

Les zones de cette boîte de dialogue sont renseignées automatiquement. Il convient tout de même de les vérifier

• Valider par OK

• Insérer un bouton de commande dans le formulaire pour l'envoyer

AFCI-NEWSOFT 21

Page 20: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

• Il ne reste qu'à renseigner les propriétés du formulaire. Action : choisir la page de vérification (ex : suppression2.php) Méthode : Post

b) Création de la page de vérification

Cette page affiche l'enregistrement à supprimer choisi dans la page précédente.

• Création d'un formulaire

• Insérer un tableau pour accueillir les données dans ce formulaire

• Créer un jeu d'enregistrement pour récupérer les données de l'enregistrement à supprimer. Pour atteindre la zone "SQL", cliquer sur le bouton "Advanced" en arrivant dans la boîte de dialogue "simple" du jeu d'enregistrements

Ce jeu d'enregistrements est filtré par la variable de formulaire (=idboissson, le nom de la zone de liste de la page supprime1.php)

• Cliquer sur OK pour valider

• Cliquer sur le petit + Pour intégrer les données dans la page, il suffit de faire glisser les champs du jeu d'enregistrements dans la cellule du tableau qui correspond.

• Ajouter un bouton pour lancer la suppression

• Définir les propriétés du formulaire (choisir la page de suppression) Action : supprime3.php Méthode : Post

22 AFCI-NEWSOFT

Page 21: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

• Ajout d'un champ caché qui contient la valeur du champ clé primaire (exemple : idboisson). Donner un nom à ce champ (exemple : idboisson)

c) Création de la page de suppression

La 3ème page ne sert qu'à supprimer l'enregistrement choisi dans la page précédente. Donc, aucune mise en forme n'est requise.

Ajouter un comportement de serveur pour supprimer l'enregistrement. Dans la liste des comportements de serveur, choisir "Delete Record"

IX. Modification de données de la base MySQL

Pour modifier un enregistrement, 3 pages sont nécessaires :

- une page pour choisir l'enregistrement à modifier (ex : modif1.php)

- une page pour vérifier et modifier (ex : modif2.php)

- une page pour la confirmation (ex : modif3.php)

a) Création de la page de choix de l'enregistrement à modifier

• Créer un formulaire

• Dans le formulaire, insérer l'objet une liste/un menu (nommé idboisson par exemple)

AFCI-NEWSOFT 23

Page 22: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

• Les données qui seront affichées dans la zone de texte doivent provenir de la table des enregistrements. Un nouveau jeu d'enregistrements doit donc être créé (identique à celui de la page de visualisation des données).

• Ajouter un comportement de serveur afin de choisir les enregistrements dans la zone de liste. Sélection de la zone de liste Dans la fenêtre Comportements de serveur, cliquer sur le petit + puis choisir Dynamic From Elements – Dynamic Liste/Menu

Les zones de cette boîte de dialogue sont renseignées automatiquement. Il convient tout de même de les vérifier

• Valider par OK

• Insérer un bouton de commande dans le formulaire pour l'envoyer

• Il ne reste qu'à renseigner les propriétés du formulaire. Action : choisir la page de vérification (ex : modif2.php) Méthode : Post

b) Création de la page de vérification/modification

Cette page affiche l'enregistrement à modifier choisi dans la page précédente.

• Création d'un formulaire

• Insérer un tableau pour accueillir les données dans ce formulaire

• Ajouter des champs de texte. Nommer ces champs de texte

• Créer un jeu d'enregistrement pour récupérer les données de l'enregistrement à supprimer. Pour atteindre la zone "SQL", cliquer sur le bouton "Advanced" en

24 AFCI-NEWSOFT

Page 23: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

arrivant dans la boîte de dialogue "simple" du jeu d'enregistrements

Ce jeu d'enregistrements est filtré par la variable de formulaire (=idboissson, le nom de la zone de liste de la page modif1.php)

• Cliquer sur OK pour valider

• Cliquer sur le petit + Pour intégrer les données dans la page, il suffit de faire glisser les champs du jeu d'enregistrements dans la cellule du tableau qui correspond.

• Ajouter éventuellement une (ou des) zone de liste/menu Il faut alors ajouter un jeu d'enregistrement pour avoir les éléments à afficher et un comportement de serveur Dynamic From Elements – Dynamic Liste/Menu

(La valeur par défaut de cette zone de liste/menu est l'idcat de la table tboisson pour l'exemple)

• Cliquer sur OK pour valider

• Ajout d'un champ caché qui contient la valeur du champ clé primaire (exemple : idboisson). Donner un nom à ce champ (exemple : idboisson)

AFCI-NEWSOFT 25

Page 24: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

• Ajouter un bouton pour lancer la modification

Quand l'enregistrement est affiché, l'utilisateur peut faire ses modifications. Un comportement de serveur va permettre de valider ces modifications (on peut éventuellement ajouter un bouton pour annuler).

• Dans la fenêtre des Comportements de serveur, choisir Update Record.

Quand la connexion est choisie, les autres zones se remplissent automatiquement. Après avoir vérifier toutes ces zones (en particulier la correspondance entre les éléments de formulaire et les champs de la table), il convient de renseigner où aller après la mise à jour.

• Valider par OK

26 AFCI-NEWSOFT

Page 25: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

X.Recherche de données dans la base MySQL

Pour rechercher un enregistrement (ou plusieurs) suivant des critères définis, 2 pages seront nécessaires, une pour choisir les critères de recherche (ex : cherche1.php), et une seconde pour afficher les résultats (ex : recherche2.php).

a) Création de la page de choix des critères

• Dans un formulaire, insérer un tableau avec les champs de texte ou zones de liste/menu et un bouton de commande pour envoyer le formulaire. Exemple pour une zone de liste : après avoir insérer la zone de liste et créer un jeu d'enregistrements pour récupérer les informations à afficher, dans la fenêtre Comportements de serveur, cliquer sur le petit + puis choisir Dynamic From Elements – Dynamic Liste/Menu

• Nommer les objets (champs de texte et zones de liste) de ce formulaire.

• Le bouton de commande doit envoyer le formulaire

• Définir les propriétés du formulaire Action : cherche2.php (choisir la page de résultats) Méthode : Post

Dans cet exemple il y a 2 critères, la catégorie et la marque, on pourrait imaginer un seul critère ou au contraire plusieurs.

AFCI-NEWSOFT 27

Page 26: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

b) Création de la page de résultats

La page de résultats doit afficher tous les enregistrements qui correspondent aux critères définis dans la page de choix.

• Créer un tableau pour afficher un seul enregistrement

Les éventuels enregistrements suivants seront ajoutés au chargement de la page.

Création du jeu d'enregistrements

• Afficher l'onglet "Liaisons" de la fenêtre "Applications"

• Cliquer sur le petit + et choisir Recordset (Query)

(Voir l'annexe pour les premières notions de SQL)

• Dans l'onglet "Liaisons" de la fenêtre "Applications" cliquer sur le petit + devant le jeu d'enregistrements pour le développer.

• Insertion des données dans la page. Pour intégrer les données dans la page, il suffit de faire glisser les champs du jeu d'enregistrements dans la cellule du tableau qui correspond (dans la 3ème ligne du tableau pour notre exemple, la 2ème servant de séparation pour les enregistrements).

La page dans cet état, n'affiche qu'un enregistrement (au plus). C'est un comportement de serveur qui va permettre d'afficher les autres enregistrements.

28 AFCI-NEWSOFT

Page 27: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

• Sélectionner les lignes à répéter (les 2 dernières lignes du tableau dans l'exemple)

• Dans la fenêtre des Comportements de serveur, choisir Repeat Region

Vérifier que le jeu d'enregistrements est le bon (surtout quand il y en a plusieurs sur la même page).

• Il est possible de rajouter le nombre d'enregistrements trouvés. Après s'être positionné dans la page, dans la fenêtre des Comportements de serveur, choisir Display Record Count puis Display Total Records

• Il est possible de rajouter un message visible que si le jeu d'enregistrements est vide, si la recherche n'a pas aboutie. Pour ça il suffit d'utiliser un comportement de serveur Show Region.

XI. Insertion d'objets dynamiques dans la page

a) Préparation de la base de données

Pour insérer des objets dynamiques dans la page, comme une image ou un lien hypertexte, des champs doivent être prévus dans la base de données.

Ouvrir une page pour afficher un enregistrement (pour l'exemple, reprendre la page voirboissons.php).

b) Insertion d'une image dynamique

L'image dynamique, c'est l'image qui correspond au nom de l'image contenu dans l'enregistrement de la table de la base de données. Dans la table MySQL, le champ correspondant à l'image est un champ de type texte (seul le nom du fichier de l'image est stocké).

AFCI-NEWSOFT 29

Page 28: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

Les images doivent évidemment exister dans un dossier du site (dossier images pour l'exemple).

• Insérer une image à l'endroit souhaité dans la page.

• Cliquer sur Source de données (le nom de l'image est dans la table)

• Cliquer sur le petit + pour développer le jeu d'enregistrements

• Sélectionner le champ qui correspond au nom de l'image (photo pour l'exemple)

• Rajouter le chemin du dossier qui contient les images dans la zone URL (sauf si les images sont dans le même dossier que la page)

• Valider par OK

• La taille de l'image peut être fixée pour harmoniser les pages (fixer la hauteur ou la largeur).

c) Insertion de liens dynamiques

Le lien dynamique, c'est le lien qui correspond à l'enregistrement de la table de la base de données.

• Sélection du texte ou de l'objet sur lequel le lien hypertexte doit être insérer

• Cliquer sur le bouton parcourir pour choisir le lien hypertexte

• Cliquer sur Source de données (le nom du lien est dans la table)

• Cliquer sur le petit + pour développer le jeu d'enregistrements

• Sélectionner le champ qui correspond au nom du lien (site pour l'exemple)

30 AFCI-NEWSOFT

Page 29: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

• Rajouter le début de l'adresse s'il manque, dans la zone URL ("http://", "ftp://" ou "mailto:")

• Valider par OK

Vous pouvez intégrer d'autres objets dynamiques (par exemple des styles CSS) en utilisant la même méthode.

XII. Page d'informations détaillées

Une page de résultats avec une région répétée, permet d'afficher plusieurs enregistrements simultanément. Pour obtenir les informations détaillées de chaque enregistrement un lien "dynamique" doit y être inséré.

Le lien doit non seulement déclencher l'ouverture de la page d'informations détaillées, mais aussi informer cette même page de l'identité de l'enregistrement que l'utilisateur a sélectionné.

C'est un comportement de serveur qui va nous permettre de créer ce lien.

Deux pages seront donc nécessaires, la page d'informations détaillées (ex : detail.php) et la page où le lien sera inséré (ex : cherche2.php créée précédemment).

a) Création de la page d'informations détaillées

La page d'informations détaillées est une page "classique" d'affichage des données de la base MySQL. Seul le critère du jeu d'enregistrements est particulier.

• Créer la page avec toutes les données souhaitées Il est possible pour l'exemple de prendre pour base, la page d'affichage des données créée précédemment (voirboisson.php).

AFCI-NEWSOFT 31

Page 30: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

La barre de navigation du jeu d'enregistrements doit être supprimée (elle n'a pas de raison d'être ici)

• Enregistrer la page (ex : detail.php). Le critère du jeu d'enregistrements sera renseigné plus tard

b) Insertion du lien dynamique vers la page d'informations détaillées

Le lien vers la page d'informations détaillées est inséré dans la page de résultats.

• Modification de la page de résultats (ex : cherche2.php)

• Sélection du texte (ou de l'objet) sur lequel le lien doit être créé.

• Dans la fenêtre "Comportements de serveur", cliquer sur le + pour choisir "Go To Detail Page"

• Renseigner les différentes zones de cette boîte de dialogue. - Le lien est renseigné automatiquement si la sélection est faite précédemment - La page d'informations détaillée est celle qui vient d'être créée - Le paramètre de l'URL est l'information qui va identifié l'enregistrement (l'ID) - Vérifier le nom du jeu d'enregistrements et de la colonne correspondante. - Passer le paramètres d'URL et éventuellement les paramètres de formulaire.

• Cliquer sur OK pour valider

• Enregistrer la page

32 AFCI-NEWSOFT

Page 31: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

c) Ajout du critère de sélection dans le jeu d'enregistrements de la page d'informations détaillées

• Modifier le jeu d'enregistrements de la page d'informations détaillées Double clic dessus dans l'onglet "Liaisons" de la fenêtre "Applications"

• Choisir le champ correspondant à l'identifiant passé en paramètre d'URL par la page précédente dans le filtre

• Cliquer sur OK pour valider

• Enregistrer la page. Pour tester ouvrir la page de choix de la recherche multicritère (ex : cherche1.php).

AFCI-NEWSOFT 33

Page 32: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

XIII. Limiter l'accès aux pages du site

Pour permettre la limitation aux pages du site, 2 étapes sont à considérer.

La première étape est la connexion de l'utilisateur et la vérification de ses droits. Pour savoir si l'utilisateur a le droit d'accéder à une page, il doit être identifié.

La deuxième étape accorde l'accès aux pages suivant les droits de l'utilisateur connecté

a) Création de la table utilisateur dans MySQL

Trois champs sont indispensables dans cette table (exemple : tmembre), le nom, le mot de passe et le droit de l'utilisateur.

Une valeur par défaut peut être renseignée dans le champ "droit" pour affecter automatiquement le droit "invité" aux nouveaux utilisateurs.

Il est conseillé de saisir une ligne dans cette table pour l'administrateur avec le droit "chef" par exemple.

b) Création de la page de connexion

Dans cette page (exemple : login.php) l'utilisateur doit saisir son nom et son mot de passe.

• Créer un formulaire avec les zones de saisie et le bouton de commande pour envoyer le formulaire. (nommer ces objets)

• Pour le mot de passe, il est possible de choisir le format spécial mot de passe dans les propriétés du champ.

34 AFCI-NEWSOFT

Page 33: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

• Dans la fenêtre Comportements de serveur, choisir "User Authentification" puis "Log In User"

• Renseigner les zones de cette boîte de dialogue en vérifiant les zones renseignées automatiquement. Choisir "Username, Password, and Access Level" pour obtenir des niveaux d'accès différents suivant les utilisateurs.

• Valider par OK

Lorsque l'utilisateur se connecte, une variable de session est créée. Il est possible de proposer de déconnecter l'utilisateur en utilisant le comportement de serveur adapté.

AFCI-NEWSOFT 35

Page 34: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

c) Restreindre l'accès d'une page aux utilisateurs autorisés

Le comportement de serveur qui permet de restreindre l'accès à une page, doit être inséré dans toutes les pages dont l'accès doit être limité.

• Ouvrir une page à "brider" (ex : supprime1.php)

• Dans la fenêtre Comportements de serveur, choisir User Authentification puis Restrict Acces To Page

• Choisir le niveau de protection de la page : - soit au niveau de l'utilisateur, il suffit qu'il soit connecté - soit au niveau des droits, il doit être connecté et avoir les droits nécessaires

• Renseigner le nom de la page à atteindre en cas de refus d'accès

• Valider par OK

• Enregistrer la page et faire de même pour toutes les autres pages à "brider".

36 AFCI-NEWSOFT

Page 35: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

XIV. Variables de session

PHP permet depuis la version PHP4 de gérer les sessions.

Le support des sessions de PHP est un moyen de préserver des données entre plusieurs accès. Cela vous permet de créer des applications personnalisées, et d'augmenter l'attractivité de votre site.

Le support des sessions vous permet d'enregistrer un nombre illimité de variables qui doivent être préservées entre les requêtes

Le support des sessions permet dans l'exemple suivant de conserver le nom de l'utilisateur connecté, pendant la navigation dans le site.

a) Déclaration de la variable de session

Ouvrir la page login.php (la page de saisie et déclaration de la variable)

Pour utiliser les variables de session dans Dreamweaver MX, il faut afficher le code de la page. Dans le menu Affichage, choisir Code

Sous la ligne de commentaires (rajoutée par le comportement de serveur Log In User):

// Add code here if you want to do something if login succeded

Ajouter :

// Déclaration de la variable de session "pseudo"

$_SESSION["pseudo"]= $HTTP_POST_VARS['pseudo'];

La variable de session prend la valeur de la variable de formulaire.

Remarque : dans Dreamweaver MX les lignes de code PHP (lignes entre les balises <?php et ?>) sont colorées automatiquement.

b) Utilisation de la variable de session

Pour utiliser une variable de session dans une page, il faut ajouter la ligne suivante dans le code de la page, au début de la page entre les balises PHP.

// *** Start the session

session_start();

Puis insérer le code suivant où la variable doit apparaître.

<?php echo $HTTP_SESSION_VARS['pseudo']; ?>

Cette variable existe et peut être utilisée à tout moment.

AFCI-NEWSOFT 37

Page 36: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

XV. Insertion de script PHP

Pour ajouter un script PHP dans le code d'une page, il doit être affiché. Dans Dreamweaver MX cliquer choisir Code dans le menu Affichage.

Les scripts peuvent être créer ou récupérer sur internet dans un des nombreux sites spécialisés

a) Exemple 1 : insérer la date du jour

Dans la partie body insérer le code suivant à l'endroit où la date doit apparaître.

<?php

$datedujour=date("j/m/Y");

echo $datedujour;

?>

b) Exemple 2 : alterner la couleur des lignes d'un tableau

Pour le confort de lecture, on peut rechercher à alterner la couleur des lignes d'un tableau créé avec une région répétée (comme par exemple le tableau de la page cherche2.php)

• Afficher le code de la page (cherche2.php par exemple)

La région répétée commence par le mot "while".

• Insérer le code suivant juste au dessus de ce mot "while"

//couleurs des lignes (les codes sont à personnaliser)

$color="#FFFFFF";

$color1="#F2FFFF";

$color2="#FFFFFF";

• Insérer le code suivant à la place de la balise <tr>

<?php echo "<tr bgcolor=$color>"; ?>

38 AFCI-NEWSOFT

Page 37: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

• Insérer le code suivant juste au dessus de la ligne qui contient l'expression " MoveNext"

//inversion des couleurs

$color=$color1;

$color1=$color2;

$color2=$color;

AFCI-NEWSOFT 39

Page 38: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

ANNEXE I

Les types de données MySQL MySQL supporte un grand nombre de types de colonnes, qui peuvent être rassemblés en trois groupes : les nombres, les dates et les chaînes de caractères. Cette section présente les types disponibles et leurs tailles de stockage, puis présente en détail chaque type. L'introduction est volontairement brève. Une section plus précise est dédiée à chaque type, qui présente tous les formats valides.

Les types de colonnes de MySQL sont listés ci-dessous. Les codes suivants sont utilisés dans les descriptions :

M Indique la taille maximale d'affichage. Le maximum légal est 255. D S'applique aux nombres à virgule flottante, et indique le nombre de décimales qui suivent la virgule. Le nombre maximum est de 30, mais ne doit pas être plus grand que M -2.

Les crochets ( '[' et ']' ) indiquent les spécifications optionnelles.

Notez que si vous spécifiez ZEROFILL pour une colonne, MySQL ajoutera automatiquement l'attribut UNSIGNED à la colonne.

Attention : vous devez garder à l'esprit que lors de la soustraction de deux entiers dont l'un est de type UNSIGNED , le résultat ne sera pas signé !

Les types de données numériques

• TINYINT[(M)] [UNSIGNED] [ZEROFILL] Un très petit entier. S'il est signé, sa valeur varie entre -128 et 127 , sinon elle varie de 0 à 255 .

• BIT BOOL Ce sont des synonymes de TINYINT(1) .

• SMALLINT[(M)] [UNSIGNED] [ZEROFILL] Un petit entier. S'il est signé, sa valeur varie entre -32768 et 32767 , sinon elle varie de 0 à 65535 .

• MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] Un entier de taille moyenne. S'il est signé, sa valeur varie entre -8388608 et 8388607 , sinon elle varie entre 0 et 16777215 .

• INT[(M)] [UNSIGNED] [ZEROFILL] Un entier. S'il est signé, sa valeur varie entre -2147483648 et 2147483647 , sinon elle varie entre 0 et 4294967295 .

• INTEGER[(M)] [UNSIGNED] [ZEROFILL] C'est un synonyme de INT .

40 AFCI-NEWSOFT

Page 39: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

• BIGINT[(M)] [UNSIGNED] [ZEROFILL] Un grand entier. S'il est signé, sa valeur varie entre -9223372036854775808 et 9223372036854775807 , sinon elle varie entre 0 et 18446744073709551615 .Quelques choses à savoir pour bien utiliser les colonnes de type BIGINT : Toute l'arithmétique est effectuée en utilisant des BIGINT signés ou des valeurs de type DOUBLE , vous ne devez donc pas utiliser de grands entiers non signés plus grand que 9223372036854775807 (63 bits) excepté avec les fonctions sur les bits ! Si vous le faites, certains des derniers chiffres du résultat risquent d'être faux à cause des erreurs d'arrondissage lors de la conversion de BIGINT à DOUBLE .MySQL 4.0 peut gérer les BIGINT dans les cas suivants : Utilisation d'entiers pour stocker une grande valeur non signée dans une colonne BIGINT . Avec MIN(colonne_big_int) and MAX(colonne_big_int) . Lors de l'utilisation des opérateurs ( + , - , * , etc.) lorsque les deux opérandes sont des entiers. Vous pouvez toujours stocker la valeur exacte d'un entier dans une colonne de type BIGINT en l'enregistrant en tant que chaîne. Dans ce cas, MySQL effectuera une conversion chaîne à nombre qui ne fait entrer en jeu aucune représentation intermédiaire en réel. '-' , '+' , et '*' utiliseront l'arithmétique BIGINT quand les deux arguments sont des valeurs entières ! Cela signifie que si vous multipliez deux grands entiers (ou des résultats de fonctions qui retournent des entiers) vous obtiendrez peut être des résultats inattendus quand le résultat est supérieur à 9223372036854775807 .

• FLOAT(précision) [UNSIGNED] [ZEROFILL] Un nombre à virgule flottante. précision <=24 pour un nombre à virgule flottante de précision simple, entre 25 et 53 pour une précision double. Ces types correspondent aux types FLOAT et DOUBLE décrits ci-dessus. FLOAT(X) a le même intervalle de validité que FLOAT et DOUBLE , mais la taille d'affichage et le nombre de décimales sont indéfinis. Dans la version 3.23 de MySQL, c'est un véritable nombre à virgule flottante. Dans les anciennes versions de MySQL, FLOAT(précision) avait toujours deux décimales. Notez que l'utilisation du type FLOAT peut vous créer des problèmes inattendus car tous les calculs internes de MySQL sont fait en double précision. Résoudre les problèmes des lignes non retournées . Cette syntaxe est fournie pour assurer la compatibilité avec ODBC.

• FLOAT[(M,D)] [UNSIGNED] [ZEROFILL] Un petit nombre à virgule flottante (précision simple). L'intervalle de validité va de -3.402823466E+38 à -1.175494351E-38 , 0 et de 1.175494351E-38 à 3.402823466E+38 . Si UNSIGNED est spécifié, les valeurs négatives sont interdites. M représente la taille d'affichage et D est le nombre de décimales. FLOAT sans arguments, ou avec un argument <= 24 représente un nombre à virgule flottante de précision simple.

• DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL] Un nombre à virgule flottante (précision double). L'intervalle de validité va de -1.7976931348623157E+308 à -2.2250738585072014E-308 , 0 et de 2.2250738585072014E-308 à 1.7976931348623157E+308 . Si UNSIGNED est spécifié, les valeurs négatives sont interdites. M représente la taille

AFCI-NEWSOFT 41

Page 40: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

d'affichage et D est le nombre de décimales. FLOAT sans arguments, ou avec un argument compris entre 25 et 53 (inclus) représente un nombre à virgule flottante de précision double.

• DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL] REAL[(M,D)] [UNSIGNED] [ZEROFILL] C'est un synonyme de DOUBLE .

• DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL] Un nombre à virgule flottante. Il doit être signé. Ce type se comporte comme une colonne de type CHAR : la valeur est stockée comme une chaîne, chaque caractère représentant un chiffre de la valeur. La virgule et le signe '-' des nombres négatifs ne sont pas comptés dans l'option M (mais de l'espace de stockage est réservé pour eux). Si D vaut 0, les valeurs n'auront pas de valeur décimale. L'intervalle de validité des valeurs DECIMAL est le même que DOUBLE , mais il peut être limité par les valeurs choisies pour M et D . Si UNSIGNED est spécifié, les valeurs négatives sont interdites. Si D est omis, la valeur par défaut est 0. Si M est omis, la valeur par défaut est 10. Avant la version 3.23 de MySQL, l'argument M doit inclure l'espace requis pour le signe et le point des décimales.

• DEC[(M[,D])] [UNSIGNED] [ZEROFILL] NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL] Ce sont des synonymes de DECIMAL .

Les types de données dates

• DATE Une date. L'intervalle de validité va de '1000-01-01' à '9999-12-31' . MySQL affiche les valeurs DATE au format 'AAAA-MM-JJ' (année-mois-jour), mais vous pouvez assigner des valeurs aux colonnes DATE en utilisant différents formats numériques ou de chaînes de caractères.

• DATETIME Une combinaison de date et d'heure. L'intervalle de validité va de '1000-01-01 00:00:00' à '9999-12-31 23:59:59' . MySQL affiche les valeurs DATETIME au format 'AAAA-MM-JJ HH:MM:SS' (année-mois-jour heure:minutes:secondes), mais vous pouvez assigner des valeurs aux colonnes DATETIME en utilisant différents formats numériques ou de chaînes de caractères.

• TIMESTAMP[(M)] Un timestamp. L'intervalle de validité va de '1970-01-01 00:00:00' à quelque part durant l'année 2037. MySQL affiche les valeurs de type TIMESTAMP au format AAAAMMJJHHMMSS , AAMMJJHHMMSS , AAAAMMJJ , ou AAMMJJ , suivant que le paramètre M vaut 14 (ou omis), 12 , 8 , ou 6 , mais vous pouvez assigner des valeurs aux colonnes TIMESTAMP sous forme de nombre ou de chaînes. Une colonne de type TIMESTAMP est pratique pour enregistrer une date, lors d'une commande INSERT ou UPDATE , car elle est automatiquement mise à la date et l'heure du moment de la commande, si vous ne fournissez pas de valeur vous-même. Vous pouvez aussi lui donner la date et l'heure courante en lui assignant la valeur NULL . Types dates et heures . Un TIMESTAMP est toujours stocké sur 4 octets. L'argument M n'affecte

42 AFCI-NEWSOFT

Page 41: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

que le mode d'affichage de ce type de colonne. Notez bien que les colonnes de type TIMESTAMP(X) où X vaut 8 ou 14 sont considérées comme des nombres tandis que les autres colonnes TIMESTAMP(X) sont considérées comme des chaînes. Ceci est fait pour s'assurer que l'on peut exporter et importer les tables avec ces types.

• TIME Une heure. L'intervalle de validité va de '-838:59:59' à '838:59:59' . MySQL affiche les colonnes de type TIME au format 'HH:MM:SS' , mais vous pouvez assigner une valeur de type TIME en lui passant des chaînes ou des entiers

• YEAR[(2|4)] Une année au format 2 ou 4 chiffres (par défaut, c'est 4 chiffres). L'intervalle de validité va de 1901 à 2155 , 0000 pour le format à 4 chiffres, et de 1970 à 2069 pour le format à deux chiffres. MySQL affiche les valeurs de type YEAR au format AAAA , mais vous pouvez leur assigner des chaînes ou des nombres. (le type YEAR est nouveau depuis la version 3.22 de MySQL) The YEAR type .

Les types de données textes

• [NATIONAL] CHAR(M) [BINARY] Une chaîne de caractères de taille fixe, qui est toujours complétée à droite, par des espaces, lors du stockage. Le paramètre M peut valoir de 0 à 255 caractères. (1 à 255 dans les versions antérieures à la 3.23) Les espaces terminaux sont supprimés lorsque la chaîne est lue dans la base. Les valeurs de type CHAR sont triées et comparées sans tenir compte de la casse et en utilisant le jeu de caractères par défaut. Toutefois, vous pouvez utiliser l'opérateur BINARY pour effectuer des recherches sensibles à la casse. NATIONAL CHAR (forme courte : NCHAR ) est la dénomination ANSI SQL pour les colonnes de type CHAR qui doivent utiliser le jeu de caractères par défaut. C'est la configuration par défaut de MySQL. MySQL autorise la création de colonne de type CHAR(0) . Cela ne sert réellement que si vous devez être compatible avec une vieille application, dont le bon fonctionnement repose sur l'existence de la colonne, mais qui n'utilise pas vraiment ses valeurs. C'est aussi pratique lorsque vous devez stocker un booléen (ou une valeur à deux états) dans une colonne : une colonne de type CHAR(0) , qui n'a pas l'attribut NOT NULL, n'occupera qu'un seul octet, et peut prendre deux valeurs : NULL et "" .

• CHAR est une forme courte de CHARACTER . CHAR C'est un synonyme de CHAR(1).

• [NATIONAL] VARCHAR(M) [BINARY] Une chaîne de caractères de longueur variable. NOTE : les espaces terminaux sont supprimés lors du stockage des valeurs (ce qui diffère des spécifications ANSI SQL). L'intervalle de taille de M va de 1 à 255 caractères. Les valeurs de type VARCHAR sont triées et comparées sans tenir compte de la casse et en utilisant le jeu de caractères par défaut. Toutefois, vous pouvez utiliser l'opérateur BINARY pour effectuer des recherches sensibles à la casse.

• VARCHAR est une forme courte de CHARACTER VARYING.

AFCI-NEWSOFT 43

Page 42: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

• TINYBLOB TINYTEXT Une colonne BLOB ou TEXT avec une longueur maximale de 255 (2^8 - 1) caractères. Silent column changes . Les types BLOB et TEXT .

• BLOB TEXT Une colonne BLOB ou TEXT avec une longueur maximale de 65535 (2^16 - 1) caractères. Silent column changes . Les types BLOB et TEXT .

• MEDIUMBLOB MEDIUMTEXT Une colonne BLOB ou TEXT avec une longueur maximale de 16777215 (2^24 - 1) caractères. Silent column changes . Les types BLOB et TEXT .

• LONGBLOB LONGTEXT Une colonne BLOB ou TEXT avec une longueur maximale de 4294967295 (2^32 - 1) caractères. Silent column changes . Notez que puisque le protocole serveur/client et les tables de type MyISAM ont une limitation de 16M par paquet communiqué / ligne, vous ne pourrez utiliser la totalité de la longueur de ce type. Les types BLOB et TEXT .

• ENUM('valeur1','valeur2',...) Une énumération. Une chaîne de caractères qui ne peut prendre qu'une valeur, issue d'une liste de valeurs 'valeur1' , 'valeur2' , ... , NULL ou la valeur spéciale d'erreur "" . Un ENUM peut avoir un maximum de 65535 valeurs distinctes. Le type ENUM .

• SET('valeur1','valeur2',...) Un ensemble. Une chaîne de caractères qui a zéro ou plusieurs valeurs issues d'une liste : 'valeur1' , 'valeur2' , ... Un SET peut avoir au maximum 60 éléments. Le type SET .

44 AFCI-NEWSOFT

Page 43: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

ANNEXE II

INITIATION à SQL Cette annexe explique brièvement comment rédiger des requêtes SQL simples pour créer des jeux d'enregistrements.

L'instruction SQL la plus courante pour créer un jeu d'enregistrements est l'instruction SELECT, qui extrait des champs spécifiques d'un ou de plusieurs tableaux de base de données pour générer le jeu d'enregistrements.

La syntaxe de base de l'instruction SELECT est la suivante :

SELECT NomChamp FROM NomTable

Vous pouvez également ajouter des sauts de ligne, des tabulations et autres espaces blancs à vos instructions pour les rendre plus claires : SQL ignore tous les espaces blancs.

Par exemple, l'instruction suivante est correcte :

SELECT SommesPayees

FROM Membres

Insertion d'un tableau entier :

Si vous voulez insérer tout le contenu d'un tableau dans votre jeu d'enregistrements, utilisez l'astérisque (*) comme caractère générique pour inclure l'ensemble des champs. Prenons l'exemple d'un tableau nommé Clients.

Pour en extraire tous les champs, tapez l'instruction SELECT suivante :

SELECT * FROM Clients

Limite du nombre de champs :

Supposons maintenant que vous ayez seulement besoin des données contenues dans deux colonnes du tableau Clients : les colonnes AnnéeNaissance et DateDernierAchat.

Pour créer un jeu d'enregistrements contenant uniquement les données de ces deux colonnes, tapez l'instruction SELECT suivante :

SELECT AnnéeNaissance, DatedeNaissance FROM Clients

Limite du nombre d'enregistrements :

Utilisez une clause WHERE pour limiter le nombre d'enregistrements dans un jeu d'enregistrements.

Par exemple, vous souhaitez obtenir uniquement les clients dont le revenu s'élève à plus de 350 000 FF par an. Supposons que votre tableau contienne une colonne nommée Revenus qui indique le montant du revenu de chaque client.

Votre instruction SELECT devra se présenter ainsi :

SELECT AnnéeNaissance, DateDernierAchat FROM Clients

WHERE Revenus > 350000

Définition d'une condition dans la clause WHERE :

AFCI-NEWSOFT 45

Page 44: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

Utilisez une clause WHERE pour limiter le nombre d'enregistrements dans un jeu d'enregistrements.

Vous trouverez ci-après la liste des opérateurs conditionnels que vous pouvez utiliser dans une clause WHERE.

Si l'élément comparé est du texte, mettez-le entre apostrophes comme dans l'exemple suivant :

WHERE Pays = ‘Allemagne’

Liste des opérateurs :

= Egal à (distingue les majuscules/minuscules)

LIKE Egal à (ne distingue pas les majuscules/minuscules)

<> Différent de (distingue les majuscules/minuscules)

NOT LIKE Différent de (ne distingue pas les majuscules/minuscules)

< Inférieur à

> Supérieur à

<= Inférieur ou égal à

>= Supérieur ou égal à

Si l'élément comparé est une date et que vous utilisez une base de données Microsoft Access, mettez cet élément entre des signes dièse (#) :

WHERE DateDeNaissance < #01/01/1970#

Les autres bases de données possèdent leurs propres conventions de dates. Reportez-vous à leur documentation pour connaître ces conventions.

Vous pouvez utiliser les caractères génériques dans les expressions conditionnelles. Le caractère générique standard est le pourcentage (%) :

WHERE Nom LIKE ‘Mc%’

Avec les bases de données Access, l'astérisque (*) est également utilisé comme caractère générique :

WHERE NomCompagnie = ‘*soft’

Spécification de plusieurs conditions dans la clause WHERE :

Vous pouvez spécifier plusieurs conditions dans la clause WHERE afin de limiter le nombre d'enregistrements dans votre jeu d'enregistrements.

Les conditions sont combinées à l'aide des opérateurs logiques AND, OR et NOT.

S'il faut que toutes les conditions soient vraies pour inclure un enregistrement dans le jeu d'enregistrements, utilisez l'opérateur AND :

WHERE Pays = 'Allemagne' AND Voiture = 'Ford'

S'il faut qu'une des conditions (au choix) soit vraie pour inclure un enregistrement dans le jeu d'enregistrements, utilisez l'opérateur OR :

WHERE Pays = 'Allemagne' OR Pays = 'Hongrie'

S'il faut qu'une des conditions soit vraie et qu'une autre soit fausse pour inclure un enregistrement dans le jeu d'enregistrements, utilisez l'opérateur NOT :

46 AFCI-NEWSOFT

Page 45: Support de cours Création de sites dynamiques PHP ...afci.fr/lespdfs/PHP2009.pdfDREAMWEAVER MX Sites dynamiques : PHP - MySQL Support de cours Création de sites dynamiques PHP -

DREAMWEAVER MX Sites dynamiques : PHP - MySQL

WHERE Pays = 'Allemagne' NOT Voiture = 'BMW'

Vous pouvez employer des parenthèses pour regrouper plusieurs clauses :

WHERE (Pays = 'Allemagne' AND DateDeNaissance < #1/1/70#) OR

Pays = 'Hongrie'

Spécification d'une plage de valeurs dans la clause WHERE :

Vous pouvez spécifier une plage de valeurs dans la clause WHERE afin de limiter le nombre d'enregistrements dans votre jeu d'enregistrements. La plage est définie à l'aide des mots-clés BETWEEN...AND.

Supposons, par exemple, que vous souhaitez inclure tous les employés nés entre le 1er janvier 1960 et le 31 décembre 1974.

Votre clause WHERE peut avoir la forme suivante :

WHERE DateDeNaissance BETWEEN #1/1/60# AND #12/31/74#

Tri des enregistrements :

Utilisez la clause ORDER BY pour trier les enregistrements de votre jeu d'enregistrements. Par exemple, supposons que vous vouliez trier les enregistrements par revenu des clients, en allant du moins élevé au plus élevé.

L'ordre des enregistrements dans l'instruction SQL sera alors le suivant :

SELECT Nom, Prénom, Revenus FROM Clients

ORDER BY Revenus

Par défaut, la clause ORDER BY trie les enregistrements dans l'ordre croissant (1,2,3... ou A, B, C...).

Si vous souhaitez les trier dans l'ordre décroissant (du revenu le plus élevé au moins élevé), utilisez le mot-clé DESC de la façon suivante :

ORDER BY Revenus DESC

AFCI-NEWSOFT 47