AP3.2: les bases de données (MySQL) et PHP. Informatique



Documents pareils
Création d'un site dynamique en PHP avec Dreamweaver et MySQL

SYSTEME DE GESTION DES ENERGIES EWTS EMBEDDED WIRELESS TELEMETRY SYSTEM

Stockage du fichier dans une table mysql:

Les possibilités de paramétrage réseau des logiciels de virtualisation sont les suivantes quant à la connexion réseau :

Installation locale de JOOMLA SEPIA

Gestion des documents avec ALFRESCO

POVERELLO KASONGO Lucien SIO 2, SISR SITUATION PROFESSIONNELLE OCS INVENTORY NG ET GLPI

Microsoft Hosted Exchange 2010 DOCUMENT D EXPLOITATION

Un serveur web, difficile?

Le service de création de site Internet : Mode d emploi. La Création de Site Internet

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Mise en oeuvre d un Serveur de CD AXIS StorPoint

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

L accès à distance du serveur

GUIDE D UTILISATION ADSL ASSISTANCE

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Guide Utilisateur - Guide général d'utilisation du service via Zdesktop ou Webmail v.8. Powered by. Version EXOCA 1

Internet : Naviguer en toute sérénité

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

UltraVNC, UltraVNC SC réglages et configurations

PHP 5. La base de données MySql. A. Belaïd 1

Notice d'utilisation Site Internet administrable à distance

Internet Explorer. Microsoft. Sommaire :

Gestion des utilisateurs : Active Directory

Configurez votre Neufbox Evolution

Utilisation de la clé USB et autres supports de stockages amovibles

KAJOUT WASSIM INTERNET INFORMATION SERVICES (IIS) 01/03/2013. Compte-rendu sur ISS KAJOUT Wassim

Débuter avec OOo Base

Table des matières. 1. Description du matériel : Données techniques : Présentation de la serrure :... 4

Sommaire. I.1 : Alimentation à partir d un fichier Access (.mdb)...2

WINDOWS SERVER 2003-R2

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

l'ordinateur les bases

2010 Ing. Punzenberger COPA-DATA GmbH. Tous droits réservés.

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

DOSSIER D'ACTIVITES SUR LE PHP N 03 Créer une base de données MySQL avec PHPMyAdmin

1 Introduction et installation

Le générateur d'activités

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Création de Sous-Formulaires

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Installation et paramétrage de Fedora dans VirtualBox.

Edutab. gestion centralisée de tablettes Android

ENVOI EN NOMBRE DE Mails PERSONNALISES

Les BASES de DONNEES dans WampServer

Comment bien démarrer avec. NetAirClub GUIDE ADMINISTRATEUR V1.5. Table des matières

DOCUMENTATION VISUALISATION UNIT

Assistance à distance sous Windows

WordPress :: Migrer son site du local vers le serveur en ligne

Tutorial sur SQL Server 2000

Web service AREA Manuel d installation et d utilisation du mode déconnecté. Version du 18 mars 2011

Administration du site (Back Office)

Manuel Utilisateur de l'installation du connecteur Pronote à l'ent

Movie Cube. Manuel utilisateur pour la fonction sans fil WiFi

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

But de cette présentation

Foucart Digeon SISR1-CH7 Mise en place d'un serveur FTP BTS SIO 08/04/2013. SISR1 CH7 Mise en place d'un serveur FTP. - Page 1 -

Sélection du contrôleur

Ouvrir le compte UQÀM

OUAPI Guide d installation Outil d administration de parc informatique. Documentation d installation et de paramétrage

Mise en service HORUS version HTTP

Rapports d activités et financiers par Internet. Manuel Utilisateur

Saisissez le login et le mot de passe (attention aux minuscules et majuscules) qui vous ont

Utilisation du client de messagerie Thunderbird

Optimiser pour les appareils mobiles

Guide Utilisateur - Guide général d'utilisation du service via Zdesktop ou Webmail v.8. Powered by. - media-2001.communication &.

Table des matières. 1 À propos de ce manuel Icônes utilisées dans ce manuel Public visé Commentaires...

LES ACCES ODBC AVEC LE SYSTEME SAS

Configuration de GFI MailArchiver

eurobraille VOYONS ENSEMBLE MANUEL D'UTILISATION WIFI iris 40, 20 iris-s 32, 20 iris-kb 40,20 VERSION 1.82

[WINDOWS 7 - LES FICHIERS] 28 avril Logiciel / Windows

Comment accéder à d Internet Explorer

Installation d un hébergement Web à domicile

Application de lecture de carte SESAM-Vitale Jeebop

Introduction à JDBC. Accès aux bases de données en Java

Insérer des images dans Base

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

