php et dreamweaver

PHP – MYSQL
avec
DREAMWEAVER
PHP - MySQL avec DreamWeaver
Sommaire
PRESENTATION du web .............................................................................................................. 6
1.1 les langages web ................................................................................................................ 6
1.1.1 HTML et Javascript ......................................................................................................................... 6
1.1.2 PHP ............................................................................................................................................... 6
Définition
.......................................................................................................................................... 6
Caractéristiques ............................................................................................................... 6
Avantages ........................................................................................................................ 7
1.2 L’architecture client/serveur ................................................................................................ 8
1.2.1
1.2.2
1.2.3
1.2.4
Le client ......................................................................................................................................... 8
Le(s) serveur(s) .............................................................................................................................. 8
Site statique ................................................................................................................................... 8
Site dynamique ............................................................................................................................... 9
Définition ........................................................................................................................ 9
Fonctionnement .............................................................................................................. 9
1.2.5 Exercice1 ....................................................................................................................................... 9
1.3 les plateformes de développement .................................................................................. 10
1.3.1 EasyPHP ....................................................................................................................................... 10
1.3.1.1 Téléchargement .................................................................................................. 10
1.3.1.2 Présentation ........................................................................................................ 10
1.3.1.3 L’arborescence ................................................................................................... 11
1.3.1.4 Lancement d’EasyPHP ....................................................................................... 11
1.3.2 Xampp ......................................................................................................................................... 11
1.3.2.1 Arborescence ...................................................................................................... 13
1.3.2.2 lancement ........................................................................................................... 13
1.3.3 Exercice2 ..................................................................................................................................... 14
la base de donnÉes mysql ......................................................................................................... 15
1.4 Les bases de données relationnelles ................................................................................... 15
1.4.1 Définitions .................................................................................................................................... 15
1.5 MySQL............................................................................................................................. 16
1.6 L'outil de modélisation dbdesigner .................................................................................... 16
1.7 Principes de base de la conception d’une base de données ................................................. 17
1.7.1 Exercice3 : conception d’une base de données. .............................................................................. 18
1.7.2 Exercice4 : exo_casting_etape1.doc .............................................................................................. 18
1.8 L’interface PhpMyAdmin .................................................................................................... 19
1.8.1 Exercice4 : création d’une base de données avec phpMyAdmin........................................................ 20
1.8.2 Insertion d'enregistrements avec phpMyadmin ............................................................................... 21
1.8.3 Sauvegarde et restauration dune BDD............................................................................................ 22
1.8.3.1 Sauvegarde ......................................................................................................... 22
1.8.3.2 Restauration ....................................................................................................... 25
1.8.3.3 Exercice 5 : ........................................................................................................ 25
1.9 Le langage de requête sql ................................................................................................. 26
Php ......................................................................................................................................... 28
1.10 Présentation ................................................................................................................... 28
1.11 Utilité de l’apprentissage du php ...................................................................................... 28
1.11.1 Le contenu rédactionnel .............................................................................................................. 28
1.11.2 La factorisation ........................................................................................................................... 28
1.11.3 Le MVC (modèle vue controleur) .................................................................................................. 29
1.12 notions de base du langage php ...................................................................................... 30
1.12.1
1.12.2
1.12.3
1.12.4
1.12.5
1.12.6
Les balises php ........................................................................................................................... 30
La fonction echo ......................................................................................................................... 30
Le séparateur d’instruction .......................................................................................................... 30
Les variables PHP ........................................................................................................................ 31
les constantes ............................................................................................................................. 31
L’opérateur de concaténation ....................................................................................................... 32
Page 2/134
PHP - MySQL avec DreamWeaver
1.12.7 Les tableaux ............................................................................................................................... 32
1.12.8 Les Fonctions.............................................................................................................................. 33
1.12.9 Inclure un fichier - les fonctions include () et require_once () ....................................................... 33
1.13 Factoriser ....................................................................................................................... 34
1.13.1
1.13.2
1.13.3
1.13.4
1.13.5
1.13.6
1.13.7
1.13.8
Objectif ...................................................................................................................................... 34
Ecrans ........................................................................................................................................ 34
Démarche................................................................................................................................... 36
Le modèle html ........................................................................................................................... 36
Les fichiers .inc.php .................................................................................................................... 37
Le modèle PHP ........................................................................................................................... 39
La page banderillas.php .............................................................................................................. 40
La page sommaireDesserts.php ................................................................................................... 40
Chapitre 2 PHP et Dreamweaver ............................................................................................... 41
2.1 Le Principe ....................................................................................................................... 41
2.2 création du dossier racine du site ....................................................................................... 41
2.3 Création du site sous dreamweaver ................................................................................... 41
2.4 Choix du serveur d’evaluation ............................................................................................ 43
CREATION DE PAGES DYNAMIQUES .......................................................................................... 45
2.5 Principe général .............................................................................................................. 46
2.6 Connexion à la base de données ........................................................................................ 46
2.7 Fonctionnalités d'un site dynamique .................................................................................. 49
2.8 Afficher une table MySQL dans une table HTML .................................................................. 50
2.8.1 Ecran à réaliser............................................................................................................................. 50
2.8.2 Démarche .................................................................................................................................... 51
2.9 Afficher quelques champs d'une table ............................................................................... 52
2.9.1 Ecran à réaliser............................................................................................................................. 52
2.9.2 Démarche .................................................................................................................................... 53
2.10 Trier .............................................................................................................................. 53
2.10.1 Démarche................................................................................................................................... 53
2.11 Afficher le contenu d’une table dans une liste HTMl .......................................................... 53
2.11.1 Objectif et écran à réaliser........................................................................................................... 53
2.11.2 Démarche................................................................................................................................... 53
2.12 Région répétée ............................................................................................................... 54
2.13 Afficher une photo en fonction d’un enregistrement ........................................................... 56
2.14 Afficher la photo et l'url correspondant à l'enregistrement courant ...................................... 58
2.14.1 Objectif : l'écran à réaliser ........................................................................................................... 58
2.14.2 Démarche................................................................................................................................... 59
2.15 la liste dynamique ........................................................................................................... 60
2.15.1
2.15.2
2.15.3
2.15.4
Petit rappel : la Liste menu html .................................................................................................. 60
Et la liste dynamique , qu’est-ce que c’est ? .................................................................................. 61
Ecrans ........................................................................................................................................ 61
Démarche................................................................................................................................... 62
2.15.4.1 Le premier PHP : liste_auteurs.php.................................................................. 62
2.15.4.2 Le deuxième document PHP : un_auteur.php .................................................. 64
2.16 Afficher une liste de choix et un tableau dynamique dans la même fenêtre .......................... 64
2.16.1 Objectif ...................................................................................................................................... 64
2.16.2 Ecran ......................................................................................................................................... 64
2.16.3 Démarche................................................................................................................................... 65
Première étape ............................................................................................................... 66
Deuxième étape ............................................................................................................. 66
2.17 Insertion d'un enregistrement .......................................................................................... 67
2.17.1 L'écran à réaliser......................................................................................................................... 67
2.17.2 La démarche............................................................................................................................... 67
2.18 L'ajout de l’abonné avec l'assistant et une liste .................................................................. 68
2.18.1 Principe ..................................................................................................................................... 68
2.18.2 Objectif et écran à réaliser........................................................................................................... 68
2.18.3 Démarche................................................................................................................................... 69
La liste .......................................................................................................................... 69
Lancer l'Assistant de formulaire d'insertion d'enregistrement ...................................... 69
2.19 La suppression d'un enregistrement ................................................................................. 70
2.19.1 Objectif et écrans........................................................................................................................ 70
Page 3/134
PHP - MySQL avec DreamWeaver
2.19.2 Démarche................................................................................................................................... 71
Le document HTML...................................................................................................... 71
Le document PHP.......................................................................................................... 71
2.20 Suppression à partir d'une liste ........................................................................................ 72
2.20.1 Objectif et écrans à réaliser ......................................................................................................... 72
2.20.2 Démarche................................................................................................................................... 73
2.21 Suppression à partir d’un tableau dynamique ................................................................... 74
2.21.1 Objectif et écrans à réaliser ......................................................................................................... 74
2.22 La modification d'un enregistrement ................................................................................. 76
2.22.1 Objectif et démarche ................................................................................................................... 76
VISUALISATIONS AVANCEES … ................................................................................................. 78
2.23 Encore un peu de SQL..................................................................................................... 78
2.24 recherche à partir d’un champs d’insertion : filtrer ............................................................. 79
2.24.1
2.24.2
2.24.3
2.24.4
Principe : notion de Filtre ............................................................................................................ 79
Objectif et démarche ................................................................................................................... 79
La création du formulaire HTML ................................................................................................... 80
La création du tableau dynamique ............................................................................................... 82
2.25.1
2.25.2
2.25.3
2.25.4
2.25.5
Objectif et écran ......................................................................................................................... 83
Démarche................................................................................................................................... 84
Script ......................................................................................................................................... 85
En plus !!! .................................................................................................................................. 87
Un peu plus encore ..................................................................................................................... 88
2.25 La pagination ................................................................................................................. 83
Navigation. .................................................................................................................... 88
Etat de la navigation. ..................................................................................................... 88
Affichage conditionnel des éléments de navigation. ..................................................... 89
2.26 Visualisation de données provenant de plusieurs tables (Jointure) ....................................... 90
2.26.1 Encore un peu de SQL - Les jointures ......................................................................................... 90
2.26.1.1 Rappel............................................................................................................... 90
2.26.1.2 Lire dans plusieurs tables ................................................................................. 90
2.26.1.3 Syntaxe 1 ......................................................................................................... 90
2.26.1.4 Syntaxe 2 .......................................................................................................... 90
2.26.2 Objectif ...................................................................................................................................... 91
2.26.3 Ecran à réaliser ........................................................................................................................... 91
2.26.4 Jeu d'enregistrements avancé. ..................................................................................................... 92
2.27 Recherches multicritères ................................................................................................ 93
2.27.1 Objectif ...................................................................................................................................... 93
2.27.2 Ecrans ........................................................................................................................................ 93
2.27.3 Démarche................................................................................................................................... 94
2.28 Modifier un jeu d’enregistrements .................................................................................... 95
l'AUTHENTIFICATION ............................................................................................................... 97
2.29 Connexion et Authentification de l'utilisateur ..................................................................... 97
2.29.1 Objectif et Ecrans à réaliser ........................................................................................................ 97
2.29.2 Démarche................................................................................................................................... 97
2.30 Déconnexion .................................................................................................................. 99
2.31 Restreindre l'accès à une page en fonction de la connexion (On/Off)..................................100
2.31.1 Objectif et écrans...................................................................................................................... 100
2.31.2 Démarche................................................................................................................................. 101
2.32 Restreindre l'accès à une page en fonction de la qualité de l'utilisateur ...............................102
2.32.1 Objectif .................................................................................................................................... 102
2.32.2 Démarche................................................................................................................................. 103
2.33 Vérifier le nom d'un nouvel utilisateur ..............................................................................105
2.33.1 Objectif et écrans...................................................................................................................... 105
2.33.2 Démarche................................................................................................................................. 105
aNNEXES ................................................................................................................................106
2.34 Jeux de caractères .........................................................................................................106
2.34.1 Présentation ............................................................................................................................. 106
2.34.2 PHP.......................................................................................................................................... 106
2.34.3 MySQL et PHP........................................................................................................................... 108
2.35 Uploader un fichier ........................................................................................................109
Page 4/134
PHP - MySQL avec DreamWeaver
2.35.1 Objectif et écrans à réaliser ....................................................................................................... 109
2.35.2 Démarche................................................................................................................................. 115
2.36 Ajout d'un abonne avec des contrôles de saisie ................................................................118
2.37 Envoyer un mail ............................................................................................................119
2.37.1 Généralités ............................................................................................................................... 119
2.37.2 Envoi d'un mail de texte ............................................................................................................ 119
Objectif ........................................................................................................................ 119
Fonction utilisée .......................................................................................................... 119
Script ........................................................................................................................... 119
Le mail......................................................................................................................... 120
2.37.3 Envoyer un mail à partir d’un formulaire ..................................................................................... 121
Le formulaire de contact ............................................................................................. 121
2.37.4 Envoyer un mail avec une pièce jointe........................................................................................ 121
Objectif ........................................................................................................................ 121
Le mail......................................................................................................................... 121
Script ........................................................................................................................... 121
2.37.5 Mails et BD. .............................................................................................................................. 123
Objectif ........................................................................................................................ 123
Script ........................................................................................................................... 123
2.38 Gestion des cookies .......................................................................................................124
2.38.1
2.38.2
2.38.3
2.38.4
Définition ................................................................................................................................. 124
Syntaxe .................................................................................................................................... 124
Exemples.................................................................................................................................. 124
Exemple dynamique .................................................................................................................. 125
Ecrans .......................................................................................................................... 125
Les scripts .................................................................................................................... 126
2.39 Gestion des sessions ......................................................................................................127
2.39.1 Définition ................................................................................................................................. 127
2.39.2 Syntaxe .................................................................................................................................... 127
2.39.3 Exemple dynamique .................................................................................................................. 128
Ecrans .......................................................................................................................... 128
Scripts .......................................................................................................................... 129
2.40 Gestion de panier ..........................................................................................................131
2.40.1 Objectif .................................................................................................................................... 131
2.40.2 Ecrans ...................................................................................................................................... 131
2.40.3 Démarche................................................................................................................................. 132
2.41 Mesures de sécurité .......................................................................................................133
2.41.1 Gérer les mots de passe serveur ................................................................................................ 133
2.41.2 Protéger vos dossiers ................................................................................................................ 133
Contre le listage du contenu d'un dossier. ................................................................... 133
Contre l'accès aux utilisateurs non habilités................................................................ 133
2.41.3 Protéger l'accès à la base de données ........................................................................................ 134
Nouveaux utilisateurs sur le serveur. .......................................................................... 134
Authentifiez les utilisateurs ......................................................................................... 134
Chiffrez les mots de passe. .......................................................................................... 135
2.41.4 Masquer PHP ............................................................................................................................ 136
2.42 SCRIPT ........................................................................................................................136
2.42.1 convertir jj/mm/aaaa en aaaa-mm-jj ......................................................................................... 136
2.42.2 convertir aaaa-mm-jj en jj-mm-aaaa .......................................................................................... 136
Page 5/134
PHP - MySQL avec DreamWeaver
PRESENTATION DU WEB
1.1
LES LANGAGES WEB
1.1.1 HTML et Javascript
HTML est un langage de description (d’affichage). Il est interprété par le navigateur de l’internaute
(ie, firefox, safari …). Il s’exécute donc côté client.
Javascript est un petit programme qui est incorporé au code HTML. Il permet d’agrémenter
la présentation et l’interactivité des pages web. Il est interprété par le navigateur de
l’internaute (côté client).
1.1.2 PHP
Figure 1. logo PHP
Définition
PHP est un langage de programmation exécuté par le serveur web. Il génère du code HTML.
Personal Home Page nommé par la suite PHP HyperText Preprocessor (Récursivité
du nom) , PHP a été créé par Rasmus Lerdorf en 1993.
Caractéristiques
PHP permet d’afficher des pages web dynamiques – ce sont des pages dont le
contenu varie en fonction de la demande de l’internaute.
Exemple : http://www.fnac.com . Ce site contient de multiples informations stockées dans
une base de données et régulièrement mise à jour. Quand vous effectuez une recherche vous
obtenez une page dont le contenu varie en fonction de la recherche que vous avez effectué :
PHP peut gérer des contenus de formulaires WEB, des graphiques, des cookies et des
sessions, manipuler des fichiers texte ou autre, accéder à des bases de données.
Page 6/134
PHP - MySQL avec DreamWeaver
Il peut aussi générer du texte, du graphisme, du Flash, du XML, du PDF à la volée et
l'envoyer au navigateur.
PHP fonctionne sur de nombreux systèmes d'exploitation : Linux, Unix, Microsoft, Mac-OS,
…
Majoritairement installé sur serveur Apache, PHP fonctionne sur les autres principaux
serveurs du marché (IIS, PWS, Netscape, iPlanetServer …)
PHP est orienté objet depuis la version 4.
Avantages
Gratuit,
Fait pour le Web,
Facile à apprendre,
Portable,
Haute performance,
il existe de nombreux sites de documentation et d’entraides(mettre note)
Page 7/134
PHP - MySQL avec DreamWeaver
1.2 L’ARCHITECTURE CLIENT/SERVEUR
1.2.1 Le client
Le client, c’est vous, l’internaute ou plus exactement le navigateur de votre ordinateur
1.2.2
Le(s) serveur(s)
Le serveur est un ordinateur puissant géré par un système d'exploitation (Windows :
Windows Server 2003, Unix, Linux, Mac Os X Server), qui héberge un serveur web (Apache,
IIS, …).
Le serveur doit supporter un langage de programmation (PHP, ASP, ASP .NET, JSP, …).
Une autre machine doit héberger un serveur de Base des Données (MySQL, Oracle, SQL
Server, Sybase, …).
1.2.3
Site statique
Figure 2. architecture client/serveur d'un site statique
Lorsque l’internaute saisit dans la barre d'adresses de son navigateur une URL du type
http://www.serveur.com/index.html dans un premier temps le serveur est recherché
(www.serveur.com) selon un certain protocole (http://) puis la page demandée, dans le
chemin, est recherchée sur le serveur (index.html).
Si la page est trouvée, elle est envoyée au navigateur du client qui l'interprète et qui l'affiche,
autrement une page "404" est affichée.
Les extensions sont HTM ou HTML pour les pages HTML.
Page 8/134
PHP - MySQL avec DreamWeaver
1.2.4 Site dynamique
Définition
Dans un site dynamique le contenu est créé à la volée c'est-à-dire à la demande de
l’internaute
Fonctionnement
Figure 3. architecture client/serveur site dynamique
La saisie de l'URL sera du type http://www.serveur/php/page.php
La demande est envoyée sur l'Internet ou l'Intranet et est envoyé au serveur auquel elle
s'adresse.
Le serveur cherche la page demandée, exécute le code PHP qui produit du code HTML et
l'envoie au client.
Lorsque vous affichez la source via le navigateur d'une page PHP vous ne visualisez pas le
code PHP mais seulement le code HTML généré par l'interpréteur PHP.
1.2.5 Exercice1
Récupérer les fichiers exemple_html.html, exemple_javascript.html et exemple_php.php
Ouvrez-les avec votre navigateur Firefox
Que remarquez-vous ?
Page 9/134
PHP - MySQL avec DreamWeaver
1.3 LES PLATEFORMES DE DEVELOPPEMENT
Pour tester des pages PHP vous avez besoin au minimum d’un serveur Apache et d’un
interpréteur de script PHP assorti le plus souvent à une base de données MySQL.
Cet environnement est fourni en distant par tous les hébergeurs de site.
Cependant en phase de développement il est peu pratique de tester en distant - cela
nécessite de systématiquement transférer les pages via FTP puis de se connecter au site pour
les tester, et de recommencer cette opération autant de fois que nécessaire.
Il est donc souhaitable (voir indispensable !) d’installer sur votre poste de travail un
environnement de test simulant votre serveur distant : un serveur local.
Le serveur local crée une nom de domaine virtuel accessible à l'adresse http://localhost/
1.3.1 EasyPHP
1.3.1.1 Téléchargement
http://www.easyphp.org/index.php
1.3.1.2 Présentation
EasyPHP est une plateforme de développement Web de type WAMP (Windows Apache MySQL
Php), permettant de faire fonctionner localement (sans se connecter à un serveur externe) des scripts
PHP.
Page 10/134
PHP - MySQL avec DreamWeaver
C’est un environnement comprenant un serveur web Apache, un serveur de bases de données MySQL,
un interpréteur de script PHP, ainsi qu'une interface d’administration SQL ( PhpMyAdmin).
Il dispose d'une interface d'administration permettant de gérer les alias (dossiers virtuels disponibles
sous Apache), ainsi que le démarrage/arrêt des serveurs.
Il permet donc d'installer en une seule fois tout le nécessaire au développement local du PHP.
Par défaut, le serveur Apache crée un nom de domaine virtuel (en local) http://127.0.0.1 ou
http://localhost.
Quand on choisit "Web local" dans le menu d'EasyPHP, le navigateur s'ouvre sur l’ URL
http://localhost et affiche la page index.php de ce site qui correspond en fait au contenu du dossier
www d'EasyPHP.
EasyPHP peut être utilisé comme une application portable, c’est-à-dire lancé sur une
clé USB.
Pour mac la plateforme de développement est mamp
Dans ce cas le domaine virtuel est http://localhost:8888 et les pages doivent être placées dans
le dossier htdocs.
1.3.1.3 L’arborescence
Figure 4. arborescence EasyPHP
Le dossier www est la racine du site localhost
Le dossier mysql contient le serveur MySQL
Le dossier apache contient le serveur Apache
Le dossier php. Contient l’interpréteur de script PHP
1.3.1.4 Lancement d’EasyPHP
Figure 5. raccourci de lancement de EasyPHP 1.8
Avant tout test sur un fichier php il faut lancer le serveur local
Lancer Easyphp grâce au raccourci présent sur votre bureau ou dans votre barre de lancement
rapide
1.3.2 Xampp
Page 11/134
PHP - MySQL avec DreamWeaver
Cette plateforme de développement existe pour plusieurs sytème d’exploitation.
Comme pour Easyphp , le serveur Apache crée un domaine virtuel http://localhost
REMARQUE :
Apache s’installe sur le port 80.
Si modification nécessaire aller dans apache/conf/http.conf et remplacer 80 par 8085
Page 12/134
PHP - MySQL avec DreamWeaver
1.3.2.1 Arborescence
La racine du domaine localhost se trouve dans le dossier htdocs
1.3.2.2 lancement
Le lancement de l’exécutable .xampp-control.exe lance l’application et ouvre le centre de
contrôle universel qui est le panneau de contrôle XAMPP
Avant tout test sur un fichier php il faut lancer le serveur local
Page 13/134
PHP - MySQL avec DreamWeaver
1.3.3 Exercice2
1. Lancer Easyphp ou Xampp
2. Reprenez le fichier ‘exemple_php.php’ vu précédemment.et glissez le sous la racine
www de Easyphp ou dans le dossier htdocs de xampp
3. tapez l’url http://localhost/exemple_php.php dans votre navigateur.
4. Que remarquez-vous ?
5. Regardez le code source.
Page 14/134
PHP - MySQL avec DreamWeaver
LA BASE DE DONNÉES MYSQL
1.4 LES BASES DE DONNEES RELATIONNELLES
1.4.1
Définitions
Une Base de Données (BDD) est une grande quantité de données, centralisées ou non,
pour les besoins d'une ou plusieurs applications, interrogeables et modifiables par un groupe
d'utilisateurs travaillant en parallèle.
Le Système de Gestion de Bases de Données (SGBD), est le logiciel qui gère la BDD. Il offre
plusieurs fonctionnalités : accès des données, gestion des mises à jour, contrôle de la sécurité
d’accès…
Dans une base de données relationnelle, les données sont organisées (rangées) en tables, logiquement
liées entre elles (mise en relation). C’est la structure la plus répandue aujourd’hui.
Les tables sont composées de champs (colonnes) .
Chaque champ d'une table est défini par un nom .
Quand on crée un champ on doit dire quel types de donnée il est destiné à accueillir .
Chaque table contient un champ qui permet d’identifier de façon unique chaque enregistrement
d’une table : C'est la clé primaire . Ce champ est donc obligatoire et unique pour tous les
enregistrements.
Chaque table contient donc une seule et unique clé primaire.
Elle est souvent de type numérique et auto-incrément.
Exemple : schéma de la base de données contact
Figure 6.schéma bdd 'Arnaud' établi avec l’outil DBDesigner
Page 15/134
PHP - MySQL avec DreamWeaver
1.5 MYSQL
Figure 7. logo de MySQL
MySQL est l'œuvre d'une société suédoise, MySQL AB, fondée par David Axmark, Allan
Larsson et Michael Widenius.
Le nom MySQL vient de leur habitude à préfixer par « My » une grande partie de leurs
dossiers, bibliothèques et outils. La fille de Michael Widenius était surnommée « My ».
Le nom du logo de MySQL (le dauphin) Sakila, a été choisi par les créateurs de MySQL sur
la base d'un concours.
La première version de MySQL est apparue en 1995.
MySQL est devenue la base de données open source la plus populaire au monde grâce à sa
haute performance, sa fiabilité et sa simplicité d'utilisation..
Le langage utilisé pour interroger la base de données s’appelle le SQL.
1.6 L'OUTIL DE MODELISATION DBDESIGNER
DBDESIGNER est un logiciel agréable et facile d'utilisation permettant de dessiner un
modèle de données et de l’implémenter dans une bdd existante.
Il a l'avantage de proposer l'exportation du modèle de la BDD sous forme d'image
Il est téléchargeable sur http://www.fabforce.net/dbdesigner4/downloads.php
pour mac il faut télécharger DBVisualizer sur http://www.dbvis.com/
Page 16/134
PHP - MySQL avec DreamWeaver
1.7
PRINCIPES DE BASE DE LA CONCEPTION D’UNE BASE DE
DONNEES
La conception d’une base de données est un sujet complexe.
Il est toutefois possible dans des cas simples d’établir le schéma d’une BDD en respectant
quelques principes de bases:
•
analyser les fonctionnalités de (s) application(s) qui utiliseront la
BDD
•
chaque objet fonctionnel doit être stocké dans une table
•
les caractéristiques de chaque objet fonctionnel ou physique, doivent
être stockées dans des colonnes (champs)
•
Une information ne doit être stockée qu’une seule fois : il faut éviter
les redondances
•
chaque table doit avoir une colonne obligatoire qui l’identifie de
manière unique : sa clé primaire
•
il existe 2 manières de mettre en relation deux tables :
o
La clé étrangère : le contenu de la colonne
provient de la clé primaire d’une autre table
(relation de 1 à n)
o
La table de liaison : elle sert à mettre en relation
deux tables (relation de n à m)
Page 17/134
PHP - MySQL avec DreamWeaver
Exemple :
Une école primaire souhaite créer une application intranet stockant des informations sur les
continents, les pays et les villes, qui pourront servir en cours de géographie aux enseignants
de l’école.
Cette application ne sera accessible qu’aux enseignants de l’école.
schéma de la base de données géographie
Figure 8.schéma bdd 'geographie' établi avec l’outil DBDesigner
1.7.1 Exercice3 : conception d’une base de données.
Créez le schéma de la base de données du site de La bibliothèque municipale.de la ville de Plaisir :
Ce site offre les fonctionnalités suivantes
− Abonnement en ligne
− Modification des cordonnées d’un abonné par lui-même après qu’il se soit identifié par
son numéro d’abonné et son mot de passe
− Consultation en ligne (sur le site de la ville) du catalogue des livres avec leur disponibilité
− Recherche sur le titre d’un livre
− Recherche d’un livre par catégorie
− Rechercher tous les livres d’un auteur donné
(Correction dans fichier schema_biblio.doc)
1.7.2 Exercice4 : exo_casting_etape1.doc
Page 18/134
PHP - MySQL avec DreamWeaver
1.8
L’INTERFACE PHPMYADMIN
PhpMyAdmin est une interface web de gestion des bases de données MySQL .
Réalisée en langage PHP, elle est conviviale et gratuite .
La quasi-totalité des hébergeurs permettent d'utiliser PhpMyAdmin.
PhpMyAdmin est livrée avec les plateformes de développement local (EasyPHP, Xampp).
Figure 9. page d'accueil de phpMyAdmin
Page 19/134
PHP - MySQL avec DreamWeaver
1.8.1 Exercice4 : création d’une base de données avec phpMyAdmin
Créons la bdd dont nous avons établi le schéma précédemment.
cliquez sur le menu Administration d’EasyPHP
Cliquez sur Mysql administration
Page 20/134
PHP - MySQL avec DreamWeaver
On arrive sur l’interface de PhpMyAdmin
Créez la base de donnée ‘bibliotheque’. L’interclassement est
simplement le jeux de caractère utilisé. Nous prendrons le type
utf8_bin qui est international.
Créez les tables figurant dans le schéma établi dans l’exercice3 en
vous aidant du contenu du fichier ‘types_donnees_base_Mysql.doc’
pour choisir le type des champs.
1.8.2 Insertion d'enregistrements avec phpMyadmin
Dans le panneau latéral gauche, positionnez-vous sur la table désirée et cliquez sur l'onglet
Insérer
Page 21/134
PHP - MySQL avec DreamWeaver
1.8.3
Sauvegarde et restauration dune BDD
1.8.3.1 Sauvegarde
Sélectionnez la base que vous souhaitez sauvegarder si vous en avez plusieurs.
Cliquer sur l'onglet exporter et vous devriez obtenir l'écran ci-dessous
Page 22/134
PHP - MySQL avec DreamWeaver
Vous avez alors un écran composé de 3 ‘cadres :
Le cadre exporter
C'est ici que vous allez déterminez les tables ` sauvegarder, cliquer sur le lien tout
sélectionner pour sélectionner en un seul clic toutes les tables. Pour une sélection discontinue,
c'est comme dans Windows, conservez la touche Ctrl enfoncée, et avec un clic gauche,
sélectionner les tables souhaitées.
Sous la liste des tables vous trouverez différentes options vous permettant de définir un
format d'export..
Par défaut c'est l'option SQL qui est cochée.
Elle a pour conséquence de générer un fichier ‘nomdela base.sql’ au format texte facilement
lisible avec un simple éditeur de texte.
Page 23/134
PHP - MySQL avec DreamWeaver
Le cadre options SQL
Laisser les options cochées par défaut afin de transmettre la structure et les données de la base
Le cadre transmettre
.
Cochez la case ‘Transmettre’ afin que la sauvegarde génère un fichier .sql qui servira à la
restauration de la BDD.
Dans ce cadre on peut même créer un format compressé pour les BDD volumineuses
Page 24/134
PHP - MySQL avec DreamWeaver
1.8.3.2 Restauration
1. créer la bdd avec le même nom que la bdd restaurée.
2. cliquez sur l’onglet importer du panneau de gauche
3. cliquez sur importez fichier
4. sélectionnez le fichier .sql de sauvegarde
5. cliquez sur exécuter
1.8.3.3 Exercice 5 :
Créer la base de données ‘geographie ‘ à partir du fichier geographie.sql qui se trouve
dans le dossier annexe.
Page 25/134
PHP - MySQL avec DreamWeaver
1.9 LE LANGAGE DE REQUETE SQL
Lors de la sauvegarde de votre BDD vous avez pu constater que MySQL créait un script
contenant des ordres SQL de création de table et de création de données.
En effet, les MySQL ne connait qu'un seul langage : le SQL.
Ci-après un petit tableau récapitulatif des principaux ordres SQL
Requête SQL
DROP DATABASE
maBase;
IF EXISTS
Fonctionnalité
suppression de la base de
donnée nommée maBase si elle
existe
CREATE database maBase
DEFAULT charset utf8 COLLATE
utf8_general_ci;
Création d’une base de
données nommée maBase avec le
jeux de caractère utf8 par
défaut
USE maBase;
Sélectionne la base de
données maBase
CREATE TABLE maTable (id
smallint(2) primary key
auto_increment, nom
varchar(64), age int(4) );
Création d’une table nommée
maTable.
Le reste de la requête contenu entre parenthèsesdéfinit les différents champs
de la table.
INSERT INTO maTable (nom,age) Insertion d’un enregistrement
VALUES ('DUPONT',22);
dans la table maTable.
La valeur des champs doit
être délimitée par des
s’il sont numériques.
'
sauf
INSERT INTO maTable( nom, age Insertion de plusieurs
)
enregistrements dans la table
VALUES ('DURAND', 20),
‘maTable’
('MONTOUTE', 26), ('RUBY',
55) ;
SELECT * FROM maTable ;
Lecture de tous les
enregistrements de la table
‘maTable’
SELECT nom FROM maTable ;
Lecture du champ ‘nom’ de
tous les enregistrements de
la table ‘maTable’
Page 26/134
PHP - MySQL avec DreamWeaver
Requête SQL
SELECT nom,age FROM maTable;
Fonctionnalité
Lecture des champ ‘nom’ et
‘age’ de tous les
enregistrements de la table
‘maTable’
SELECT nom FROM maTable ORDER Lecture du champ ‘nom’ de
BY age;
tous les enregistrements de
la table ‘maTable’ trié par
age croissant
Update maTable set
nom=’odile’ where id=10;
Mise à jour du champ nom de
la table maTable pour
l’enregistrement dont l’id=10
DELETE FROM maTable WHERE nom Suppression de
l’enregistrement dont le nom
= 'DUPONT';
est DUPONT dans la table
‘maTable’
DELETE FROM maTable ;
Suppression de tous les
enregistrements de la table
‘maTable’
DROP maTable;
Suppression de la table
‘maTable’
Page 27/134
PHP - MySQL avec DreamWeaver
Requête SQL
Fonctionnalité
Exercice6 :
Créez en sql la bdd recette dont le schéma se trouve dans le fichier recette.png en vous
aidant du fichier type_donnees _Mysql.doc pour le choix du type des données.
Page 28/134
PHP - MySQL avec DreamWeaver
PHP
1.10 PRESENTATION
Php est un langage qui s'exécute côté serveur.
Un fichier qui contient du php a une extension en .php.
Lorsqu'un fichier est demandé au serveur Web, le code PHP inclus dans la page est exécuté
sur le serveur. Le résultat HTML de cette exécution est inséré dans la page à la place du
code PHP et la page est renvoyée au navigateur
1.11 UTILITE DE L’APPRENTISSAGE DU PHP
1.11.1 Le contenu rédactionnel
La majorité des sites web comportent du texte qui change régulièrement.
Ce texte écrit par des rédacteurs, est intégré dans que base de données et affiché dans des
pages php : on parle alors de pages dynamiques .
exemple :http://www.lafourchette.com , http://www.darty.com , etc...
Un webdesigner, dans sa pratique quotidienne, sera donc amené à manipuler des pages
contenant des lignes php et devra être en mesure de comprendre à quoi elles correspondent.
1.11.2 La factorisation
Figure 10. organisation de la page d'1 site
Sur un site, les pages ont généralement en commun, l’entête, le menu et le pied.
Afin de limiter les risques d’erreur et de faciliter les mises à jour de ces éléments, on les écrit
dans des fichiers à part, puis on les appelle dans les pages par la fonction php ‘include()’ ou
‘require_once()’.
Page 29/134
PHP - MySQL avec DreamWeaver
Figure 11. arborescence du site_librairie
Le dossier ‘inc’ contient tous les fichiers qui seront appelé par inclusion. Ces fichiers ont été établi à partir du
gabarit.html qui se trouve dans le dossier ‘html’
1.11.3 Le MVC (modèle vue controleur)
Sans aucune structure la navigation dans un site peut facilement devenir anarchique.
Figure 12. navigation sans organisation
Pour plusieurs raisons il est devenu commun de centraliser tous les échanges entre clients et
serveur sur une seule page appelée « contrôleur ».
Figure 13. navigation centralisée.
Le contrôleur doit donc recevoir toutes les requêtes de la part du client et, en fonction de
paramètres déterminés, décider de l'action à réaliser. Ceci se fait de transparente pour le client
(l’internaute).
Page 30/134
PHP - MySQL avec DreamWeaver
Poussant un peu plus loin ce système, et afin d’améliorer l’organisation du travail de
production de site web, on en est venu à appliquer le système MVC : model vue contrôleur.
Dans cette organisation, les scripts sont regroupés en fonction de leurs fonctionnalités :
Les modèles sont des scripts contenant les requêtes vers la BDD
Les vues, sont les scripts contenant les éléments nécessaires à l’affichage de la page
Le contrôleur centralise la demande de l’internaute et crée dynamiquement la page
demandée à partir du modèle, et de la vue adéquate.
Figure 14. schéma du MVC
1.12 NOTIONS DE BASE DU LANGAGE PHP
php est un langage : il a donc une syntaxe et un vocabulaire.
1.12.1 Les balises php
Les balises ouvrantes et fermantes php sont < ?php et ?>
1.12.2 La fonction echo
La fonction echo est la fonction de base de php car elle permet d’afficher une ou plusieurs
chaine de caractères.
<?php
echo "Bonjour Odile Rhino ";
?>
Ce script affiche :
1.12.3
Le séparateur d’instruction
Toutes les instructions PHP doivent se terminer par un point-virgule.
Si le point-virgule est omis une erreur « parse error » est générée.
Page 31/134
PHP - MySQL avec DreamWeaver
Exemple :
<?php
echo "Bonjour "
echo "Odile ! ";
?>
Résultat :
1.12.4 Les variables PHP
Une variable est une zone mémoire identifiée par un nom dont la valeur peut varier au
cours d’un programme.
En PHP le nom des variables commence toujours par le préfixe $.
Exemple :
<?php
$nom= "Odile" ;
echo $nom ;
?>
1.12.5 les constantes
Une constante est une zone mémoire identifiée par un nom dont la valeur est définie lors
de la création de la constante et demeure invariante tout au long du script PHP.
Par convention on écrit les constantes en majuscules.
<?php
Page 32/134
PHP - MySQL avec DreamWeaver
define ( 'FORMATEUR', 'Odile Rhino') ;
echo '<strong>formatrice: ','FORMATEUR,'</strong>' ;
?>
1.12.6 L’opérateur de concaténation
La concaténation est le fait de “coller” bout à bout deux chaînes de caractères, variables,
constantes ou fonctions.
En php l’opérateur de concaténation est le point
.
Exemple :
<?php
$promotion="Cavalli";
$section="Infographiste Multimédia ";
define ( 'FORMATEUR', 'Odile Rhino') ;
echo "$promotion - $section,<br><strong>formateur :".FORMATEUR.'</strong>' ;
?>
Résultat
1.12.7 Les tableaux
En PHP, un tableau est liste ordonnée d’éléments constitués de couples clé/valeur.
Par défaut la clé est numérique et commence à la valeur 0.
Toutefois il est possible de nommer les clés : on dit alors que le tableau est associatif.
<?php
$tab=array('pomme','prune','poire');
$tab2=array(
'couleur'=>'jaune',
Page 33/134
PHP - MySQL avec DreamWeaver
'forme'=>'rond'
);
print_r($tab);echo "<br>";
print_r($tab2);
?>
pour accéder à une valeur donnée d'un tableau il faut utiliser la notation avec les crochets comme cidessous.
<?php
echo $tab[0]; // affiche le contenu de la première case du tableau $tab
echo $tab2['couleur']; // affiche le contenu de la case nommée couleur du tableau $tab2
?>
1.12.8 Les Fonctions
Une fonction est un ensemble d’instruction que l’on peut réutiliser.
Pour créer une fonction il faut d’abord la déclarer avec le mot clé function.
Syntaxe :
function nomDeLaFonction ($variable1,$variable2) {
Instruction1 ;
Instuction2 ;
return $valeur ;
}
Exemple :
<?php
function dateFR_EN ($date){
$d=explode('/', $date);
if(count($d) > 3) $date=$d[2].'-'.$d[1].'-'.$d[0];
return $date;
}?>
Pour utiliser une fonction il suffit de l’appeler.
Syntaxe :
$retour = nomDeLaFonction($parametre1, $parametre2) ;
Exemple :
<?php
$val="13/07/2013";
echo dateFR_EN ($val);
}?>
1.12.9 Inclure un fichier - les fonctions include () et require_once ()
Les fonctions include (), include_once() et require(), require_once () permettent
d’inclure un fichier dans un script php
Exemple :
−
Le fichier inclus.inc.php contient
<h1>Je suis un titre provenant du fichier inclus.inc.php</h1>
Page 34/134
PHP - MySQL avec DreamWeaver
−
Le fichier script.php contient
<?php
echo "inclusion de fichier<br/>";
require_once('inclus.inc.php');
?>
−
Résultat
L’extension du fichier à inclure est complètement libre 1.
Les fonctions include() , include_once() , require() et require_once() se comportent comme des
copier/coller
(voir server side include de dreamweaver)
1.13 FACTORISER
1.13.1 Objectif
Mettre les parties communes à toutes les pages (header, nav,footer….) dans des fichiers
indépendants afin de faciliter leur modification future.
Si le fichier inclus contient des liens, les chemins doivent être écrits en absolu.
1.13.2 Ecrans
1
On a coutume d’utiliser les extensions .inc et .inc.php. La deuxième offre l’avantage de ne pouvoir être
ouverte par un navigateur et donc de protéger les paramètres confidentiels qui pourraient s’y trouver.
Page 35/134
PHP - MySQL avec DreamWeaver
Recette Baba au Rhum
Recette Banderillas
Page 36/134
PHP - MySQL avec DreamWeaver
1.13.3 Démarche
Créez autant de gabarit HTML qu’il y a de designs différents dans votre site.
Découpez les parties communes aux pages du site, en petits fichiers .inc.php 2 que vous
mettrez dans un dossier inc :
Ici nous ferons les fichiers "header.inc.php", "nav.inc.php" et footer.inc.php".
Créez un modèle PHP contenant les appels aux fichiers .inc.php.
Créez les documents PHP ( Ajout, Lister, Suppression, …) basés sur le modèle.
1.13.4 Le modèle html
gabarit.html (à mettre dans le dossier ressource)
<!DOCTYPE html ">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>gabarit</title>
<link href="../css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="conteneur"> <!-- conteneur de la page -->
<header><h1>La Cuisine Facile</h1></header>
<nav id="menu"> <!-- début du menu horizontal -->
<a
<a
<a
<a
<a
<a
<a
<a
href="../index.php">Accueil</a>
href="sommaireRecettes.php">Toutes les recettes</a>
href="#">Entr&eacute;e</a>
href="sommairePlats.php">Plats</a>
href="sommaireDesserts.php">Desserts</a>
href="sommairePays.php">Recettes par Pays</a>
href="sommaireDepot.php">D&eacute;poser une recette</a>
href="sommaireGlossaire.php">Glossaire</a>
</nav> <!-- fin du menu -->
<div id="contenu"> <!-- début du contenu -->
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ante augue,
dignissim quis hendrerit sit amet, facilisis a nunc. Mauris eget purus
vitae ipsum cursus lacinia ac ac nisi. Donec consectetur, libero in
pharetra cursus, lectus enim dictum lorem, id interdum mauris enim a diam.
Quisque ornare arcu et orci venenatis tincidunt. Suspendisse gravida
dapibus mi, at faucibus nunc scelerisque vel. Aenean ullamcorper porta
ipsum id lobortis. Aenean nunc massa, sodales sit amet condimentum id,
lobortis sed massa. Pellentesque facilisis, ligula at rhoncus dapibus,
ipsum arcu lacinia nunc, ut blandit est quam a purus. Donec laoreet elit
eget elit commodo nec tincidunt erat venenatis. Duis nulla urna, venenatis
sit amet placerat eget, blandit in nibh. Etiam sed dolor ac orci ornare
2
On a pris l’habitude d’utiliser l’extension .inc.php pour signifier qu’il s’agit d’une inclusion
Page 37/134
PHP - MySQL avec DreamWeaver
cursus nec in justo. Suspendisse at diam neque, egestas convallis lectus.
Curabitur volutpat orci in elit gravida adipiscing.
Suspendisse et neque a magna tempor lobortis. In dapibus augue sed mauris
bibendum a suscipit nulla iaculis.</p>
<p> Quisque ut felis ut eros posuere fermentum a sed magna. Suspendisse nec
faucibus lacus. Cras eu leo ligula, in fringilla neque. Integer ante arcu,
lobortis at euismod vel, congue sed risus. Proin quis lorem eu nulla
adipiscing sagittis. Cum sociis natoque penatibus et magnis dis parturient
montes, nascetur ridiculus mus. In lacinia, dui eget elementum laoreet,
quam elit mattis purus, nec faucibus neque purus ut ipsum. Aenean lobortis,
erat sed tempus rutrum, urna est adipiscing ipsum, ut imperdiet nunc nisi a
eros. Aliquam non lectus quis augue vehicula varius. Cras at est sit amet
mi varius fermentum vel ut nunc. Maecenas lobortis tortor placerat urna
auctor et commodo magna tristique. Suspendisse potenti. Nam sagittis,
sapien ac tincidunt ornare, sapien velit tincidunt nisi, eu pharetra tellus
massa quis massa.
Donec non orci nec tortor molestie viverra. Cras sagittis aliquam felis, et
tincidunt elit ultrices at. </p>
<p>Cras interdum, felis vitae pellentesque tempus, eros justo posuere
sapien, a venenatis erat augue eu mauris. Cras a enim id tellus varius
sagittis ut tincidunt dolor. Etiam vitae malesuada elit. Maecenas viverra,
orci eleifend mollis lobortis, leo turpis eleifend risus, eu porttitor enim
nisi sit amet tortor. In ac vulputate sapien. Pellentesque leo leo, feugiat
vitae tincidunt eu, vehicula ut ipsum. Pellentesque laoreet sem a nisi
adipiscing interdum. Phasellus vel metus vel metus elementum scelerisque.
Maecenas feugiat pulvinar massa consectetur rhoncus.
<p> Vestibulum ante ipsum primis in faucibus orci luctus et ultrices
posuere cubilia Curae; </p>
</div> <!-- fin du contenu -->
<footer>
<!-- mention de copyright Ne pas retirer sans autorisation écrite -->
<p class="lien">&copy; VotresiteCuisine.com Design by <a class="lien"
href="http://www.nextformation.com" >boblo & poui</a></p>
<!-- mention de copyright Ne pas retirer sans autorisation écrite -->
</footer> <!-- fin du pied -->
</div> <!-- fin du conteneur -->
</body>
</html>
1.13.5 Les fichiers .inc.php
ddt.inc.php
<!DOCTYPE html ">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
header.inc.php
$url=http://localhost/cuisine/; ?> <!-- url du site -->
<link href="<?php echo $url;?>css/style.css" rel="stylesheet"
type="text/css" />
</head>
Page 38/134
PHP - MySQL avec DreamWeaver
<body>
<div id="conteneur"> <!-- conteneur de la page -->
<header><h1>La Cuisine Facile</h1></header>
nav.inc.php
<nav id="menu"> <!-- début du menu horizontal -->
<a href="< ?php
<a href="< ?php
recettes</a>
<a href="< ?php
<a href="< ?php
<a href="< ?php
<a href="< ?php
<a href="< ?php
recette</a>
<a href="< ?php
echo $url ; ?> ">Accueil</a>
echo $url ; ?> sommaireRecettes.php">Toutes les
echo
echo
echo
echo
echo
$url
$url
$url
$url
$url
;
;
;
;
;
?>
?>
?>
?>
?>
sommaireEntrees.php">Entr&eacute;e</a>
sommairePlats.php">Plats</a>
sommaireDesserts.php">Desserts</a>
sommairePays.php">Recettes par Pays</a>
sommaireDepot.php">D&eacute;poser une
echo $url ; ?> sommaireGlossaire.php">Glossaire</a>
</nav> <!-- fin du menu -->
footer.inc.php
<footer>
<!-- mention de copyright Ne pas retirer sans autorisation &eacute;crite ->
<p class="lien">&copy; VotresiteCuisine.com Design by <a class="lien"
href="http://www.nextformation.com" >boblo & poui</a></p>
<!-- mention de copyright Ne pas retirer sans autorisation &eacute;crite ->
</footer>
</div>
</body>
</html><!-- fin du pied -->
Page 39/134
PHP - MySQL avec DreamWeaver
1.13.6 Le modèle PHP
gabarit.php ( à mettre dans le dossier ressources)
<?php require_once('../inc/ddt.inc.php'); //inclusion du doctype
?>
<title>gabarit</title>
require_once('../inc/header.inc.php'); // inclusion de l’entête
<?php
require_once('../inc/bandeau.inc.php'); //inclusion du bandeau
require_once('../inc /menu.inc.php'); // inclusion du menu
?>
<div id="contenu"> <!-- début du contenu -->
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ante augue,
dignissim quis hendrerit sit amet, facilisis a nunc. Mauris eget purus
vitae ipsum cursus lacinia ac ac nisi. Donec consectetur, libero in
pharetra cursus, lectus enim dictum lorem, id interdum mauris enim a diam.
Quisque ornare arcu et orci venenatis tincidunt. Suspendisse gravida
dapibus mi, at faucibus nunc scelerisque vel. Aenean ullamcorper porta
ipsum id lobortis. Aenean nunc massa, sodales sit amet condimentum id,
lobortis sed massa. Pellentesque facilisis, ligula at rhoncus dapibus,
ipsum arcu lacinia nunc, ut blandit est quam a purus. Donec laoreet elit
eget elit commodo nec tincidunt erat venenatis. Duis nulla urna, venenatis
sit amet placerat eget, blandit in nibh. Etiam sed dolor ac orci ornare
cursus nec in justo. Suspendisse at diam neque, egestas convallis lectus.
Curabitur volutpat orci in elit gravida adipiscing.
Suspendisse et neque a magna tempor lobortis. In dapibus augue sed mauris
bibendum a suscipit nulla iaculis.</p>
<p> Quisque ut felis ut eros posuere fermentum a sed magna. Suspendisse nec
faucibus lacus. Cras eu leo ligula, in fringilla neque. Integer ante arcu,
lobortis at euismod vel, congue sed risus. Proin quis lorem eu nulla
adipiscing sagittis. Cum sociis natoque penatibus et magnis dis parturient
montes, nascetur ridiculus mus. In lacinia, dui eget elementum laoreet,
quam elit mattis purus, nec faucibus neque purus ut ipsum. Aenean lobortis,
erat sed tempus rutrum, urna est adipiscing ipsum, ut imperdiet nunc nisi a
eros. Aliquam non lectus quis augue vehicula varius. Cras at est sit amet
mi varius fermentum vel ut nunc. Maecenas lobortis tortor placerat urna
auctor et commodo magna tristique. Suspendisse potenti. Nam sagittis,
sapien ac tincidunt ornare, sapien velit tincidunt nisi, eu pharetra tellus
massa quis massa.
Donec non orci nec tortor molestie viverra. Cras sagittis aliquam felis, et
tincidunt elit ultrices at. </p>
<p>Cras interdum, felis vitae pellentesque tempus, eros justo posuere
sapien, a venenatis erat augue eu mauris. Cras a enim id tellus varius
sagittis ut tincidunt dolor. Etiam vitae malesuada elit. Maecenas viverra,
orci eleifend mollis lobortis, leo turpis eleifend risus, eu porttitor enim
nisi sit amet tortor. In ac vulputate sapien. Pellentesque leo leo, feugiat
vitae tincidunt eu, vehicula ut ipsum. Pellentesque laoreet sem a nisi
adipiscing interdum. Phasellus vel metus vel metus elementum scelerisque.
Maecenas feugiat pulvinar massa consectetur rhoncus.
<p> Vestibulum ante ipsum primis in faucibus orci luctus et ultrices
posuere cubilia Curae; </p>
</div> <!-- fin du contenu -->
<?php require_once($url.'inc/pied.inc.php'); ?>
Page 40/134
PHP - MySQL avec DreamWeaver
1.13.7 La page banderillas.php
1. Ouvrez gabarit.php.
2. Enregistrez-sous banderillas.php : dreamwever vous propose de mettre à jour les
liens : répondez oui !
3. Positionnez –vous dans la <div id="contenu">.
4. Ecrivez le contenu de votre page.
5. ctrl s pour enregistrer
1.13.8 La page sommaireDesserts.php
Même démarche que précédemment.
Page 41/134
PHP - MySQL avec DreamWeaver
Chapitre 2
PHP ET DREAMWEAVER
Nous allons créer un site ‘bibliotheque’ pour la bibliothèque municipale de l’exercice1
2.1 LE PRINCIPE
Dreamweaver va vous permettre de créer un site dynamique relié à une base de données en
générant pour vous tous les ordres d’interrogation à la base de données grâce à l’utilisation
d’outils mis à votre disposition .
2.2 CREATION DU DOSSIER RACINE DU SITE
Figure 15. créez le dossier 'bibliotheque' sous la racine htdocs de Xampp
2.3 CREATION DU SITE SOUS DREAMWEAVER
Il s'agit, en fait de créer un lien vers un site existant.
Lancez Dreamwaever
Aller dans le Menu Site/nouveau site
Sous Dreamweaver CS5
Figure 16.boite de dialogue version css5
Page 42/134
PHP - MySQL avec DreamWeaver
Nom du site : mettez le nom choisi (ex : ‘bibliotheque’)
Dossier racine du site : cliquez sur l’icône du dossier et sélectionnez le dossier ‘bibliotheque’
que nous avons créé précédemment
Adresse http : http://localhost/bibliotheque
Page 43/134
PHP - MySQL avec DreamWeaver
2.4 CHOIX DU SERVEUR D’EVALUATION
Cliquez sur le lien Serveur du panneau latéral gauche
Cliquez sur la touche + pour déclarer le serveur
Remplissez la boite de dialogue
Page 44/134
PHP - MySQL avec DreamWeaver
Cochez la case serveur d’évaluation dans la boite de dialogue suivante
Page 45/134
PHP - MySQL avec DreamWeaver
CREATION DE PAGES DYNAMIQUES
Sélectionnez Créer/PHP pour un document PHP ou Créer/Html pour un document HTML.
Figure 17. création page dynamique sous dreamweaver
Page 46/134
PHP - MySQL avec DreamWeaver
2.5 PRINCIPE GENERAL
•
•
Une page dynamique contient des instructions php encadrées par <?php ?>
Quand la page doit interroger la base de données MYSQL , le script php effectue les
actions suivantes :
◦ écriture de la requête SQL
◦ connexion à la BDD
◦ exécution de la requête SQL
◦ récupération du résultat renvoyé par la BDD
Les ordres php correspondants à ces actions, habituellement écrits manuellement par les
développeurs, sont générés automatiquement par Dreamweaver.
Pour ce faire, lors de la création de la 1ère page dynamique, il faut déclarer la BDD à
dreamweaver et lui transmettre les paramètres de connexions
2.6 CONNEXION A LA BASE DE DONNEES
Figure 18. cliquez sur licone base de données du panneau de droite
Puis cliquez sur le bouton
et ensuite cliquez sur
La boite de dialogue ci-dessous apparaît
Page 47/134
PHP - MySQL avec DreamWeaver
Figure 19.écran de connexion à MySQL
Nom de connexion : c’est le nom que vous voulez donner à cette connexion : cn_biblio ici.
Serveur MySQL : localhost
Nom d'utilisateur : un des utilisateurs que vous avez créé précédemment (ce peut être le
profil root mais il vaut mieux éviter !!)
Mot de passe : le mot de passe MySQL créé pour ce profil utilisateur
Base de données : Cliquez sur
localhost.
pour obtenir la liste des BD du serveur
Figure 20. écran de sélection de la base de données
Sélectionnez la base de données à laquelle vous souhaitez vous connecter : ici c’est la bdd
‘bibliotheque’
Si tout c'est bien déroulé, vous cliquez sur
Dans le panneau de droite vous pouvez voir la structure de la bdd ‘bibliotheque’.
Page 48/134
PHP - MySQL avec DreamWeaver
Un clic droit sur le nom de la connexion affiche le menu contextuel suivant :
Sur votre site, un fichier portant le nom de la connexion a été créé dans le dossier Connections
où sont stockées les connexions.
Il ne faut surtout pas déplacer ou supprimer ce dossier, ni son contenu.
C’est dans ce fichier que vous changerez les paramètres de connexion si
nécessaire lorsque vous mettrez votre site en ligne ou que vous livrerez votre
client !
Page 49/134
PHP - MySQL avec DreamWeaver
Faites un double-clic sur le fichier pour en lire le contenu.
Que remarquez-vous ?
Remarque : afin de faciliter le rangement des fichiers, créez un dossier ‘php’ dans lequel
vous mettrez toutes les pages dynamiques que vous écrirez, (sauf la page index.php),. et un
dossier ‘html’ dans lequel vous rangerez vos pages statiques
2.7 FONCTIONNALITES D'UN SITE DYNAMIQUE
FRONT-OFFICE
•
•
•
Visualisations (afficher)
Recherche
ajout (quelquefois)
BACK-OFFICE
•
•
•
Connexion
ajout, modification, visualisation,
suppression pour chaque table de la
BDD
Recherche (quelquefois)
Ces fonctionnalités peuvent être dans des pages séparées ou regroupées : c'est au créateur du
site d'en décider.
Dans la suite du cours, nous allons apprendre à créer les pages contenant ces fonctionnalités
en utilisant Dreamwaever pour la génération des ordres d'interrogation de la BDD
Page 50/134
PHP - MySQL avec DreamWeaver
2.8 AFFICHER UNE TABLE MYSQL DANS UNE TABLE HTML
Objectif : afficher tous les enregistrements de la table ‘catégories’ dans un tableau
HTML.
2.8.1 Ecran à réaliser
Page 51/134
PHP - MySQL avec DreamWeaver
2.8.2 Démarche
Nouveau fichier genres_tableau.php
Pour afficher des données provenant de la base de données, il faut interroger la base de
données. (ordre SQL SELECT)
Pour cela utilisez l’outil jeux d’enregistrement de Dreamweaver
Données
dans l’onglet
Créez le jeu d'enregistrements je_genre
Après avoir validé sur
, cliquez sur l’outil tableau dynamique
Sélectionnez
et validez sur
Enregistrez puis testez votre page sous Firefox ou IE.
Page 52/134
PHP - MySQL avec DreamWeaver
2.9 AFFICHER QUELQUES CHAMPS D'UNE TABLE
Objectif : il n'est pas toujours nécessaire d'afficher tous les champs d'une table.
Dans ce cas on sélectionne les champs à afficher.
2.9.1 Ecran à réaliser
Page 53/134
PHP - MySQL avec DreamWeaver
2.9.2 Démarche
La démarche est identique mais lors de la construction du jeu d'enregistrements vous
sélectionnez les colonnes, les champs que vous voulez afficher
Figure 21.jeu d'enregistrement sur nomgenre avec tri
2.10 TRIER
Objectif : présenter les données triées (ordonnées) sur un champ.
2.10.1 Démarche
Lorsque de la construction du jeu d'enregistrements, vous précisez que vous voulez trier sur
un champ en le sélectionnant dans la liste : Trier.
Le tri peut être croissant ou décroissant.
Exercice : Afficher tous les auteurs triés par leur nom.
2.11 AFFICHER LE CONTENU D’UNE TABLE DANS UNE LISTE HTML
2.11.1 Objectif et écran à réaliser
Objectif : afficher un champ d'une table directement dans le body.
2.11.2 Démarche
Créez un nouveau fichier PHP.
Créez un jeu d’enregistrements
.
Page 54/134
PHP - MySQL avec DreamWeaver
Allez ensuite dans Liaisons/Jeu d'enregistrements.
Cliquez-Glissez le CP dans le Body.
Vous refaites la même manipulation pour ajouter un autre champ.
Remarques : Vous pouvez passer par l'outil
2.12 REGION REPETEE
Objectif : afficher la table Villes dans des balises usuelles (p, div, li ….) .
Créez un Jeu d'enregistrements
sur la table Villes.
Page 55/134
PHP - MySQL avec DreamWeaver
Ajoutez une <div>, un <p> et/ou des <labels>.
cliquez-glissez le Cp et la Ville dans le Body.
Vous obtenez ce code-ci :
1.
2.
3.
4.
<body>
<p><?php echo $row_Recordset1['cp']; ?>
<?php echo $row_Recordset1['ville']; ?></p>
</body>
Sélectionnez de <p> à </p>
Cliquez sur le bouton "Région répétées"
.
Vous obtenez ce code-ci :
<body>
<div>
<?php do { ?>
<p>
<?php echo $row_Recordset1['cp']; ?> <?php echo $row_Recordset1['ville']; ?>
</p>
<?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
</div>
</body>
NB : vous pouvez faire la même chose avec des textes dynamiques
Text), des cases à cocher, …
, des champs de texte dynamiques (Input
Page 56/134
PHP - MySQL avec DreamWeaver
2.13 AFFICHER UNE PHOTO EN FONCTION D’UN ENREGISTREMENT
Objectif : Afficher une photo alors que le nom du fichier jpg est stocké dans un champ de la
table et que le fichier correspondant est stocké sur le disque du serveur.
Créez un nouveau fichier PHP.
Créez un nouveau jeu d’enregistrement sur les champs prenomAuteur, nomAuteur et
photoAuteur de la table auteurs
Vous obtenez le jeu d’enregistrement suivant :
Page 57/134
PHP - MySQL avec DreamWeaver
Créez ensuite en HTML une balise <img>
<img src="" height="100" />
Cliquez-glissez le champ photo entre les guillemets de l’attribut src.
Vous obtenez.
<img src="<?php echo $row_rs_auteurs['photoAuteur']; ?>" />
Cliquez-glissez les autres champs, puis faites (région répétée)
Au final vous obtenez
<?php do { ?>
<p><img src="images/<?php echo $row_rs_auteurs['photoAuteur'];
?>" />&nbsp;<?php echo $row_rs_auteurs['prenomAuteur']; ?>&nbsp;<?php
echo $row_rs_auteurs['nomAuteur']; ?></p>
<?php } while ($row_rs_auteurs = mysql_fetch_assoc($rs_auteurs));
?>
Notes : Pour le upload de fichiers cf l'annexe.
Page 58/134
PHP - MySQL avec DreamWeaver
2.14 AFFICHER LA PHOTO ET L'URL CORRESPONDANT A
L'ENREGISTREMENT COURANT
2.14.1 Objectif : l'écran à réaliser
L'écran affiche la photo de l’auteur et un lien vers le site de l’auteur.
Page 59/134
PHP - MySQL avec DreamWeaver
2.14.2 Démarche
Créez un nouveau document PHP : photo_site_auteurs.php.
Créez un jeu d'enregistrements
Voilà le jeu d'enregistrements.
sur la table auteurs.
Comme précédemment , créez en HTML une balise <img> et cliquez-glissez le champ
photoAuteur entre les guillemets de l’attribut src.
Cliquez-glissez un à un, tous les autres champs.
Pour le site créez une balise HTML <a href="" >le site </a>.
cliquez-glissez le champ site entre les guillemets de l’attribut href
Sélectionnez tout ce qui se trouve entre <p>et </p> et faites région répétée
Testez.
.
Page 60/134
PHP - MySQL avec DreamWeaver
2.15 LA LISTE DYNAMIQUE
2.15.1 Petit rappel : la Liste menu html
Copiez/collez le script suivant dans un nouveau fichier lecteur_insert.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>liste menu html</title>
</head>
<body>
<form action="" method="get">
<table>
<tr valign="baseline">
<td nowrap="nowrap" align="right">civilit&eacute;</td>
<td><select name="civilite">
<option>Mademoiselle</option>
<option>Madame</option>
<option>Monsieur</option>
</select></td>
</tr>
<tr>
<td nowrap="nowrap" align="right"><label>nom</label></td>
<td><input name="nom" type="text" /></td>
</tr>
<tr>
<td nowrap="nowrap" align="right"><label>pr&eacute;nom</label></td>
<td><input name="prenom" type="text" /></td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right">&nbsp;</td>
<td><input type="submit" value="Enregistrer" /></td>
</tr>
</table>
</form>
</body>
</html>
Dans ce script nous avons une liste menu statique.
Page 61/134
PHP - MySQL avec DreamWeaver
2.15.2 Et la liste dynamique , qu’est-ce que c’est ?
Une liste dynamique est une liste « menu » dont le contenu (les options) provient d’une base
de données.
et
•
Objectif
Afficher un enregistrement d’une table en fonction d’une sélection faite dans une liste menu
déroulante. La liste affiche les noms des auteurs mais permet de récupérer l'id de l'auteur.
2.15.3 Ecrans
La page liste_auteurs.php
On y choisit l’auteur à afficher parmi tous les auteurs existants dans la base
La page un_auteur.php
On y affiche les informations de l'auteur choisi précédemment.
Page 62/134
PHP - MySQL avec DreamWeaver
2.15.4 Démarche
Créez un premier document php (liste_auteurs.php) pour la liste et un deuxième document
PHP (un_auteur.php) pour visualiser l’enregistrement
2.15.4.1 Le premier PHP : liste_auteurs.php
Etape 1 :Création du formulaire
Créez un document PHP et allez dans la barre d'outils Formulaire.
Créez un formulaire
de méthode GET, et dans "action" saisissez un_auteur.php. (c’est le
programme qui va recevoir la valeur transmise par le formulaire.
Créez une liste
avec la balise <select> de HTML. Vous la nommerez "idAuteur" car
nous affichons le nom de l’auteur pour l’internaute mais nous récupérons la valeur de
idAuteur pour sélectionner l’enregistrement à afficher.
Créez un bouton
de type Envoyer (Submit). Dans "valeur" saisissez "Voir "
Etape 2 :Création du jeu d’enregistrement
utilisez l’outil jeux d’enregistrement de Dreamweaver pour créer un jeux
d’enregistrement sur les auteurs . Sélectionnez les colonnes nomAuteur et idAuteur.
Page 63/134
PHP - MySQL avec DreamWeaver
Etape 3 : Création de la liste de sélection PHP
Sélectionnez Liste de sélection dynamique
vous reliez la liste au jeu d'enregistrements
dans "Valeurs" vous sélectionnez ce que vous voulez récupérer : le champ idAuteur
dans "Etiquettes" vous sélectionnez ce que vous voulez visualiser : le champ nomAuteur.
Page 64/134
PHP - MySQL avec DreamWeaver
2.15.4.2 Le deuxième document PHP : un_auteur.php
Créez un nouveau document PHP avec un tableau dynamique
.
Le jeu d'enregistrements est basé sur la table auteurs.
Le critère de sélection est un Paramètre d'URL (car le formulaire du document précédent est
en get) 3.
Le nom de ce paramètre correspond au nom de la liste du document précédent.
2.16 AFFICHER UNE LISTE DE CHOIX ET UN TABLEAU DYNAMIQUE
DANS LA MEME FENETRE
2.16.1 Objectif
Afficher la liste/menu des villes, en sélectionner une, et lorsque l’on clique sur un bouton
validation on affiche les abonnés de cette ville.
Ce fichier PHP s’appelle sel_visu_abonnes_villes.php.
2.16.2 Ecran
3
Si le formulaire est en post le critère de sélection est une Variable de formulaire
Page 65/134
PHP - MySQL avec DreamWeaver
L’utilisateur a sélectionné Paris 12, les clients du 75012 s’affichent.
2.16.3 Démarche
C’est assez proche de ce qui a été fait quelques paragraphes avant.
Il faut :
Créer un formulaire avec une liste HTML <select> (Liste/menu) et un
bouton(Envoyer/submit).
L’action du formulaire sera d’appeler la même page.
Créer une liste PHP (Liste de sélection dynamique) basé sur un jeu d’enregistrements sur la
table villes avec le cp et la ville.
Créer un nouveau jeu d’enregistrements basé sur clients et conditionné à la liste déroulante.
Créer un tableau dynamique.
Page 66/134
PHP - MySQL avec DreamWeaver
Première étape
a) Création du formulaire avec la liste HTML : vous devez avoir ça :
<form action="md.php" method="get">
<select name="liste_villes">
</select>
<input type="submit" value="go" />
</form>
b) Remplissage de la liste avec l'outil Données : "Liste de sélection dynamique".
Deuxième étape
Il faut créer un nouveau jeu d’enregistrements puis un tableau dynamique
Pour créer un nouveau jeu d’enregistrements cliquez sur
Vous créez ensuite le nouveau tableau dynamique
Et vous l’associez au jeu d'enregistrements correspondant.
Page 67/134
PHP - MySQL avec DreamWeaver
2.17 INSERTION D'UN ENREGISTREMENT
Objectif : créer un formulaire permettant d’enregistrer une nouvelle catégorie
2.17.1 L'écran à réaliser
2.17.2 La démarche
Créez une nouvelle page dynamique php ‘insert_categorie.php’.
Dans la barre d’outil du haut, cliquez qur l’onglet ‘Données’ et sélectionnez ‘Assistant de
formulaire d’insertion d’enregistrement’
Figure 22. assistant d'insertion
Vous obtenez l’écran suivant :
Sélectionnez la connexion cn_biblioheque
Sélectionnez la table catégories.
après l’insertion allez à :
sélectionnez le fichier tableau_categories.php que vous avez créé.
Page 68/134
PHP - MySQL avec DreamWeaver
Le champ ‘id_categorie‘ étant en auto-incrément, nous n’allons pas l’afficher.
Cliquer sur le
pour l’enlever du formulaire.
Validez sur OK.
testez le :
ou F12.
Remarques :
Si la clé existe déjà, vous avez un message d'erreur
Si un des champs est vide vous avez un message d'erreur (Ceci dépend de la structure de la table; ici les 2 champs doivent être NOT NULL).
L'assistant
nécessite la création d'un formulaire HTML au préalable. Il peut être utile si tous les
champs d'une table ne sont pas obligatoires et que vous voulez restreindre la saisie aux seuls champs obligatoires.
Exercice :
Créez les pages d’insertions des villes et des pays
2.18 L'AJOUT DE L’ABONNE AVEC L'ASSISTANT ET UNE LISTE
2.18.1 Principe
La table ville est en clé étrangère dans la table abonne : cela signifie que dans le champ
abonneville de la table abonne, doit contenir la primary key de la ville de l'abonné.
Il faut donc proposer un menu déroulant dans lequel pour le confort de celui qui saisit , on
affiche le nom de la ville mais par lequel on récupère l'id de la ville
A chaque fois qu'il y aura une contrainte de clé étrangère , il faudra systématiquement proposé
un menu déroulant.
2.18.2 Objectif et écran à réaliser
Saisir un nouvel enregistrement dans la table abonnes avec une liste déroulante pour la ville
en utilisant les assistants.
Page 69/134
PHP - MySQL avec DreamWeaver
2.18.3 Démarche
La liste
Créez d'abord un jeu d'enregistrements
sélectionnant les champs CP et Ville.
nommé rs_villes basé sur la table Villes en
Lancer l'Assistant de formulaire d'insertion d'enregistrement
Pour le champ CP sélectionnez Menu dans l'option "Afficher en tant que".
Cliquez sur le bouton
Sur l’écran qui s’affiche sélectionnez le jeu d’enregistrement rs_villes
Page 70/134
PHP - MySQL avec DreamWeaver
2.19 LA SUPPRESSION D'UN ENREGISTREMENT
2.19.1 Objectif et écrans
Objectif : supprimer un enregistrement dans la table Villes en fonction du CP saisi
dans un champ de texte d'un formulaire d'une page HTML.
Page 71/134
PHP - MySQL avec DreamWeaver
2.19.2 Démarche
Créez un document HTML (villes_pre_sup.html) avec un formulaire HTML contenant un
champ de texte, un <input type="text" />, pour saisir le CP à supprimer et un bouton
"Envoyer" ie un bouton "Submit".
Créez un document PHP (villes_sup.php) pour supprimer un enregistrement.
Le document HTML
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8" />
<title>villes_pre_sup.html</title>
</head>
<body>
<form action="villes_sup.php" method="get">
Saisir le CP à supprimer : <input name="cp" type="text" />
<input name="" type="submit" value="go"/>
</form>
</body>
</html>
Le document PHP
Sélectionnez dans la barre d'outils Supprimez l'enregistrement
Et vous remplissez les zones nécessaires
Attention : les noms doivent avoir la même casse; aussi bien dans le formulaire HTML que
dans les $_GET(paramètre d’URL) du code PHP.
Page 72/134
PHP - MySQL avec DreamWeaver
2.20 SUPPRESSION A PARTIR D'UNE LISTE
2.20.1 Objectif et écrans à réaliser
Objectif : Supprimer une ville à partir d'une liste de choix.
Page 73/134
PHP - MySQL avec DreamWeaver
2.20.2 Démarche
Deux documents PHP vont être créés.
Créez d'abord un document PHP (villes_pre_sup_liste.php) avec un formulaire qui contient
une liste déroulante, nommée cp, qui affiche les noms des villes et récupère le CP de la ville
sélectionnée et un bouton de type "Envoyer".
Créez ensuite un document PHP qui supprime la ville sélectionnée ou mieux réutilisez le
document précédent (villes_sup.php).
Page 74/134
PHP - MySQL avec DreamWeaver
2.21 SUPPRESSION A PARTIR D’UN TABLEAU DYNAMIQUE
2.21.1 Objectif et écrans à réaliser
Objectif : supprimer une ville à partir de l’affichage d’un tableau dynamique
Page 75/134
PHP - MySQL avec DreamWeaver
Démarche :
Créer une nouvelle page php nommée console_ville.php
Créer un jeux d’enregistrement rs_villes sur la table ville
Créer un tableau dynamique
1. Dans
le source on obtient le code suivant :
<table>
<tr>
<td>cp</td>
<td>ville</td>
</tr>
<?php do { ?>
<tr>
<td><?php echo $row_rs_ville['cp']; ?></td>
<td><?php echo $row_rs_ville['ville']; ?></td>
</tr>
<?php } while ($row_rs_ville = mysql_fetch_assoc($rs_ville)); ?>
</table>
2. ajouter une cellule avec le mot suppression dans la première ligne
comme ceci
<tr>
<td>cp</td>
<td>ville</td>
<td>suppression</td>
</tr>
3.
ajouter dans la cellule, un lien vers la même page avec passage de
variable comme ci-dessous :
<tr>
<td>cp</td>
<td>ville</td>
<td> <a href="console_ville.php?cp="></td>
</tr>
4.
cliquer/glisser le champs cp du jeux d’enregistrement, pour obtenir
le même code que ci-après :
<tr>
<td>cp</td>
<td>ville</td>
<td>
<a href="console_ville.php?cp=<?php echo $row_rs_ville['cp'];
?>"></td>
</tr>
Sélectionnez dans la barre d'outils Supprimez l'enregistrement
Et vous remplissez les zones nécessaires
Page 76/134
PHP - MySQL avec DreamWeaver
2.22 LA MODIFICATION D'UN ENREGISTREMENT
2.22.1 Objectif et démarche
Objectif : Modifier un enregistrement de la table Villes en l'ayant sélectionné au
préalable dans une liste déroulante.
Démarche : Créer un document PHP dans lequel vous allez créer une liste pour sélectionner
la ville à modifier.
Créer un deuxième document PHP dans lequel vous allez utiliser l'assistant
pour produire une page de modification d'une
Ville.
Document 1 : sel_villes_modifier.php
La liste des villes avec le bouton pour valider dans un formulaire.
Document 2 : villes_modifier.php
L'écran de saisie des modifications de la ville sélectionnée précédemment (ici Paris 16 a été
sélectionné). Et l'on va le modifier en PARIS 16ème.
Document 3 facultatif : villes_modification_validation.html
Troisième écran facultatif avec un message
Page 77/134
PHP - MySQL avec DreamWeaver
•
Démarche détaillée
Vous allez créer deux pages PHP (Eventuellement une troisième page HTML pour afficher un
message comme quoi la modification a été prise en compte).
La première pour afficher la liste des villes. Elle comportera un bouton pour valider la
sélection.
La deuxième pour afficher les données de la ville sélectionnée, pouvoir les modifier et un
bouton pour valider la modification.
•
La première page php
villes_liste_modifier.php
Cf le paragraphe sur l'affichage des villes dans une liste déroulante.
Il faut créer une page PHP avec un formulaire et une liste déroulante à l'intérieur ainsi qu'un
bouton de type envoyer pour aller sur l'autre page.
Appelez la liste liste_villes.
La valeur de l'attribut action du formulaire est "villes_modifier.php".
Puis créez la liste dynamique.
•
La deuxième page PHP
villes_modifier.php
Vous sélectionnez : Assistant de formulaire de mise à jour des enregistrements
Le jeu d'enregistrements est conditionné à la valeur de liste_villes.
Page 78/134
PHP - MySQL avec DreamWeaver
On laisse le CP en tant que Texte; c'est la clé primaire. On juge qu'on ne doit pas pouvoir la
modifier; et la modification du nom de la ville se fait en fonction de cette valeur de CP.
VISUALISATIONS AVANCEES …
2.23 ENCORE UN PEU DE SQL
L’ordre SELECT sert à sélectionner les enregistrements d’une base de données.
Créez plusieurs auteurs dont le nom commence par la lettre ‘p’.
Sous phpMyAdmin copiez/collez les lignes suivantes dans le panneau SQL
SELECT nom_auteur, prenom_auteur
FROM auteur
WHERE nom_auteur LIKE 'p%'
Que remarquez vous ?
Exercice:
écrire l’ordre SQL permettant d’afficher toutes les catégories commençant par la lettre ‘r’
écrire l’ordre SQL permettant d’afficher toutes les formations contenant la lettre ‘a’
Page 79/134
PHP - MySQL avec DreamWeaver
2.24 RECHERCHE A PARTIR D’UN CHAMPS D’INSERTION : FILTRER
2.24.1 Principe : notion de Filtre
Filtrer consiste à ne prendre que les enregistrements correspondants à un critère précisé en
entrée (un peu comme le filtre en entrée de boite de nuit)
2.24.2 Objectif et démarche
Objectif : afficher les auteurs dont le nom contient le mot saisi dans un champ de recherche .
La page s’appelle rechercheAuteurs .php
La saisie du nom se fera dans un formulaire HTML , avec un simple champ d'insertion (input
type text)
Le résultat sera affiché dans la même page, dans un tableau dynamique
La démarche pour créer le tableau dynamique est la même que pour les exercices précédents
mais lors de la construction du jeu d'enregistrements vous ajoutez un filtre..
Le filtre est basé sur la valeur qui est passé dans l’url en provenance du formulaire de
sélection.
Page 80/134
PHP - MySQL avec DreamWeaver
2.24.3 La création du formulaire HTML
Petite révision : création d’un formulaire html:
Allez dans le <body>
Affichez l'onglet Formulaires
Page 81/134
PHP - MySQL avec DreamWeaver
Créez un formulaire en cliquant sur l’icône
,
Sélectionnez le fichier qui affichera le résultat (un_auteur.php)
Créez un label <label></label>,
Créez un zone de saisie
, que vous appelez nomAuteur (attribut name)
Créez un bouton envoyer .
Page 82/134
PHP - MySQL avec DreamWeaver
2.24.4 La création du tableau dynamique
.
Le jeu d'enregistrements est le suivant :
sur le filtre vous sélectionnez nomAuteur puis Paramètre d'URL et vous laissez
nomAuteur en face (puisqu'il correspond au nom du champ de texte dans le formulaire du
fichier précédent 4).
Dans la fenêtre Tableau Dynamique vous sélectionnez
4
Le critère peut être :
FiltreProvenanceParamètre d'URLD'un formulaire de méthode GETVariable de formulaireD'un formulaire de méthode
POSTCookieD'un cookieVariable de sessionD'une variable de sessionVariable de serveurD'une variable de portée applicativeValeur
entréeD'une constante saisie ici
Page 83/134
PHP - MySQL avec DreamWeaver
2.25 LA PAGINATION
2.25.1 Objectif et écran
Afficher 1 ou plusieurs enregistrements par pages, mais pas tous, avec des liens ou des
boutons de navigation. Ceci est indispensable lorsque vous avez de nombreux enregistrements
dans une table ou dans le résultat de la requête.
A titre d'exemple afficher la table Villes enregistrement par enregistrement avec des liens ou
des boutons de navigation. Les champs de la table sont affichés les uns en dessous des autres.
ou
Page 84/134
PHP - MySQL avec DreamWeaver
2.25.2 Démarche
Créez une page php (villes_paginees.php)
Créez un jeu d'enregistrements en cliquant sur
.
Cliquez-glissez le cp et la ville.
Ajoutez des <br />.
Vous avez ceci comme code
<body>
CP : <?php echo $row_rs_villes['cp']; ?><br />
Ville : <?php echo $row_rs_villes['ville']; ?><br />
</body>
Sélectionnez les lignes que vous venez d'ajouter (sans les balises <body> et </body>.
Cliquez sur région répétée
et saisissez 1 dans "Afficher".
Cliquez sur
(barre de navigation du jeu d'enregistrements) pour obtenir les liens ou les
boutons Premier/Précédent/Suivant/Dernier.
Page 85/134
PHP - MySQL avec DreamWeaver
2.25.3 Script
<?php require_once('Connections/cn_cours.php'); ?>
<?php
$currentPage = $_SERVER["PHP_SELF"];
$maxRows_rs_villes = 1;
$pageNum_rs_villes = 0;
if (isset($_GET['pageNum_rs_villes'])) {
$pageNum_rs_villes = $_GET['pageNum_rs_villes'];
}
$startRow_rs_villes = $pageNum_rs_villes * $maxRows_rs_villes;
mysql_select_db($database_cn_cours, $cn_cours);
$query_rs_villes = "SELECT * FROM villes";
$query_limit_rs_villes = sprintf("%s LIMIT %d, %d", $query_rs_villes,
$startRow_rs_villes, $maxRows_rs_villes);
$rs_villes = mysql_query($query_limit_rs_villes, $cn_cours) or
die(mysql_error());
$row_rs_villes = mysql_fetch_assoc($rs_villes);
if (isset($_GET['totalRows_rs_villes'])) {
$totalRows_rs_villes = $_GET['totalRows_rs_villes'];
} else {
$all_rs_villes = mysql_query($query_rs_villes);
$totalRows_rs_villes = mysql_num_rows($all_rs_villes);
}
$totalPages_rs_villes = ceil($totalRows_rs_villes/$maxRows_rs_villes)-1;
$queryString_rs_villes = "";
if (!empty($_SERVER['QUERY_STRING'])) {
$params = explode("&", $_SERVER['QUERY_STRING']);
$newParams = array();
foreach ($params as $param) {
if (stristr($param, "pageNum_rs_villes") == false &&
stristr($param, "totalRows_rs_villes") == false) {
array_push($newParams, $param);
}
}
if (count($newParams) != 0) {
$queryString_rs_villes = "&" . htmlentities(implode("&", $newParams));
}
}
$queryString_rs_villes = sprintf("&totalRows_rs_villes=%d%s",
$totalRows_rs_villes, $queryString_rs_villes);
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>
<body>
<!--Début de la boucle d'affichage des enregistrements -->
<?php do { ?>
<!--Affichage des champs
-->
Page 86/134
PHP - MySQL avec DreamWeaver
<?php echo $row_rs_villes['cp']; ?><br />
<?php echo $row_rs_villes['ville']; ?>
<!--Affichage des "boutons" premier, précédent, suivant et dernier
-->
<table border="0" width="50%" align="center">
<tr>
<td width="23%" align="center">
<?php if ($pageNum_rs_villes > 0) { // Show if not first page ?>
<a href="<?php printf("%s?pageNum_rs_villes=%d%s",
$currentPage, 0, $queryString_rs_villes); ?>">Premier</a>
<?php } // Show if not first page ?>
</td>
<td width="31%" align="center">
<?php if ($pageNum_rs_villes > 0) { // Show if not first page ?>
<a href="<?php printf("%s?pageNum_rs_villes=%d%s", $currentPage, max(0, $pageNum_rs_villes - 1),
$queryString_rs_villes); ?>">Pr&eacute;c&eacute;dent</a>
<?php } // Show if not first page ?>
</td>
<td width="23%" align="center">
<?php if ($pageNum_rs_villes < $totalPages_rs_villes) { // Show if not last page ?>
<a href="<?php printf("%s?pageNum_rs_villes=%d%s",
$currentPage, min($totalPages_rs_villes, $pageNum_rs_villes + 1),
$queryString_rs_villes); ?>">Suivant</a>
<?php } // Show if not last page ?>
</td>
<td width="23%" align="center">
<?php if ($pageNum_rs_villes < $totalPages_rs_villes) { // Show if not last page ?>
<a href="<?php printf("%s?pageNum_rs_villes=%d%s",
$currentPage, $totalPages_rs_villes, $queryString_rs_villes);
?>">Dernier</a>
<?php } // Show if not last page ?>
</td>
</tr>
</table>
<!--Fin de la boucle d'affichage des enregistrements -->
<?php } while ($row_rs_villes = mysql_fetch_assoc($rs_villes)); ?>
</body>
</html>
<?php
mysql_free_result($rs_villes);
?>
En rouge et en gras l'élimination des "suppressions" des boutons
Page 87/134
PHP - MySQL avec DreamWeaver
2.25.4 En plus !!!
Si vous voulez aussi afficher l'état de navigation cliquez sur le bouton
Le code ajouté
<!--Affichage du numéro de l'enregistrement et du nombre total d'enregistrements dans la table -->
Enregistrements <?php echo ($startRow_rs_villes + 1) ?> &agrave; <?php echo min($startRow_rs_villes +
$maxRows_rs_villes, $totalRows_rs_villes) ?> sur <?php echo $totalRows_rs_villes ?>
Et en rouge et en gras le code à enlever
Page 88/134
PHP - MySQL avec DreamWeaver
2.25.5 Un peu plus encore
Objectif : choisir un à un les "éléments" de navigation à afficher.
Navigation.
Les quatre derniers boutons correspondent aux boutons première page, page précédente, page
suivante ou dernière page (ou premier, précédent, suivant, dernier).
Si vous ne voulez pas avoir les quatre boutons d'office, vous cliquez successivement sur les
boutons que vous voulez afficher; "Précédent" et "Suivant" par exemple.
Etat de la navigation.
Les trois derniers boutons permettent d'avoir la position du premier et du dernier
enregistrement d'un bloc ainsi que le nombre total d'enregistrements.
Si vous ne voulez pas avoir les quatre boutons d'office, vous cliquez successivement sur les
boutons que vous voulez afficher; "Enregistrement de début" et "Nombre total" par exemple.
Page 89/134
PHP - MySQL avec DreamWeaver
Affichage conditionnel des éléments de navigation.
Vous pouvez choisir d'afficher ou de ne pas afficher un élément de navigation (ou autre chose
d'ailleurs) en fonction de l'état de la navigation.
Par exemple, vous pouvez choisir de ne pas afficher le "bouton" précédent si le premier
enregistrement est affiché; dans cet exemple-là, vous sélectionnez le "bouton" premier dans le
code et vous cliquez sur "Afficher si ce n'est pas la première page".
Page 90/134
PHP - MySQL avec DreamWeaver
2.26 VISUALISATION DE DONNEES PROVENANT DE PLUSIEURS
TABLES (JOINTURE)
2.26.1 Encore un peu de SQL - Les jointures
2.26.1.1 Rappel
Pour afficher les noms et prénoms de tous les enregistrements de la table abonnes nous écrivons
SELECT prenom,nom from abonnes.
Syntaxe : SELECT champs1[,champs2] FROM table [WHERE condition]
Entre [] les options facultatives.
2.26.1.2 Lire dans plusieurs tables
Pour voir dans quelle ville habite un abonné nous sommes obligés de noter le cp
incrit dans le champ cp de la table abonnes puis d’aller voir à quelle ville il
correspond dans la table ville.
Nous sommes donc obligés de lire sur deux tables. En langage sql , on dira que nous
faisons une jointure
2.26.1.3 Syntaxe 1
Copiez/collez dans le panneau sql la ligne suivante :
SELECT idAbonne,prenomAbonne, nomAbonne , ville from abonnes,villes where
cpAbonne=cp ;
Que remarquez vous ?
Cette syntaxe corresppond à une équi-jointure : lecture sur deux tables reliées par une clause
where. Seuls les enregistrements satisfont à la clause sont afficher.
Dans le cas présent, les abonnés dont le cp n’est pas renseigné ne sont pas affichés.
2.26.1.4 Syntaxe 2
Copiez/collez dans le panneau sql la ligne suivante :
SELECT idAbonne,prenomAbonne, nomAbonne , ville from abonnes left join villes on
cpAbonne=cp ;
Que remarquez vous ?
Cette syntaxe correspond à une jointure gauche les enregistrements de la table de gauche sont
affichez même s’ils n’ont pas de correspondance dans la table de droite. .
Autre syntaxe
Copiez/collez dans le panneau sql la ligne suivante :
Page 91/134
PHP - MySQL avec DreamWeaver
SELECT idAbonne,prenomAbonne, nomAbonne , ville from abonnes right join villes on
cpAbonne=cp ;
Que remarquez vous ?
Cette syntaxe corresppond à une jointure droite les enregistrements de la table de droite sont
affichez même s’ils n’ont pas de correspondance dans la table de gauche .
Dans le cas présent, tous les cp sont pas affichés.
2.26.2 Objectif
Afficher des données provenant de plusieurs tables.
A titre d'exemple afficher dans un tableau HTML la liste des abonnés avec le nom de la ville
où ils habitent.
Les données se trouvent dans les tables abonnes et villes.
2.26.3 Ecran à réaliser
Page 92/134
PHP - MySQL avec DreamWeaver
2.26.4 Jeu d'enregistrements avancé.
Vous utilisez l'assistant tableau dynamique
Au moment de la création du jeu d'enregistrements vous cliquez sur le bouton
L'écran précédent apparaît.
Accéder aux champs des tables vous cliquez le +.
Pour sélectionner un champ à afficher vous cliquez sur le nom du champ puis sur le bouton
SELECT, et vous recommencez pour chaque champ.
Enfin pour avoir une jointure correcte vous cliquez sur les champs de liaison (clé primaire –
clé étrangère) et pour chaque champ vous cliquez sur le bouton WHERE.
Vous remplacez le AND par un = .
Pour trier, vous sélectionnez un champ et vous cliquez sur le bouton ORDER BY.
Pour la jointure
Notes : Si vous travaillez sur plus de 2 tables, et ceci autant de fois qu'il y a de liaisons (Vous rajoutez un = entre chaque champ d'une liaison
et vous rajoutez un AND entre chaque liaison différente).
Page 93/134
PHP - MySQL avec DreamWeaver
2.27 RECHERCHES MULTICRITERES
2.27.1 Objectif
Filtrer les d'enregistrements en fonction de plusieurs critères.
Exemple : Effectuer dans la table ‘abonnes’ une sélection sur le nom et sur le c ; par exemple
tous les abonnés du "75001" dont le nom contient "e".
2.27.2 Ecrans
Le formulaire multi-critère
Le tableau des résultats
Page 94/134
PHP - MySQL avec DreamWeaver
2.27.3 Démarche
Créez un formulaire HTML dans un document HTML multi_criteres.html.
Les <input text> sont nommés nomAbonne et cp.
Créez un document PHP multi_criteres.php.
Créez un Jeu d'enregistrements avec un filtre sur nomAbonne
Passez en mode
.
Ajoutez un deuxième argument en cliquant sur
Modifiez la condition WHERE en cliquant sur
.
Remarque :
Pour donner la possibilité de chercher à partir d’un cp incomplet , par exemple avec le numéro du
département, il suffit d’utiliser l’opérateur LIKE avec le jocker % pour la condition sur le cp .
et dans ce cas il faut impérativement déclarer que le colname2 est de type text
Page 95/134
PHP - MySQL avec DreamWeaver
2.28 MODIFIER UN JEU D’ENREGISTREMENTS
Vous voulez modifier un jeu d’enregistrements existant, ajouter une colonne, enlever une
colonne, positionner un filtre, …
Dans votre document PHP; vous allez dans la fenêtre Application, l’onglet Liaisons, vous
sélectionnez un jeu d’enregistrements
et vous double-cliquez dessus
Ou bien en allant dans la fenêtre Application, l’onglet Comportements de serveur, vous
sélectionnez le jeu d’enregistrements et vous double-cliquez dessus
Page 96/134
PHP - MySQL avec DreamWeaver
Page 97/134
PHP - MySQL avec DreamWeaver
L'AUTHENTIFICATION
2.29 CONNEXION ET AUTHENTIFICATION DE L'UTILISATEUR
2.29.1 Objectif et Ecrans à réaliser
Objectif : réaliser un écran d'authentification, pour sécuriser l'accès au site.
Connexion réussie
Connexion ratée
2.29.2 Démarche
Créez une table pour les utilisateurs; appelons-la utilisateurs.
Structure
Données
Utilisateurs(ut, mdp, qualite)
p, b, bo
a, f, fo
Créez trois pages :
Une page pour rediriger lorsque la connexion a réussie (connexion_reussie.html)
Une page pour rediriger lorsque la connexion a échoué (connexion_ratee.html)
La page de connexion : authentification.php
Cette dernière page va être créée avec l'assistant PHP
Elle doit au préalable contenir un formulaire
nommé "authentification" avec deux
champs de texte
pour la saisie du nom de l'utilisateur (nommé it_ut) et du mot de passe
(nommé it_mdp) et un bouton
de type Envoyer (Submit) avec comme texte Valider. Il
faut que les noms des éléments HTML soient différents des noms des champs de la table.
Ensuite allez dans Onglet Données et cliquez sur
Connecter l’utilisateur
Page 98/134
PHP - MySQL avec DreamWeaver
Page 99/134
PHP - MySQL avec DreamWeaver
2.30 DECONNEXION
•
Objectif
Déconnecter l'utilisateur.
Utiliser l'assistant :
Remplissez cette fenêtre de cette façon-ci
ou de cette façon-là
•
Ecran correspondant à "lien cliqué"
Note : préférez l'option 2, l'utilisateur ne cliquera qu'une seule fois pour se déconnecter.
Page 100/134
PHP - MySQL avec DreamWeaver
2.31 RESTREINDRE L'ACCES A UNE PAGE EN FONCTION DE LA
CONNEXION (ON/OFF)
2.31.1 Objectif et écrans
Restreindre l'accès à une page en fonction de l'état de la connexion (On/OFF).
L'utilisateur doit être connecté pour visualiser la page en question.
Si l'utilisateur n'est pas connecté ou est déconnecté la page ne sera pas accessible.
En fait Dreamweaver joue avec la variable de session créée lors de la connexion.
ou bien en cas d'échec
Page 101/134
PHP - MySQL avec DreamWeaver
2.31.2 Démarche
La page HTML à afficher en cas d'échec (absence_de_connexion.html) doit exister au
préalable.
Créez un nouveau document PHP (villes_tableau_sous_controle.php) et créez un tableau
dynamique sur Villes par exemple.
Ensuite lancer l'assistant
Cette boîte de dialogue apparaît; cliquez sur "Nom et mot de passe", puis cliquez sur
"Parcourir" pour affectez le nom de la page de refus.
Testez :
Connectez-vous
Affichez la page villes_tableau_sous_controle.php… c'est OK
Déconnectez-vous
Affichez la page villes_tableau_sous_controle.php… c'est KO
Page 102/134
PHP - MySQL avec DreamWeaver
2.32 RESTREINDRE L'ACCES A UNE PAGE EN FONCTION DE LA
QUALITE DE L'UTILISATEUR
et
2.32.1 Objectif
Contrôler l'usage du site. La visualisation est possible ou impossible en fonction de la
"qualité" du client (Back-office/Front-office, …).
Page 103/134
PHP - MySQL avec DreamWeaver
2.32.2 Démarche
Reprendre la table utilisateurs et éventuellement ajoutez le champ "qualite", ce qui donne
cette structure finale : utilisateurs (ut, mdp, qualite).
Dans cette table utilisateurs les valeurs pour le champ "qualite" sont bo, fo, adm, …
Créez d'abord un document HTML pas_bo.html, pour afficher un message d'erreur aux
utilisateurs qui ne sont pas Opérateurs Back-Office.
Créez ensuite un document PHP (authentification_qualifiee.php) pour la connexion au site.
Dans ce document créez un formulaire
nommé "authentification".
Créez deux Input Text
(it_ut, it_mdp).
Créez un bouton
Submit (Envoyer).
Lancez l'assistant "Connecter l'utilisateur"
En bas sélectionnez le bouton radio
Ouvrez la liste
.
… et sélectionnez "qualite".
Page 104/134
PHP - MySQL avec DreamWeaver
Les pages à accès restreints
Ensuite créez autant de pages PHP que nécessaire pour le BO (Opérateur Back-Office) et lui
seul.
Ajoutez le comportement serveur de contrôle d'accès :
Sélectionnez
.
.
Cliquez sur le bouton
Cliquez sur le bouton
Et saisissez "bo" dans nom.
Validez sur OK
Dans la première fenêtre cliquez sur le bouton
message d'erreur
Enfin validez encore sur OK
Testez :
Connectez-vous avec un utilisateur BO
Ouvrez un page réservez aux BO
Connectez-vous avec un utilisateur FO.
Ouvrez un page réservez aux BO
pour sélectionner la page HTML de
Si on veut spécifier plusieurs niveaux de qualite autorisés, il faut les sélectionner avant
de quitter l’utilitaire – le fait de les ajouter à la liste des droits ne suffit pas !!!
Page 105/134
PHP - MySQL avec DreamWeaver
2.33 VERIFIER LE NOM D'UN NOUVEL UTILISATEUR
2.33.1 Objectif et écrans
Si deux utilisateurs ne peuvent avoir le même nom, vous pouvez pour contrôler, utiliser ce
comportement serveur
.
2.33.2 Démarche
Il faut en premier lieu créer un fichier HTML (utilisateur_deja_existant.html) qui affichera un
message en cas d'échec d'insertion.
Ensuite il faut créer un deuxième document, PHP cette fois (utilisateur_insert.php), pour saisir
le nouvel utilisateur.
Il faut au préalable créer un formulaire de saisie de nouvel utilisateur avec l'assistant suivant
Et ensuite utiliser l' assistant :
Cet écran vous sera proposé.
Page 106/134
PHP - MySQL avec DreamWeaver
ANNEXES
2.34 JEUX DE CARACTERES
2.34.1 Présentation
En fonction de l'encodage de la page HTML ou PHP (iso-8859-1 ou is-8859-15 ou encore
UTF-8) et de la nature des données à transmettre ou afficher, il faudra opérer une conversion
de code avec la fonction PHP mb_convert_encoding("texte, "encodage destination",
"encodage source").
Exemple : mb_convert_encoding("C'est bientôt l'été", "ISO-8859-15", "auto").
2.34.2 PHP
•
Page codée en iso-8859-15
<head>
<title>jeux_de_caracteres.php</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
</head>
<body>
C'est bientôt l'été, ça c'est bien. Nous allons dépenser des €<br />
<?php echo "C'est bientôt l'été, ça c'est bien. Nous allons dépenser des €" ; ?>
</body>
Les caractères accentués et le symbole € sont bien restitués.
Note : bien ceci sera restitué correctement avec UTF-8 ou ISO-8859
&ccedil;a c'est l'&eacute;t&eacute;, nous allons d&eacute;penser des &euro;<br />
Page 107/134
PHP - MySQL avec DreamWeaver
•
Page codée en iso-8859-1
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
C'est bientôt l'été, ça c'est bien. Nous allons dépenser des €<br />
<?php echo "C'est bientôt l'été, ça c'est bien. Nous allons dépenser des €" ; ?>
</body>
Seuls les caractères accentués sont bien restitués.
•
Page codée en UTF-8
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
C'est bientôt l'été, ça c'est bien. Nous allons dépenser des €<br />
<?php echo "C'est bientôt l'été, ça c'est bien. Nous allons dépenser des €" ; ?>
</body>
Les caractères accentués et le symbole € ne sont pas correctement restitués.
Page 108/134
PHP - MySQL avec DreamWeaver
•
Page codée en UTF-8 et transcodée par PHP.
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
C'est bientôt l'été, ça c'est bien. Nous allons dépenser des €<br />
<?php echo mb_convert_encoding("C'est bientôt l'été, ça c'est bien. Nous allons dépenser des €",
"ISO-8859-15", "UTF-8") ; ?>
</body>
Avec la fonction mb_convert_encoding() de PHP les caractères accentués et le symbole €
sont bien restitués.
2.34.3 MySQL et PHP
Le même problème surgit. Il faut alors utiliser MB_CONVERT_ENCODING pour insérer les
données.
Page 109/134
PHP - MySQL avec DreamWeaver
2.35 UPLOADER UN FICHIER
2.35.1 Objectif et écrans à réaliser
Objectif : Dans la page d’insertion d’un nouvel auteur, copier un fichier jpg ou autre du
poste client vers le fichier images du site bibliotheque(serveur) et enregistrer le nom du fichier
dans la base de données bibliotheque.
Les fichiers autres que les fichiers images (jpg, jpeg, gif, png, bmp,…) seront interdits.
Les fichiers dépassant la taille de 50 000 octets seront aussi interdits.
Page 110/134
PHP - MySQL avec DreamWeaver
Page 111/134
PHP - MySQL avec DreamWeaver
Page 112/134
PHP - MySQL avec DreamWeaver
2.35.2 Démarche
Créez le fichier HTML upload_ok.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>upload ok</title>
</head>
<body>
<p style=" color:#930; font-family:Georgia, 'Times New Roman', Times,
serif; font-size:22px">T&eacute;l&eacute;chargement du fichier
r&eacute;ussi!!</p>
</body>
</html>
Créez la page auteurs_insert.php avec l’assistant de Dreamweavec
et précisez comme page suivante upload_ok.html
Scripts (les parties à ajouter à la main sont en jaune)
auteurs_insert.php
modifier le script créer avec l’assistant comme ci-après
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO auteurs (nomAuteur, prenomAuteur, bio,
pays, photoAuteur, site) VALUES (%s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['nomAuteur'], "text"),
GetSQLValueString($_POST['prenomAuteur'], "text"),
GetSQLValueString($_POST['bio'], "text"),
GetSQLValueString($_POST['pays'], "int"),
GetSQLValueString($_FILES['photoAuteur']['name'],
"text"),
GetSQLValueString($_POST['site'], "text"));
mysql_select_db($database_cn_bibliotheque, $cn_bibliotheque);
Expression régulière pour
$Result1 = mysql_query($insertSQL, $cn_bibliotheque) or
vérifier le format du fichier
die(mysql_error());
choisi par l’utilisateur
$insertGoTo = "../html/upload_ok.html";
//***** vérification du format du fichier ****//
if(!preg_match('#jpg|jpeg|bmp|png|gif|tif#i',$_FILES['photoAuteur']['name']
)) $insertGoTo="upload_notOK.php?erreur=5";
else {
//****** upload du fichier ****//
$source=$_FILES['photoAuteur']['tmp_name'];
$cible="../images/".$_FILES['photoAuteur']['name'];
move_uploaded_file($source,$cible);
}
//******** vérification erreur de transfert
if ($_FILES['photoAuteur']['error']!=0)
Upload du fichier
Page 113/134
PHP - MySQL avec DreamWeaver
$insertGoTo="upload_notOK.php?erreur=".$_FILES['photoAuteur']['error'];
En cas d’erreur on
va vers
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?"; upload_notOK.php
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
mysql_select_db($database_cn_bibliotheque, $cn_bibliotheque);
$query_Recordset1 = "SELECT * FROM pays";
$Recordset1 = mysql_query($query_Recordset1, $cn_bibliotheque) or
die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
L’atttribut enctype
<head>
obligatoire
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Nouvel auteur</title>
</head>
<body>
<h1>Nouvel Auteur</h1>
<form action="<?php echo $editFormAction; ?>" method="post" id="form1"
enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="5100" />
<table>
Taille maximale autorisée en
<tr valign="baseline">
octet.
<td align="right">Nom:</td>
il doit être
mis avant le input file
<td><input type="text" name="nomAuteur" value="" size="32"
/></td>
</tr>
pour être pris en compte par tous
<tr valign="baseline">
les navigateurs
<td align="right">Pr&eacute;nom</td>
<td><input type="text" name="prenomAuteur" value="" size="32" /></td>
</tr>
<tr valign="baseline">
<td align="right" valign="top">Bio:</td>
<td><textarea name="bio" cols="50" rows="5"></textarea></td>
</tr>
<tr valign="baseline">
<td align="right">Pays:</td>
<td><select name="pays">
<?php
do {
?>
<option value="<?php echo $row_Recordset1['idPays']?>" ><?php echo
$row_Recordset1['nomPays']?></option>
<?php
} while ($row_Recordset1 = mysql_fetch_assoc($Recordset1));
?>
</select></td>
</tr>
<tr> </tr>
<tr valign="baseline">
<td align="right">PhotoAuteur:</td>
<td><input type="file" name="photoAuteur" value="" size="32" /></td>
</tr>
<tr valign="baseline">
Le champ est de
type file
Page 114/134
PHP - MySQL avec DreamWeaver
<td align="right">Site:</td>
<td><input type="text" name="site" value="" size="32" /></td>
</tr>
<tr valign="baseline">
<td align="right">&nbsp;</td>
<td><input type="submit" value="Ins&eacute;rer un enregistrement"
/></td>
</tr>
</table>
<input type="hidden" name="MM_insert" value="form1" />
</form>
<p>&nbsp;</p>
</body>
</html>
<?php
mysql_free_result($Recordset1);
?>

