«14_Synthese _PHP_MySQL_cours_4»



Documents pareils
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)

CREATION WEB DYNAMIQUE

Stockage du fichier dans une table mysql:

Les BASES de DONNEES dans WampServer

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

PHP 4 PARTIE : BASE DE DONNEES

Mysql avec EasyPhp. 1 er mars 2006

Olivier Mondet

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

PHP et les Bases de données - Généralités

Installation d'un serveur FTP géré par une base de données MySQL

Langage SQL : créer et interroger une base

1 Position du problème

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

Pratique et administration des systèmes

Bases de données relationnelles

Création et Gestion des tables

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

Gestion de base de données

SQL Historique

I. MySQL : Serveur et SGBD

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

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

SUPPORT DE COURS / PHP PARTIE 3

SQL Server et Active Directory

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

Application web de gestion de comptes en banques

Bible MySQL! La première version de MySQL est apparue en Cette première version est créée pour un usage personnel à partir de msql.

Cours Bases de données 2ème année IUT

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

Mysql. Les requêtes préparées Prepared statements

MODE OPERATOIRE OPENOFFICE BASE

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

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

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

Bases de Données relationnelles et leurs systèmes de Gestion

1. Base de données SQLite

Le protocole FTP (File Transfert Protocol,

Historisation des données

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

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

Le Langage De Description De Données(LDD)

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

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

laposte.net) Ministère de l'éducation nationale Atelier sécurité Rabat RALL 2007

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

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

Le langage SQL Rappels

Paginer les données côté serveur, mettre en cache côté client

TP JAVASCRIPT OMI4 TP5 SRC

A QUOI SERVENT LES BASES DE DONNÉES?

Sommaire. Etablir une connexion avec une base de données distante sur PostGreSQL

Connecter les formulaire d identification Qualifio à votre système d enregistrement (SSO) Mars 2012

Système de Gestion de Bases de Données Relationnelles. MySQL. Youssef CHAHIR

Attaques applicatives

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Présentation Windows Azure Hadoop Big Data - BI

INSTALLATION DE L APPLICATION DU CONTEXTE ITASTE

Faculté des sciences de gestion et sciences économiques BASE DE DONNEES

WEB DEVELOPER SGBD SYSTEME DE GESTION DE BASES DE DONNEES L étudiant sera capable :

Configurer la supervision pour une base MS SQL Server Viadéis Services

PHP CLÉS EN MAIN. 76 scripts efficaces pour enrichir vos sites web. par William Steinmetz et Brian Ward

PDO : PHP Data Object 1/13

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Les Utilisateurs dans SharePoint

Gestion de stock pour un magasin

Encryptions, compression et partitionnement des données

DOM - Document Object Model

Rapport d audit de sécurité

TP3 : Creation de tables 1 seance

OpenPaaS Le réseau social d'entreprise

Cours SQL. Base du langage SQL et des bases de données

Base de données relationnelle et requêtes SQL

PHP. PHP et bases de données

La double authentification dans SharePoint 2007

Microsoft OSQL OSQL ou l'outil de base pour gérer SQL Server

Créer un rapport pour Reporting Services

1 Introduction et installation

Optimisations des SGBDR. Étude de cas : MySQL

PROJET 1 : BASE DE DONNÉES REPARTIES

Le Langage SQL version Oracle

BTS/CGO P10 SYSTEME INFORMATION Année

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

Programmation Web. Madalina Croitoru IUT Montpellier

Gestion du parc informatique matériel et logiciel de l Ensicaen. Rapport de projet. Spécialité Informatique 2 e année. SAKHI Taoufik SIFAOUI Mohammed

Mon-complement-retraite.com Aide en ligne

MANUEL WORDPRESS. Objectif: Refonte d un site web sous Wordpress I PRE-REQUIS: 1 / Créer un backup (sauvegarde) du site:

Support de cours. Introduction à SQL et MySQL. 2003, Sébastien Namèche

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Transcription:

«14_Synthese _PHP_MySQL_cours_4» Maintenant que nous nous sommes connectés à la base de données et y avons mis des informations via un formulaire (cours 13), nous allons voir comment interroger nos tables pour en extraire les résultats puis les ranger dans un ordre précis. Pour cela nous allons créer une nouvelle table : Requête SQL : CREATE TABLE famille_tbl ( id int(11) NOT NULL auto_increment, nom varchar(255) NOT NULL, prenom varchar(255) NOT NULL, statut varchar(255) NOT NULL, date date DEFAULT '0000-00-00' NOT NULL, PRIMARY KEY (id), KEY id (id), UNIQUE id_2 (id) ); INSERT INTO famille_tbl VALUES( '', 'Dupond', 'Grégoire', 'Grand-père', '1932-05- 17'); INSERT INTO famille_tbl VALUES( '', 'Dupond', 'Germaine', 'Grand-mère', '1939-02- 15'); INSERT INTO famille_tbl VALUES( '', 'Dupond', 'Gérard', 'Père', '1959-12-22'); INSERT INTO famille_tbl VALUES( '', 'Dupond', 'Marie', 'Mère', '1961-03-02'); INSERT INTO famille_tbl VALUES( '', 'Dupond', 'Julien', 'Fils', '1985-05-17'); INSERT INTO famille_tbl VALUES( '', 'Dupond', 'Manon', 'Fille', '1990-11-29'); Structure de la table (PhpMyAdmin) : Champ Type Null Defaut Extra id int(11) Non 0 auto_increment nom varchar(255) Non prenom varchar(255) Non statut tinyint(255) Non 0 date date Non 0000-00-00 Contenu de la table "famille_tbl" id nom prenom statut date 1 Dupond Grégoire Grand-père 1932-05-17 2 Dupond Germaine Grand-mère 1939-02-15 3 Dupond Gérard Père 1959-12-22 4 Dupond Marie Mère 1961-03-02 5 Dupond Julien Fils 1985-05-17 6 Dupond Manon Fille 1990-11-29 TIC UIAD Création de site internet 2 ème année Daniel Gaudin Jean Claude Chêne page 1/8

Affichage du contenu de la table sans conditions, voici le code à utiliser : Code PHP // on se connecte à MySQL $db = mysql_connect('serveur', 'login', 'password'); // on sélectionne la base mysql_select_db('nom_de_la_base',$db); // on crée la requête SQL (2) $sql = 'SELECT nom,prenom,statut,date FROM famille_tbl'; // on envoie la requête $req = mysql_query($sql) or die('erreur SQL!<br>'.$sql.'<br>'.mysql_error()); // on fait une boucle qui va faire un tour pour chaque enregistrement while($data = mysql_fetch_assoc($req)) { // on affiche les informations de l'enregistrement en cours echo '<b>'.$data['nom'].' '.$data['prenom'].'</b> ('.$data['statut'].')'; echo ' <i>date de naissance : '.$data['date'].'</i><br>'; // on ferme la connexion à mysql mysql_close(); Ce qui donne à l'écran Dupond Grégoire (Grand-père) date de naissance : 1932-05-17 Dupond Gérard (Père) date de naissance : 1959-12-22 Dupond Marie (Mère) date de naissance : 1961-03-02 Dupond Julien (Fils) date de naissance : 1985-05-17 Dupond Manon (Fille) date de naissance : 1990-11-29 Explication : Voici donc l'utilisation d'une boucle sur une table, vous vous apercevez que les résultats qui s'affichent sont exactement dans le même ordre que la table et pour cause, nous n'avons pas spécifié de condition dans notre requête (2), donc dans ce cas, la requête scanne la table de haut en bas. Remarquez que la fonction mysql_fetch_assoc() renvoie un tableau dont les clés sont les noms des champs sélectionnés. On a aussi rajouté après mysql_query() ceci: or die('erreur SQL!<br>'.$sql. '<br>'.mysql_error());. Cela veut dire qu'en cas d'erreur dans la requête vers mysql, ce qui arrive fréquemment, php va afficher un message indiquant l'erreur renvoyée par mysql (grâce à mysql_error()) ce qui fournit une aide précieuse pour comprendre le problème. Vous notez également que les dates de naissance sont au format US, ceci est normal puisque nous avons défini un type DATE dans notre table, nous verrons plus tard comment convertir les dates US au format FR. TIC UIAD Création de site internet 2 ème année Daniel Gaudin Jean Claude Chêne page 2/8