SOMMAIRE 1 INTRODUCTION 4 2 GUIDE D UTILISATION ET TUTORIAUX VIDEOS EN LIGNE 4 3 CONTACTER VOTRE SUPPORT 4 4 RACCOURCIS CLAVIER 5

et de la feuille de styles.

Connecteur Zimbra pour Outlook 2007 et 2010 (ZCO) w

Un peu de vocabulaire

GUIDE D INSTALLATION RAPIDE DEXH264

Tutoriel Drupal version 7 :

Paramétrage des navigateurs

MO-Call pour les Ordinateurs. Guide de l utilisateur

Pratique et administration des systèmes

Initiation à l informatique. Module 7 : Le courrier électronique ( , mail)

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Manuel d'utilisation d'apimail V3

Groupe Eyrolles, 2003, ISBN : X

Tutorial Terminal Server sous

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Navigation dans Windows

Publication dans le Back Office

Capture, Filtrage et Analyse de trames ETHERNET avec le logiciel Wireshark. Etape 1 : Lancement des machines virtuelles VMWARE et de Wireshark

Transcription:

STI2D Option SIN Première AP3.2: les bases de données (MySQL) et PHP Informatique Durée prévue : 4h. Problématique : rendre accessible, par le biais d'internet, des données issues d'un capteur Compétences visées Être capable de mettre en œuvre une base de donnée avec PHP Plan de l étude Partie 1 : arduino en mode serveur Partie 2.1 : qu'est-ce qu'une base de données? Partie 2.2 : arduino en mode client Savoirs associés Remarque Arduino, ethernet shield et HTML MySQL + PHP Arduino, HTML, PHP et MySQL Logiciels Notepad++ Mozilla Firefox Wamp Wireshark Matériels Ordinateur Mode de distribution Format numérique les balises HTML5.pdf les propriétés CSS3.pdf caracteres_speciaux_html.pdf Dossier technique associé Dossier ressource associé Site internet ressource concevez-votre-site-web-avec-php-et-mysql.pdf http://openclassrooms.com

Un compte-rendu est à rendre au professeur (sous forme informatique ou papier). La forme informatique est à privilégier car elle permet d'intégrer les codes des pages réalisées. La problématique : comment rendre accessible des données issues de mesures (par exemple la température d'une pièce) de partout grâce à internet? Nous allons découvrir 2 solutions : la première va consister à transformer notre carte arduino en serveur. Cette carte va faire la mesure du capteur et lorsque quelqu'un accédera à notre serveur-arduino, celuici va générer la page HTML avec la mesure. La deuxième solution, plus réaliste, va consister à écrire dans une base de données nos mesures issues du capteur. Ensuite une page PHP va aller lire les mesures présentes dans la base de données et les afficher sur une page web. Partie 1 : arduino en mode serveur Précision: si le arduino est en mode serveur, c'est lui qui va générer le site web (ici en html) suivant le principe suivant : Nous allons utiliser le module Ethernet Shield : Ce module Ethernet Arduino permet à une carte Arduino de se connecter à un réseau ethernet. Il suffit d'utiliser la librairie Ethernet pour écrire des programmes qui se connectent à internet en utilisant ce module. Ce module possède aussi un connecteur pour carte SD, qui pourra être utilisé pour stocker des fichiers qui pourront être envoyés sur le réseau. Votre shield Ethernet possède un numéro unique (appelé une adresse MAC pour Media Access Control address). Cette adresse MAC est l'identifiant physique stocké dans un composant de la carte et qui est utilisé pour attribuer mondialement une adresse unique à chaque élément connecté au réseau. 1. Relevez l'adresse MAC de la carte ethernet Shield : adresse MAC du shield ethernet 90 A2 DA 2/16