upload_notOk.php
copiez/collez le script ci-dessous
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>erreur upload</title>
</head>
<body>
<p style=" color:#930; font-family:Georgia, 'Times New Roman', Times,
serif; font-size:22px">
<?php
//
switch ($_GET['erreur']){
case 1: // UPLOAD_ERR_INI_SIZE
echo"Le fichier dépasse la limite autorisée par le
serveur !";
break;
case 2: // UPLOAD_ERR_FORM_SIZE
echo "Le fichier dépasse la limite autorisée dans le
formulaire HTML !";
break;
case 3: // UPLOAD_ERR_PARTIAL
echo "L'envoi du fichier a été interrompu pendant le
transfert !";
break;
case 4: // UPLOAD_ERR_NO_FILE
echo "Le fichier que vous avez envoyé a une taille nulle
!";
break;
case 5: // RESULTAT EXPRESSION REGULIERE SUR LE TYPE
echo "seuls les fichiers de type image sont
autoris&eacute;s!!";
break;
}
?>
</p>
</body>
Page 115/134
PHP - MySQL avec DreamWeaver
</html>
2.36 AJOUT D'UN ABONNE AVEC DES CONTROLES DE SAISIE
Objectif : utiliser les expressions régulières pour contrôler côté serveur les saisies de
l'internaute.
Démarche : créez un formulaire d'insertion pour la table abonnes.
La table abonnes contient désormais un champ e_mail de type varchar(50).
Modifiez le script généré par l'assistant comme suit :
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1"))
{
$erreur=null;
// --- Contrôle mailAbonne
if(!preg_match("#^[0-9a-zA-Z._-]+@{1}[0-9a-zA-Z._-]{2,}[.]{1}[a-zAZ]{2,5}$#",$_POST['mailAbonne']) $erreur.="format de mail invalide<br/>" ;
// --- Contrôle cp
if(!preg_match("#^[0-9]{5}$#",$_POST['cpAbonne'])$erreur.="CP
incorrect<br/>" ;
// --- Contrôle nomAbonne
if(!preg_match("#^[A-Z \'-]*$#",$_POST['nomAbonne'])
invalide!!";
if ($erreur==null) {
$erreur.="Nom
$insertSQL = sprintf("INSERT INTO clients (nom, cp, e_mail, adresse_client, prenom_client, photo)
VALUES (%s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['nom'], "text"),
GetSQLValueString($_POST['cp'], "text"),
GetSQLValueString($_POST['e_mail'], "text"),
GetSQLValueString($_POST['adresse_client'], "text"),
GetSQLValueString($_POST['prenom_client'], "text"),
GetSQLValueString($_POST['photo'], "text"));
mysql_select_db($database_cn_cours, $cn_cours);
$Result1 = mysql_query($insertSQL, $cn_cours) or die(mysql_error());
}
Note : L'e-mail est composé ainsi (cf http://fr.wikipedia.org/wiki/Adresse_%C3%A9lectronique)
Page 116/134
PHP - MySQL avec DreamWeaver
2.37 ENVOYER UN MAIL
2.37.1 Généralités
La programmation de services de messagerie nécessite l'utilisation de la fonction mail (qui est
intégrée au noyau PHP) et éventuellement des fonctions imap_ qui nécessitent l'utilisation des
extensions php_imap. Dans php.ini il faut :
 décommenter extension=php_imap.dll
 décommenter extension=php_smtp.dll
mettre votre smtp à la ligne SMTP = localhost
décommenter sendmail_from = [email protected]
Nous verrons l'envoi de mails.
Dans un premier en statique (Du texte d'abord, des images ensuite).
Dans un deuxième temps en dynamique, à partir de données de la BD.
2.37.2 Envoi d'un mail de texte
Objectif
Envoyer du texte par mail. Le paramètre message contient du texte brut.
Fonction utilisée
Fonction
Mail(destinataire, objet, message, en-têtes supplémentaires
)
Description
Envoie un mail
Script
<?php
$destinataire = "[email protected]" ;
$objet = "test envoi mail php";
$message ="mon premier mail avec php";
$expediteur="[email protected]";
$entetes = "From: $expediteur ";
mail($destinataire,
$objet,
$message,
$entetes
) ;
?>
Page 117/134
PHP - MySQL avec DreamWeaver
Le mail
Page 118/134
PHP - MySQL avec DreamWeaver
2.37.3 Envoyer un mail à partir d’un formulaire
Envoyer un mail à partir d’un formulaire de contact est chose courante.
Dans ce cas le format du mail est en HTML. Le mini-framewvork phpmailer vous permet
d’envoyer des mails avec facilité .
Le formulaire de contact
Créer un formulaire de contact
2.37.4 Envoyer un mail avec une pièce jointe
Objectif
Envoyer un mail qui ne contient que du texte HTML et une image intégrée avec la balise
<img>.
C'est la méthode la plus simple pour faire apparaître une image dans le contenu du message.
Le mail
Script
<?php
mail
("[email protected]",
"Objet : Test MIME à partir de php : une photo",
"<html><body>".
Page 119/134
PHP - MySQL avec DreamWeaver
"<h1>Test envoi HTML</h1>".
"<font color=red> Du rouge </font>".
"<img src=\"http://pascal.buguet.free.fr/php/saint_pierre.jpg\"".
"</body></html>",
"Content-Type: text/html; charset=\"iso-8859-1\""
);
?>
Page 120/134
PHP - MySQL avec DreamWeaver
2.37.5 Mails et BD.
Objectif
Envoyer un mail qui contient du texte HTML et une image à des destinataires stockés dans
une BD.
Script
<?php
// --- Connexion à la BD
$lien = mysql_connect("localhost","root","") ;
// --- Sélection de la base mysql
mysql_select_db("cours",$lien) ;
// --- Construction de l'ordre SQL et exécution
$ls_select = "select e_mail from clients where e_mail is not null"
// --- Exécution de la requête
$jeu_enrs = mysql_query($ls_select, $lien) ;
// --- Boucle de balayage
while ($enregistrement = mysql_fetch_row($jeu_enrs))
{
$mail_client = $enregistrement[0] ;
mail(
$mail_client,
"Objet : Offre exceptionnelle",
"<html><body>".
"<img src=\"http://www.serveur.fr/php/logo.jpg\""><br /><br />" .
"<h1>Nos promotions</h1>" .
"<font color=red>Du 1er au 15 avril</font>" .
"</body></html>",
"Content-Type: text/html; charset=\"iso-8859-1\""
);
}
?>
Page 121/134
PHP - MySQL avec DreamWeaver
2.38 GESTION DES COOKIES
2.38.1 Définition
Les cookies, qui nécessitent l'autorisation de l'utilisateur, via la configuration de son
navigateur, permettent de stocker dans un fichier situé sur le poste utilisateur des données en
petites quantités.
Les cookies sont de 4 ko au maximum. Un client ne peut supporter que 300 cookies. Un
serveur ne peut créer que 20 cookies sur un poste client.
Il est ainsi possible de faire une gestion de panier, de mémoriser les préférences des
utilisateurs et visiteurs d'un site.
2.38.2 Syntaxe
Pour créer ou affecter une valeur au cookie
setCookie("nom_du_cookie",$valeur [ , date expiration]) ;
Pour récupérer la valeur du cookie
$valeur = $_COOKIE["nom_du_cookie"];
2.38.3 Exemples
setCookie( "cookie1" , "un") ; // --- Durée de vie infinie
setCookie( "cookie2" , "deux" , time() + 180) ; // --- Durée de vie de 3 minutes
setCookie( "cookie3" , "trois" , time() + ( 3600 * 24 * 7 ) ) ; // --- durée de vie de 7 jours
// Durée de vie jusqu'à une date précise mktime(heures, minutes, secondes, mois, jour, année)
setCookie( "cookie5" , "quatre" , mktime(19,45,0,3,24,2005) ) ;
setCookie( "cookie5" , "cinq" , time() ) ; // Durée de vie nulle
foreach($_COOKIE as $cle => $valeur) {print($cle . ":" . $valeur . "<br>" ); } // Pour les afficher tous
Page 122/134
PHP - MySQL avec DreamWeaver
2.38.4 Exemple dynamique
Ecrans
Ecrans
Description
Une page HTML
pour saisir une
valeur
Une page PHP
pour créer le
cookie
Une page PHP
pour récupérer la
valeur du cookie
Page 123/134
PHP - MySQL avec DreamWeaver
Les scripts
•
cookie_saisie.html
<html>
<head><title>Saisie Cookie</title></head>
<body>
<form action="cookie_valider.php" method="post">
Saisissez votre prénom et votre nom : <input type="text" name="tb_prenom_nom" />
<input type="submit" value="Valider" />
</form>
</body>
</html>
•
cookie_valider.php
<?php
$ls_valeur = $_POST["tb_prenom_nom"] ;
setCookie("prenom_nom",$ls_valeur) ;
echo "$ls_valeur, vos données ont été enregistrées" ;
?>
•
cookie_affichage.php
<?php
$ls_valeur = $_COOKIE["prenom_nom"];
echo "Bonjour $ls_valeur" ;
?>
Page 124/134
PHP - MySQL avec DreamWeaver
2.39 GESTION DES SESSIONS
2.39.1 Définition
Une session permet de conserver au cours de la visite d'un utilisateur sur un site des variables
sur le serveur.
Au début d'une session utilisateur un identifiant de session est créé et attribué. Si le client
accepte les cookies cet identifiant sera stocké dans un cookie autrement il faudra le passer
dans l'URL du navigateur en réalisant une réecriture d'URL. Les variables de session dans
tous les cas sont stockées dans des fichiers plats sur le serveur.
2.39.2 Syntaxe
Pour spécifier que l'on va utiliser les variables de session il faut au début de chaque page PHP
solliciter la fonction session_start().
session_start() ;
Pour créer une variable de session ou lui affecter une valeur
$_SESSION["nom_de_variable"] = $ls_nom ;
Pour récupérer une valeur d'une variable de session
print($_SESSION["nom_de_variable"]) ;
Pour détruire une variable de session
unset($_SESSION["nom_de_variable "]) ;
Pour détruire toutes les variables de session
$_SESSION = array() ;
Pour terminer une session (qui détruit aussi les variables)
session_destroy()
Page 125/134
PHP - MySQL avec DreamWeaver
2.39.3 Exemple dynamique
Ecrans
Ecrans
Description
Une page HTML
pour saisir une
valeur.
Une page PHP
pour affecter la
valeur saisie à une
variable de session.
Une page PHP
pour récupérer la
variable de session.
Page 126/134
PHP - MySQL avec DreamWeaver
Scripts
•
Session_saisie.html
<html>
<head><title>Saisie Session</title></head>
<body>
<form action="session_validation.php" method="get">
Saisissez votre prénom et votre nom : <input type="text" name="tb_prenom_nom" />
<input type="submit" value="Valider" />
</form>
</body>
</html>
•
session_validation.php
<?php
session_start();
$ls_valeur = $_GET["tb_prenom_nom"] ;
$_SESSION["prenom_nom"] = $ls_valeur ;
echo "$ls_valeur, vos données ont été enregistrées" ;
?>
•
session_affichage.php
<?php
session_start();
$ls_valeur = $_SESSION["prenom_nom"];
echo "Bonjour $ls_valeur" ;
?>
Page 127/134
PHP - MySQL avec DreamWeaver
Mais la gestion de session n'est possible que si l'internaute accepte les cookies.
Il est possible de gérer l'état de la session sans cookie, ni session avec des champs de
formulaires cachés, des stockages temporaires dans des fichiers serveur ou des tables
temporaires de BD.
Page 128/134
PHP - MySQL avec DreamWeaver
2.40 GESTION DE PANIER
2.40.1
Objectif
Créer une mini application de gestion de panier en utilisant les assistants de Dream et en codant quelques lignes
de PHP.
2.40.2
Ecrans
Le catalogue avec les liens.
L'ajout d'un produit
L'ajout d'un autre produit
La visualisation du panier
Page 129/134
PHP - MySQL avec DreamWeaver
2.40.3
Démarche
Les cookies doivent être acceptés par le navigateur.
La gestion est réalisée via des variables de session.
Créez dans cet ordre 3 documents PHP :



•
produits_panier_modifier.php : pour remplir le panier.
produits_catalogue.php : pour afficher le catalogue.
produits_panier_visu.php : pour visualiser le contenu du panier.
produits_panier_modifier.php
<?php
session_start();
$produit = $_GET["id_produit"];
if(isSet($_SESSION["panier"])) $_SESSION["panier"] .= ";" . $produit ;
else $_SESSION["panier"] = $produit ;
print ("Le produit <strong>$produit</strong> a été ajouté au panier");
?>
•
produits_catalogue.php
Créez un tableau dynamique sur la table Produits.
Modifiez la colonne id_produit comme suit :
<td><?php echo $row_rs_produits['id_produit']; ?></td>
devient (ce qui est en rouge et en gras a été ajouté)
<td><a href='produits_panier_modifier.php?id_produit=<?php echo $row_rs_produits['id_produit'];
?>'><?php echo $row_rs_produits['id_produit']; ?></a></td>
•
produits_panier_visu.php
<?php
session_start();
if(isset($_SESSION["panier"]))
{
$produits = explode(";",$_SESSION["panier"]);
print("<br />Le panier comprend <strong>" . count($produits). "</strong> produit(s) : ") ;
for($li_ctr=0;$li_ctr< count($produits);$li_ctr++) print("<br />Le produit : $produits[$li_ctr]")
;
}
else print("<br />Le panier est vide<br />") ;
?>
Notes : pour avoir une gestion complète il faut stocker dans des tables cdes et ligcdes le contenu du panier lorsqu'il est validé et en stockant
des informations concernant le client dans la table Clients.
Page 130/134
PHP - MySQL avec DreamWeaver
2.41 MESURES DE SECURITE
2.41.1 Gérer les mots de passe serveur
Mettez un mot de passe à l'utilisateur root.
2.41.2 Protéger vos dossiers
Contre le listage du contenu d'un dossier.
Créez un fichier index.html ou index.php dans chaque dossier de votre site.
Contre l'accès aux utilisateurs non habilités.
Créez des fichiers .htaccess et le fichier .htpasswd qui les accompagne dans chaque dossier
confidentiel contenant des documents PHP et/ou HTML.
.htaccess
AuthName "Page d'administration protégée"
AuthType Basic
AuthUserFile ".htpasswd"
Require valid-user
.htpasswd
pascal:mdp
annabelle:mdp
Seuls les utilisateurs qui saisiront pascal/mdp ou annabelle/mdp dans la boîte de dialogue
suivante pourront accéder aux pages du dossier.
Page 131/134
PHP - MySQL avec DreamWeaver
2.41.3 Protéger l'accès à la base de données
Nouveaux utilisateurs sur le serveur.
Créez de nouveaux utilisateurs serveur/BD et limitez leur droits sur la ou les BD et sur les
tables.
Authentifiez les utilisateurs
Mettez en place la table utilisateurs(ut, mdp, qualite) et les écrans d'authentification vus dans
les chapitres précédents.
Page 132/134
PHP - MySQL avec DreamWeaver
Chiffrez les mots de passe.
1) Créez des utilisateurs en chiffrant le mot de passe avec la fonction PHP md5().
Créez un document PHP (utilisateurs_ajout_md5.php) pour ajouter un nouvel utilisateur dans
la table Utilisateurs.
En utilisant l'assistant
Recherchez la ligne de code généré suivante :
GetSQLValueString($_POST['mdp'], "text"),
Et modifiez-la ainsi :
GetSQLValueString(md5($_POST['mdp']), "text"),
Dans la table les valeurs seront les suivantes pour un utilisateur de nom "protege" de mot de
passe "mdp" et de qualite "bo" :
2) Créez une page d'authentification (connexion_md5.php) en utilisant la fonction md5() de
PHP.
Recherchez la ligne de code généré suivante :
$password=$_POST['it_mdp'];
Et modifiez-la ainsi :
$password=md5($_POST['it_mdp']);
Page 133/134
PHP - MySQL avec DreamWeaver
2.41.4 Masquer PHP
Modifiez le fichier httpd.conf en remplaçant la ligne suivante :
AddType application/x-httpd-php .php .php3 …
Par celle-ci :
AddType application/x-httpd-php .htm .html
Tous vos fichiers (HTML, PHP) devront avoir l'extension HTML.
Ceci est possible seulement si vous êtes votre propre fournisseur ou si
vous possédez un espace dédié chez votre fournisseur.
Evitez d'utiliser la méthode GET dans les formulaires.
Contrôlez la nature des saisies (Numériques, texte, dates,…) dans les formulaires.
Contrôlez la nature et la taille des fichiers Uploadés.
Interdisez l'utilisation de certaines fonctions PHP sur votre site (Exec, System,…). Cette
dernière protection est possible seulement si vous êtes votre propre fournisseur ou si vous
possédez un espace dédié chez votre fournisseur.
2.42 SCRIPT
2.42.1 convertir jj/mm/aaaa en aaaa-mm-jj
<?php // déclaration de la fonction
function dateFR_EN ($date){
$d=explode('/', $date);
$date=$d[2].'-'.$d[1].'-'.$d[0];
return $date;
}
?>
<?php
// appel de la fonction
echo dateFR_EN ('28/04/2013');
?>
2.42.2 convertir aaaa-mm-jj en jj-mm-aaaa
<?php // déclaration de la fonction
function dateFR_EN ($date){
$d=explode('-', $date);
$date=$d[2].'/'.$d[1].'/'.$d[0];
return $date;
}
?>
<?php
// appel de la fonction
echo dateFR_EN ('2013-03-24');
?>
Page 134/134