Nous allons maintenant faire plusieurs tests en ne changeant uniquement que la requête SQL (2). Le reste du code ne change pas. Affichage des résultats par ordre alphabétique de prénom : Le code PHP de la requête // Gardez le code ci-dessus, changez juste la requête SQL! $sql = 'SELECT nom,prenom,statut,date FROM famille_tbl ORDER BY prenom'; // L'opérateur ORDER BY permet de classer soit alphabétiquement // soit numériquement suivant le type du champ. // Si l'on souhaite classer en décroissant (ex. de Z à A), nous // y ajouterons DESC soit : ORDER BY prenom DESC Dupond Gérard (Père), date de naissance : 1959-12-22 Dupond Germaine (Grand-mère), date de naissance : 1939-02-15 Dupond Grégoire (Grand-père), date de naissance : 1932-05-17 Dupond Julien (Fils), date de naissance : 1985-05-17 Dupond Manon (Fille), date de naissance : 1990-11-29 Dupond Marie (Mère), date de naissance : 1961-03-02 Affichage des résultats par comparaison de date : Le code PHP de la requête // Gardez le code ci-dessus, changez juste la requête! $sql = "SELECT nom,prenom,statut,date FROM famille_tbl WHERE date<'1960-01-01'"; // L'avantage d'avoir un type DATE dans notre base de données, c'est que // nous pouvons comparer des dates dans la requête SQL. // Ici nous ne souhaitons afficher que les membres de la famille qui sont // nés avant le 1er janvier 1960, soit : WHERE date<'1960-01-01' Dupond Grégoire (Grand-père) date de naissance : 1932-05-17 Dupond Gérard (Père) date de naissance : 1959-12-22 TIC UIAD Création de site internet 2 ème année Daniel Gaudin Jean Claude Chêne page 3/8

Affichage des résultats avec le commande LIKE La commande LIKE en SQL permet de fouiller le contenu de chaque champ. Cet à dire par exemple si nous recherchons tous les enregistrements dont le champ "prenom" commence par la lettre "G", voyons la syntaxe ci-dessous : Le code PHP de la requête // Gardez le code ci-dessus, changez juste la requête! $sql = "SELECT nom,prenom,statut,date FROM famille_tbl WHERE prenom LIKE 'G%'"; // Le signe pourcentage "%" placé après le G, indique que la lettre G peut // être suivie, mais pas précédée, d'autres caractères! // Notez aussi que LIKE n'est pas sensible à la casse, cela veut dire que // la requête cherchera aussi bien des G majuscules que minuscules. Dupond Grégoire (Grand-père) date de naissance : 1932-05-17 Dupond Gérard (Père) date de naissance : 1959-12-22 Maintenant voyons la même chose mais cette fois nous allons chercher la syllabe "ma" dans le champ "prenom", qu'elle soit placée au début ou au milieu d'autres caractères : Le code PHP de la requête // Gardez le code ci-dessus, changez juste la requête! $sql = "SELECT * FROM famille_tbl WHERE prenom LIKE '%MA%'"; // Le signe pourcentage "%" placé avant et après MA indique que la syllabe // peut-être précédée ou suivie de caractères. // Une fois de plus notez que LIKE n'est pas sensible à la casse, la requête // cherchera aussi bien des MA majuscules que des ma en minuscules. Dupond Marie (Mère) date de naissance : 1961-03-02 Dupond Manon (Fille) date de naissance : 1990-11-29 Bien sûr, il est possible de mettre plusieurs conditions dans la même requête, exemple : SELECT * FROM famille_tbl WHERE prenom LIKE '%MA%' AND date<'1960-01-01' ORDER BY prenom TIC UIAD Création de site internet 2 ème année Daniel Gaudin Jean Claude Chêne page 4/8