2. Demandez au professeur de monter les 3 cartes ensemble : un dangershield un ethernet shield un arduino (uno ou mega) 3. Demandez au professeur l'adresse IP réservée correspondant à votre carte Ethernet Shield Soit le programme arduino suivant : #include <SPI.h> // bibliothèque de la liaison série #include <Ethernet.h> //Inclure la bibliothèque Ethernet // Adresse MAC du shield l'adresse IP dépend de votre réseau local byte mac[] = 0x90, 0xA2, 0xDA, 0x0F, 0x15, 0x15 ; IPAddress ip(192,168,1,62); // à choisir sur votre réseau local version adresse IP fixée int CAPTEUR_TEMP_PIN = 4; // adressage du capteur de temperature (PIN) // int SLIDER1_PIN = 0; int SLIDER2_PIN = 1; int SLIDER3_PIN = 2; int potentiom1 = 0; //définition de la variable entière (integer) potentiom1// int potentiom2 = 0; //définition de la variable entière (integer) potentiom2// int potentiom3 = 0; //définition de la variable entière (integer) potentiom3// int temp = 0; //définition de la variable entière (integer) // float temperature = 0; // variable temperature en flottant // float const_can = 0.0048828; // constante du convertisseur // EthernetServer server(80); //Initialise le serveur Ethernet, port 80 par défaut pour HTTP void setup() Ethernet.begin(mac,ip); //Démarrer la connexion Ethernet et le serveur (version DHCP) server.begin(); Serial.begin(9600); //Affichage écran du PC analogread(capteur_temp_pin); analogread(slider1_pin); void loop() temp = analogread(capteur_temp_pin); // lecture du capteur de température // temperature = (((temp*const_can)*1000)-500)/10; //calcul// potentiom1 = analogread(slider1_pin); // lecture potentiomètre 1 // potentiom2 = analogread(slider2_pin); // lecture potentiomètre 2 // potentiom3 = analogread(slider3_pin); // lecture potentiomètre 3 // // Ecouter les clients entrants EthernetClient client = server.available(); 3/16

if (client) Serial.println("new client"); Serial.print("adresse IP: "); Serial.println(Ethernet.localIP()); // Une requète HTTP terminée par une ligne vide boolean currentlineisblank = true; while (client.connected()) if (client.available()) // Envoyer un header de résponse standard http client.println("http/1.1 200 OK"); //C'est OK client.println(); client.println("<!doctype html>"); client.println("<html>"); //---- debut de la page HTML --client.println("<head>"); // ---- Entete de la page HTML ---client.println("<meta content=\"utf-8\">"); client.println("<meta HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=iso-8859-1\">"); client.println("<meta HTTP-EQUIV=\"Content-Language\" CONTENT=\"fr-FX\">"); client.println("<title>connexion au Serveur Arduino</title>"); client.println("</head>"); client.print("<body style=background-color:black>"); client.println(); client.println("<meta HTTP-EQUIV=\"Refresh\" CONTENT=\"1\">"); client.println("<center>"); // pour centrer la page HTML client.println("<p style=\"color: white\">************************************************* <br> </p>"); client.println("<h2 style=\"color: red\">bienvenue sur le serveur Arduino!</h2>"); client.println("<p style=\"color: white\">************************************************* <br> </p>"); client.println("<br>"); //saut de ligne // Sortir la valeur des mesures client.println("<p style=\"color: white\">"); client.print("temperature ambiante = "); client.print(temperature); client.print(" &degc"); client.println("</p>"); client.println("<p style=\"color: white\">"); client.print("<br/> potentiometre 1 = "); client.print(potentiom1); client.println("<br/>"); //saut de ligne client.print("potentiometre 2 = "); client.print(potentiom2); client.println("<br/>"); //saut de ligne client.print("potentiometre 3 = "); client.print(potentiom3); client.println("<br/>"); //saut de ligne client.println("</p>"); client.println("</center>"); // fin de la zone centrée client.println("</body>"); // fin du body client.println("</html>"); //---- fin de la page HTML break; delay(1); // Laisser au navigateur web le temps de recevoir les données client.stop(); // Refermer la connexion: Sur le programme précédent : 4. Entourez, en couleur, les déclarations de variable. 5. Entourez, en couleur, la ligne où rentrer l'adresse MAC 6. Entourez, en couleur, la ligne où rentrer l'adresse IP 7. Surlignez toutes las balises HTML que vous trouvez. 8. Quels sont les 2 instructions Arduino qui permettent d'envoyer un code HTML à votre ordinateur. 4/16

Donnez leur syntaxe (manière de les utiliser). 9. Copiez le programme précédent dans le logiciel arduino, modifier l'adresse MAC en mettant celle de votre carte Ethernet Shield et modifier l'adresse IP. 10. Téléversez ce programme dans votre arduino (il doit être relié à l'ordinateur et l'ethernet shield raccordé au réseau) 11. Dans Mozilla, tapez l'adresse IP de votre carte Ethernet (vous faites alors une demande à arduino qui va renvoyer la page web). Décrire en détail ce qui se passe. 12. Sur le programme précédent, rajoutez, en couleur, les commentaires manquants. 13. Pour afficher le C, on a utilisé un code spécial (voir «caracteres_speciaux_html.pdf). Quel est ce code? 14. Essayez de le remplacer simplement par pour voir si ça fonctionne. Conclure. Partie 2 : base de données gérée par PHP et remplie par le capteur de la carte Arduino Introduction : transformation de votre ordinateur en serveur local Le programme qui va transformer votre ordinateur en serveur s'appelle WAMP. Il va installer le serveur (Apache), la base de données (MySql) et tous les éléments permettant de se comporter comme un serveur. Vous allez créer un répertoire de travail que vous appellerez «test2_votre nom de famille». Pour ce faire, ouvrez l'explorateur Windows et rendez-vous dans le dossier où WAMP a été installé, puis dans le sousdossier intitulé www. Créez votre répertoire «test2_votre nom de famille» (normalement : c :\wamp\www\ ). Lancer maintenant le programme WAMP (wampserveur). Si l icône du logiciel (dans la barre du bas ou cliquer sur l icône «afficher les icônes cachées») est verte cela signifie que tout fonctionne. Si ce n'est pas le cas, cliquer (clic de gauche) sur l icône du logiciel et lancer les application («start all» service ou «démarrer les services»). Pour vérifier que tout fonctionne, dans la barre d'adresse de Mozilla tapez «http://localhost/». La fenêtre de gestion de notre serveur local doit apparaître ainsi que votre dossier de travail (rubrique «vos projets»). Partie 2.1 : qu'est-ce qu'une base de données? Introduction La base de données (BDD) est un système qui enregistre des informations de manière ordonnée. C'est une sorte de grand tableau mémoire où tout est rangé. Les SGBD (Systèmes de Gestion de Bases de Données) sont les programmes qui se chargent du stockage de vos données. Il y en a plusieurs. Ici nous allons nous servir de MySQL qui est libre, gratuit et très utilisé. On va aussi utiliser PHP, qui va faire l'intermédiaire entre nous et MySQL. On devra demander à PHP : «Va dire à MySQL de faire ceci.» suivant le principe ci dessous : 5/16

Structure d'une base de données : Une base de donnée est une sorte d'armoire qui contient différents tiroirs (appelés «tables»). Chaque table est une sorte de mini base de données : Exemple : la table «membre» d'un club de foot Date de Numéro nom prenom naissance 1 Martin toto 15-05-1970 2 ecole Gilbert 2-5-1983 3 Lamache kiki 14-7-2001 Concrètement, quand MySQL enregistre des informations, il les écrit dans des fichiers! Ces fichiers sont quelque part sur votre disque dur, mais il ne faut jamais les ouvrir et encore moins les modifier directement. Il faut toujours parler avec MySQL qui va se charger d'extraire et de modifier les informations dans ces fichiers. Pour gérer une base de données, soit on se sert de l'interface phpmyadmin (en général juste pour la création), soit de pages web en PHP, tout ça à l'aide de requêtes (une requête est une instruction compréhensible par MySql comme SELECT, INSERT, ). 1. Création de notre base de donnée et d'une première table Etape 1 : création de la base de donnée 'test': Aller dans phpmyadmin (menu WampServeur) et cliquer sur «Nouvelle base de données». Mettre le nom de votre base de donnée (test) et choisir 'utf8_general_ci' (encodage des caractères) et cliquer sur «créer». 6/16