Pour terminer voici comment nous allons pouvoir convertir la date du format US au format FR, une fois que nous avons récupéré l'information depuis la table. Le code PHP // on se connecte à MySQL $db = mysql_connect('serveur', 'login', 'password'); // on selectionne la base mysql_select_db('nom_de_la_base',$db); // on crée la requete SQL $sql = "SELECT nom,prenom,statut,date_format(date, '%d-%m-%y') as datefr FROM famille_tbl"; // on envoie la requête $req = mysql_query($sql) or die('erreur SQL!<br>'.$sql.'<br>'.mysql_error()); // on fait une boucle qui va faire un tour pour chaque enregistrement while($data = mysql_fetch_array($req)) { // on affiche les informations de l'enregistrement en cours echo '<b>'.$data['nom'].' '.$data['prenom'].'</b> ('.$data['statut'].')'; echo ' <i>date de naissance : '.$data['datefr'].'</i><br>'; // on ferme la connexion à mysql mysql_close(); Dupond Grégoire (Grand-père) date de naissance : 17-05-1932 Dupond Germaine (Grand-mère) date de naissance : 15-02-1939 Dupond Gérard (Père) date de naissance : 22-12-1959 Dupond Marie (Mère) date de naissance : 02-03-1961 Dupond Julien (Fils) date de naissance : 17-05-1985 Dupond Manon (Fille) date de naissance : 29-11-1990 TIC UIAD Création de site internet 2 ème année Daniel Gaudin Jean Claude Chêne page 5/8

Utiliser ces scripts PHP dans une page de notre site : Si l'on désire lancer des requêtes depuis une page html il suffit d'y insérer des liens, ici sous forme de bouton, vers les scripts PHP voulus: <<!DOCTYPE html> <html> La page html <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> </head> <body> <div> <form action="query1.php"> <input type="submit" value="envoyer Requête 1"> <form action="query2.php"> <input type="submit" value="envoyer Requête 2"> </div> </body> </html> pour la requête 1 Dupond Grégoire (Grand-père) date de naissance : 1932-05-17 Dupond Gérard (Père) date de naissance : 1959-12-22 Dupond Marie (Mère) date de naissance : 1961-03-02 Dupond Julien (Fils) date de naissance : 1985-05-17 Dupond Manon (Fille) date de naissance : 1990-11-29 Mais si on désire que ces informations restent confidentielles? Il y a la solution du code d'accès sur la page! TIC UIAD Création de site internet 2 ème année Daniel Gaudin Jean Claude Chêne page 6/8

Contrôler l'accès à notre page de requêtes : <<!DOCTYPE html> <html> La page html de contrôle <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> </head> <body> </body> </html> <p>veuillez entrer le mot de passe pour obtenir l'accès! <form action="pagesecret.php" method="post"> <input type="password" name="mot_de_passe" /> <input type="submit" value="valider" /> </form> </p> Veuillez entrer le mot de passe pour obtenir l'accès! Valider Nous faisons là appel à un script "PageSecret.php" que voici : Le script PHP de contrôle if (isset($_post['mot_de_passe']) AND $_POST['mot_de_passe'] == "MdP"// Si le mot de passe est bon, ici représenté par "MdP" { // On affiche la page --CONTENU DE LA PAGE else // Sinon, on affiche un message d'erreur { echo '<p>mot de passe incorrect</p>'; TIC UIAD Création de site internet 2 ème année Daniel Gaudin Jean Claude Chêne page 7/8

Le script est directement intégré dans la page à afficher, nous avons le mot de passe et le code suivant dans notre page de requête : <<!DOCTYPE html> <html> La page html de contrôle <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> </head> <body> if (isset($_post['mot_de_passe']) AND $_POST['mot_de_passe'] == "MdP"// Si le mot de passe est bon { // On affiche la page --CONTENU DE LA PAGE HTML else // Sinon, on affiche un message d'erreur { echo '<p>mot de passe incorrect</p>'; </body> </html> Envoyer Requête 1 Site de Mon Association Envoyer Requête 2 Si l'on souhaite enregistrer plusieurs mots de passe il suffit de les écrire à la suite les uns des autres avec l'argument OR entre chacun : if (isset($_post['mot_de_passe']) AND $_POST['mot_de_passe'] == "MdP" OR "MdP1" OR "MdP2"... Maintenant vous avez de quoi extrapoler pour continuer...! TIC UIAD Création de site internet 2 ème année Daniel Gaudin Jean Claude Chêne page 8/8