Etape 2 : création de la table 'club' : Choisir dans 'phpmyadmin' la base de donnée 'test' que vous venez de créer (en cliquant dessus). Sur la partie centrale apparaît alors la fenêtre 'nouvelle table'. Mettre le nom de votre table (club), choisir 4 colonnes et cliquer sur 'Exécuter'. La table est crée. Il reste à la paramétrer ces 4 colonnes (id, nom, prenom et date_naissance). Voici le paramétrage à remplir (ne pas mettre d'accents): Quelques remarques : la colonne 'id', de type INT (nombre entier), est l'index primaire de la table (celui qui dicte en quelque sorte le classement des éléments de la table). La valeur sera mise automatiquement à chaque rentrée des données (on dit qu'elle est Auto-implémentée c'est pour cela que la case 'A.I.' est cochée). Les colonnes 'nom' et prénom sont de type VARCHAR (texte court : 0 à 255 caractères). La colonne 'date_naissance' est de type DATE selon la forme anglo-saxonne : jour, mois, année Une fois ce paramétrage effectué, cliquez sur 'Sauvegarder'. Çà y est, notre table est créée. Il ne reste plus qu'à la remplir! Etape 3 : essayons de la remplir à la main : Cliquez sur l'onglet «Insérer» et rentrez Hugo Jean né le 4 février 1989 : et cliquez sur 'Exécuter' pour valider. 7/16

Vous remarquerez que phpmyadmin vous bascule automatiquement sur l'onglet «SQL» dans lequel la vraie requête est écrite (une requête est une ligne de programme effectuant une action sur une base de données) 2. Recopier cette requête 3. Surlignez, de différentes couleurs, sur cette requête, le nom de votre table, le nom de votre base de données, le nom de l'instruction MySql composant la requête, les paramètres transmis à votre table dans la base de données et leur valeurs. Etape 4 : gestion de notre table 'club' avec PHP: Avec PHP, la structure va être toujours la même : connexion à la base de données gestion (lecture, écriture, ) de la ou les tables présentes dans la base de données ouverte Soit la page 'essai_sql_0.php' suivante : <?php // connection à la base de données try // On essaie de se connecter à MySQL $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', ''); catch(exception $e) // En cas d'erreur, on affiche un message et on arrête tout die('erreur : '.$e->getmessage()); // écriture dans la table $bdd->exec('insert INTO club (id, nom, prenom, date_naissance) VALUES(NULL, \'Martin\', \'Jacques\', \'1975-03-14\')'); echo ('donnee ecrite!');?> 4. Copiez la page 'essai_sql_0.php' dans 'notepad++' et enregistrez la dans votre répertoire de travail (test2_votre nom de famille). Lancer cette page (l'url est localhost/test2_votre nom de famille/essai_sql_0.php). Allez voir ensuite ce qui s'est passé dans la table 'club' de votre basse de donnée. Expliquez 5. Entourez, en couleur, sur le code de la page 'essai_sql_0.php' précédente, la partie concernant l'ouverture de la base de donnée 6. Entourez, en couleur, la partie où l'on insert les nouvelles valeurs dans la table 'club' Échapper un caractère : Quand on a besoin d'afficher un caractère spécial (comme >,<, '', /, ',.) mais que celui-ci a un sens dans la structure de l'instruction en cours il n'est pas possible de l'utiliser. Il faut donc le rendre inopérant (inactif), cela s'appelle «échapper un caractère». Pour cela il faut placer un slash \ devant le caractère. Par exemple pour rentre inactif > on utilisera \ > 8/16

Exemple tiré du programme précédent : $bdd->exec('insert INTO club (id, nom, prenom, date_naissance) VALUES(NULL, \'Martin\', \'Jacques\', \'1975-03-14\')'); en langage MySql la requête est normalement: INSERT INTO club (id, nom, prenom, date_naissance) VALUES(NULL, 'Martin', 'Jacques', '1975-03-14') 7. Surlignez les caractères ' échappés' dans l'exemple PHP précédent ($bdd->.) 8. Expliquez pourquoi ce caractère là a besoin d'être 'échapper' et pas le caractère présent dans la date. Etape 5 : manipulation de notre table 'club' avec PHP: Pour mémoire: nom de notre base de données : test nom de notre table : club noms des colonnes : id, nom, prenom, date_naissance Objectif : étude de quelques requêtes (SELECT FROM, UPDATE, DELETE FROM) et de leurs options. Vous allez prendre les 3 fichiers suivants (donnees_post.php, essai_sql_1.php et style.css) sur l'intranet et vous allez les copier dans votre répertoire de travail (c:/wamp/www/test2_votre nom de famille). La structure est la suivante : La page 'essai_sql_1.ph' est la page principale. Elle contient 2 parties. La première est la possibilité de rentrer un nouvel élément à votre table 'club' (en validant par 'Envoyer' ou la touche 'entrer' du clavier). Les données sont envoyées à la page ' donnees_post.php' qui écrit ces données dans la table 'club' et qui renvoie ensuite à la page 'essai_sql_1.ph'. La deuxième partie affiche le contenu de la base de donnée. La page 'style.css' est la page de mise en forme. essai_sql_1.ph : Nouvelle adhérent donnees_post.php Écriture dans la table 'club' de votre base de données Affichage du contenu de la table 'club' Lancer cette page (l'url est : localhost/test2_votre nom de famille/essai_sql_1.php) 9. Faire des essais pour comprendre comment tout fonctionne. 10. Recopier la requête qui est envoyée à la basse de donnée par votre page php (instruction 'query') pour afficher le contenu de votre table 'club'. Essayez d'expliquer ce qu'elle signifie. Nous allons maintenant travailler sur quelques sélections et manipulations possibles. Pour cela nous allons avoir besoin d'une table un peu remplie et identique pour tous. Allez dans l'onglet 'Afficher' de 'phpmyadmin' (en ayant choisi votre table 'club' bien sûr), cliquez 'Tout 9/16

cocher' puis 'effacer' et enfin 'oui'. Votre table 'club' doit maintenant être vide. Allez récupérer le fichier 'club.sql' sur l'intranet. Ensuite, dans 'phpmyadmin', se mettre sur votre base de données 'test' puis sur la table 'club'. Cliquer sur l'onglet 'Importer', choisir votre fichier 'club.sql' dans la rubrique 'Fichier à importer' en cliquant sur 'Parcourir'. Ne rien modifier d'autre et cliquez sur 'Exécuter' pour finir. Ensuite allez voir dans votre table (onglet 'afficher') pour vérifier que votre table 'club' est remplie. Nous allons voir les options possibles de SELECT: WHERE, ORDER BY et LIMIT 11. Modifier la page 'essai_sql_1.ph' en mettant comme requête : SELECT * FROM club LIMIT 0,10'. Relancer la page (actualisation de la page dans le navigateur Mozilla). Décrire ce qui se passe. 12. Modifier la page 'essai_sql_1.ph' en mettant comme requête : 'SELECT * FROM club LIMIT 5,10'. La relancer. Décrire ce qui se passe. 13. Donnez la requête à écrire pour afficher les éléments de Herelle à Dubois Aline. Faire l'essai. 14. Modifier la page 'essai_sql_1.ph' en mettant comme requête : 'SELECT * FROM club ORDER BY date_naissance'. Décrire ce qui se passe. 15. Modifier la page 'essai_sql_1.ph' en mettant comme requête : 'SELECT * FROM club ORDER BY date_naissance DESC'. Décrire ce qui se passe. 16. Faites des essais avec cette option ORDER sur les différentes colonnes avec et sans DESC. 17. Donnez la requête à écrire pour afficher tous les éléments par ordre alphabétique (sur le nom de famille). Faire l'essai. 18. Modifier la page 'essai_sql_1.ph' en mettant comme requête : SELECT * FROM club WHERE nom='martin'. Pensez à 'échapper' les caractères qu'il faut. Décrire ce qui se passe. Il faut utiliser les mots-clés dans l'ordre suivant : WHERE puis ORDER BY puis LIMIT, sinon MySQL ne comprendra pas votre requête. 19. Donnez la requête à écrire (avec l'instruction PHP : query( 'votre requête');) pour afficher les éléments dont le prénom est 'laurent' en les classant par ordre alphabétique du nom de famille. Faire l'essai : query('..') ; 20. Donnez la requête à écrire (avec l'instruction PHP : query) pour afficher les éléments dont le prénom est 'laurent' en les classant du plus vieux au plus jeune. Faire l'essai. 21. Donnez la requête à écrire (avec l'instruction PHP : query) pour afficher les éléments dont le prénom est 'laurent' en affichant les 2 plus jeunes. Faire l'essai. Il existe aussi une instruction UPDATE qui permet de mettre à jour une donnée déjà écrite dans la table : Un exemple : je change la date de naissance de l'élément Dubois Jacques UPDATE club SET date_naissance= '1996-02-07' WHERE nom = 'Dubois' AND prenom = 'Jacques' Il existe aussi une instruction DELETE qui permet d'effacer des données déjà écrites dans la table : Un exemple : j'efface l'élément Dubois Jacques DELETE FROM club WHERE nom = 'Dubois' AND prenom = 'Jacques' 10/16

Ceci n'est qu'une petite présentation des possibilités de gestions des bases de données. C'est le minimum pour comprendre et mettre en œuvre la suite du TP. Vous pouvez bien évidemment compléter vos connaissances à l'aide du document issu du site 'OpenClassRoom' et disponible sur l'intranet: concevez-votre-site-web-avec-php-et-mysql.pdf Partie 2.2 : arduino en mode client Maintenant le arduino est en mode client : il envoie des demandes au serveur, qui est votre ordinateur ici. Il va en fait envoyer la température relevée sur son capteur à un programme présent sur le serveur (add.php). Ce programme va écrire la valeur dans la base de donnée. Ci-dessous le schéma de principe : Ensuite nous allons être aussi client et demander à voir une page générée par le serveur (index.php) contenant les données que l'on veut visualiser (ici la température) suivant le principe : Au final nous allons avoir 2 pages à créer, une qui va être appelée par arduino et qui va écrire les données dans la base de donnée (add.php) et une que nous appellerons nous (index.php) qui va afficher sur notre écran les données). Etape 1 : création de la table dans la base de données Aller dans phpmyadmin (menu WampServeur) et choisir votre base de donnée «test». Créez une nouvelle table «temp» (2 colonnes).. cliquer sur «Exécuter» pour valider 11/16

Paramétrons cette table : la première donnée (colonne) sera : nom : date type : TIMESSTAMP la 2ème donnée : nom : valeur type : FLOAT Défaut : CURRENT_TIMESTAMP Index : UNIQUE puis cliquer sur «sauvegarder». Voilà, votre table est créée. Essayons de la remplir à la main : Cliquez sur l'onglet «Insérer» et rentrez une valeur, par exemple 18,6 : et cliquez sur «exécuter» pour valider Vous remarquerez que phpmyadmin vous bascule automatiquement sur l'onglet «SQL» dans lequel la vraie requête est écrite. Remettez vous dans l'onglet «insérer» et recommencer avec 4 ou 5 valeurs différentes. Retourner dans l'onglet «Afficher» pour voir ce qui s'est passé. 1. Que contient notre champ 'date'? 2. Recopier la requête proposée. 3. Expliquez les différents éléments de cette requête et ce qu'elle fait exactement. Etape 2 : création de la page php ('add.php') qui va écrire dans la base de données Soit la page «add.php» suivante : <?php try // connection à la base de données // On se connecte à MySQL $bdd = new PDO('mysql:host=adresse du serveur;dbname=nom de la base de données', 'nom de l'utilisateur', 'mot de passe'); catch(exception $e) 12/16

die('erreur : '.$e->getmessage()); // En cas d'erreur, on affiche un message et on arrête tout if (isset($_get['temp1'])) // test si la variable existe $_GET['temp1'] = floatval($_get['temp1']); // force le type float pour la variable echo ('donnee '.$_GET["temp1"]. ' en cours d\'ecriture</br>'); $bdd->exec('insert INTO temp (valeur) VALUES('.$_GET["temp1"].')'); echo ('donnee '.$_GET['temp1']. ' ecrite!');?> 4. Modifiez la page 'add.php' avec les caractéristiques de notre base de données (ligne 5) et enregistrez la dans votre répertoire de travail Wamp (normalement : c:\wamp\test2_votre nom de famille\) adresse du serveur : localhost nom de la base de donnée : test nom de l'utilisateur : root pas de mot de passe (mettre '') Maintenant on va envoyer une température à la base de données en appelant le programme add.php et en lui transmettant la température dans l'url (ce que fera Arduino plus tard). Essayez avec l'url suivante : http://localhost/test2_votre nom de famille/add.php?temp1=22.4 5. Que se passe-t-il? Allez voir dans la base de donnée si tout s'est bien passé (phpmyadmin) Etape 3 : création de la page 'index.php' qui va lire dans la base de données et afficher une page web avec nos valeurs soit la page «index.php» suivante: <?php try // connection à la base de données $bdd = new PDO('mysql:host=adresse du serveur;dbname=nom de la base de données', 'nom de l'utilisateur', 'mot de passe'); catch(exception $e) die('erreur : '.$e->getmessage()); // En cas d'erreur, on affiche un message et on arrête tout?> <html> <!-- début de la page web --> <head> <title>données</title> <meta http-equiv="refresh" content="5"/> <link rel="stylesheet" href="style.css" /> </head> <body> <h1>données</h1> <table border="1" cellspacing="1" cellpadding="1" > <tr class='titre_tab'> <td> Date & heure </td> 13/16

<td> valeur </td> </tr> <?php $reponse = $bdd->query('select * FROM temp ORDER BY date DESC LIMIT 0, 12'); while ($donnees = $reponse->fetch())?> <tr><td> <?php echo $donnees['date'];?> </td><td> <?php echo $donnees['valeur'];?> </td></tr> <?php $reponse->closecursor(); // Termine le traitement de la requête?> </table> </body> </html> 6. Copiez ces 2 fichiers dans votre répertoire de travail (en modifiant la ligne 4 de 'index.php' avec les caractéristiques de votre base de données). 7. Essayez et commentez ce qui se passe (le fichier est accessible dans mozilla à l'adresse : http://localhost/test2_votre nom de famille/index.php) 8. Tirez du programme index.php la commande adressée à la base de données et expliquez-la. Etape 4 : maintenant le programme arduino qui va écrire dans la base de données Pour mettre en œuvre le programme arduino il nous manque quelques données notamment l'adresse IP de votre ordinateur sur le réseau local. 9. Ouvrez le menu «démarrer» de windows puis dans la barre de recherche taper «cmd», choisir «cmd.exe» (en cliquant dessus). Une fenêtre s'ouvre. Taper «ipconfig» puis la touche «entrer». Relevez l'adresse IP (IPv4) de votre ordinateur/serveur. 10. Allez dans le menu Wampserveur et cliquer sur «Put Online (mettre en ligne ) afin que votre ordinateur/serveur soit visible et accessible par le réseau local. 11. Copier le programme suivant dans arduino en ayant d'abord modifié: l'adresse Mac (ligne 5) de la carte Ethernet Shield l'adresse IP de l'ethernet shield (ligne 7) l'adresse du serveur (l'adresse IP de votre ordinateur) en lignes 42 et 48 l'adresse du ficher «add.php» à la ligne 44 Le programme arduino : #include <SPI.h> #include <Ethernet.h> //Inclure la bibliothèque Ethernet // Adresse MAC du shield (ici choisie par défaut), l'adresse IP dépend de votre réseau local 14/16

byte mac[] = 0x90, 0xA2, 0xDA, 0x0F, 0x15, 0x15 ; //90-A2-DA-0F-15-15 //L'adresse MAC du shield est associée à une adresse IP réseau IPAddress ip(192,168,1,62); //192.168.1.62 à choisir sur votre réseau local int CAPTEUR_TEMP_PIN = 4; // adressage du capteur de temperature (PIN) // int temp = 0; //définition de la variable entière (integer) // float temperature = 0; // variable temperature en flottant // float const_can = 0.0048828; // constante du convertisseur // EthernetClient client; String data; String stringval; EthernetServer server(80); //Initialise le serveur Ethernet, port 80 par défaut pour HTTP //function to extract decimal part of float long getdecimal(float val) int intpart = int(val); long decpart = 1000*(val-intPart); //I am multiplying by 1000 assuming that the foat values will have a maximum of 3 decimal places //Change to match the number of decimal places you need if(decpart>0)return(decpart); //return the decimal part of float number if it is available else if(decpart<0)return((-1)*decpart); //if negative, multiply by -1 else if(decpart=0)return(00); //return 0 if decimal part of float number is not available void setup() Serial.begin(9600); //Affichage écran du PC Ethernet.begin(mac, ip); //Démarer la connexion Ethernet et le serveur analogread(capteur_temp_pin); void loop() temp = analogread(capteur_temp_pin); // lecture du capteur de température // temperature = (((temp*const_can)*1000)-500)/10; //calcul// if (client.connect("192.168.1.78",80)) // remplacer par l'adresse IP de votre serveur-ordi client.print( "GET /test2_votre nom de famille/add.php?"); client.print("temp1="); client.print(temperature); client.println( " HTTP/1.1"); client.println( "Host: 192.168.1.78" ); client.println( "Content-Type: application/x-www-form-urlencoded" ); client.println( "Connection: close" ); client.println(); client.println(); client.stop(); Serial.print("donnee ecrite"); Serial.println(temperature); else 15/16

Serial.println("problème de connection"); if (client.connected()) client.stop(); // DISCONNECT FROM THE SERVER delay(30000); // attente en millisecondes 12. Essayez maintenant tous ça! Attendre environ 1 minute après l'envoie du programme Arduino.. Pour vérifier vous pouvez aller voir les données écrites dans la base de données avec phpmyadmin ou simplement lancer le fichier 'index.php' (le fichier est accessible dans Mozilla à l'adresse : http://localhost/test2_votre nom de famille/index.php. 13. Expliquez ce qui se passe. Faire un résumé pour décrire comment tout ça fonctionne. 14. Exemple d'affichage plus évolué Pour afficher de manière plus intéressantes les données (par exemple à l'aide de graphiques, courbes,...) on peut écrire un programme PHP qui fait tout ça. Bon, ne nous cachons pas que c'est assez difficile à faire. Mais, des développeurs ont déjà réalisé ces programme et ils nous ont mis à disposition leurs codes. Il y en a une certain nombre de disponible sur internet. Nous avons choisi les applications pchart (infos sur http://wiki.pchart.net/). Copier les répertoires «class» et «fonts» ainsi que le fichier index2b.php (à récupérer sur l'intranet) dans votre répertoire /test2_votre nom de famille/ Dans mozilla taper l'adresse (URL): http://localhost/test2_votre nom de famille/index2b.php Essayez. 15. Modification de «add.php» Notre programme arduino, quand il appelle «add.php», rajoute des données dans la base de données. Tout ça indéfiniment ce qui fait qu'au bout d'un certain temps on risque de saturer notre base de données. Nous vous proposons qu'à chaque appel de «add.php», ce programme efface aussi les données inutiles (par exemple on se dit que l'on garde les 200 dernières données). A vous de jouer maintenant. Avant de faire des essais et d'effacer les données (au risque de se tromper), il faut d'abord trouver la bonne fonction SELECT en faisant des essais. Une fois la fonction SELECT trouvée, on la transforme en fonction d'effacement. 16. Ce TP est fini. Il faut faire un peu de ménage, c'est à dire supprimer votre basse de données. Dans PhpMyAdmin, sélectionnez la base de données (attention à bien vérifier que c'est bien la base de données à supprimer), dans les onglets supérieurs (structure, sql, rechercher, requête,...), sélectionnez l'onglet opération, puis le lien "Supprimer la base de données (DROP)" (attention!!! cette étape est irréversible. ). Une boite de dialogue apparaît. Cliquez sur OK. 16/16