MODEX WEB DOMINIQUE ROSSIN Mysql. La semaine passée index.php?page=contact Page autorisée ?...

23
MODEX WEB DOMINIQUE ROSSIN Mysql

Transcript of MODEX WEB DOMINIQUE ROSSIN Mysql. La semaine passée index.php?page=contact Page autorisée ?...

Page 1: MODEX WEB DOMINIQUE ROSSIN Mysql. La semaine passée index.php?page=contact Page autorisée ? Redirection NON

MODEX WEBDOMINIQUE ROSSIN

Mysql

Page 2: MODEX WEB DOMINIQUE ROSSIN Mysql. La semaine passée index.php?page=contact Page autorisée ? Redirection NON

La semaine passée

index.php?page=contact

index.php?page=contact

Page autorisée ?

Page autorisée ?

RedirectionRedirection

NON

<div><?phpinclude (‘main_’.contact.’.php’);</div>

<div><?phpinclude (‘main_’.contact.’.php’);</div>

OUI

Page 3: MODEX WEB DOMINIQUE ROSSIN Mysql. La semaine passée index.php?page=contact Page autorisée ? Redirection NON

Comment ca marche ?

http://www.polytechnique.fr/index.php

ind

ex.p

hp

OU

TP

UT

de P

HP

in

dex.

ph

pC:\xampp\htdocs\index.php

Mysql

Page 4: MODEX WEB DOMINIQUE ROSSIN Mysql. La semaine passée index.php?page=contact Page autorisée ? Redirection NON

Représentation des données

Problème : On a un profil utilisateur. Comment retenir les informations ? (CSS, fil RSS . . . )

Exemple : iGoogle, Facebook . . .

En Java : On crée une classe :class Utilisateur {String nom ;String feuilleStyle ;...}

En Java : On crée une classe :class Utilisateur {String nom ;String feuilleStyle ;...}

Page 5: MODEX WEB DOMINIQUE ROSSIN Mysql. La semaine passée index.php?page=contact Page autorisée ? Redirection NON

Persistence

Persistence entre 2 visites ?Sauvegarde :

Fichier Problème de sécurité Recherche d’information

Base de donnée ?

Page 6: MODEX WEB DOMINIQUE ROSSIN Mysql. La semaine passée index.php?page=contact Page autorisée ? Redirection NON

table

Une base de données contient plusieurs tables.Une table est un ensemble d’enregistrements.Un enregistrement contient un nombre déterminé

de champs (par exemple nom, prenom)Les champs sont formatésPas de possibilité de liste chainée, d’ensemble ! ! !Chaque enregistrement doit différer par sa clé

primaire.

Page 7: MODEX WEB DOMINIQUE ROSSIN Mysql. La semaine passée index.php?page=contact Page autorisée ? Redirection NON

Représentation

Id Prénom Nom Age

1 olivier serre 20

2 Leonhard

Euler 302

3 Baptiste Desprez

15

4 François Morain 12

Id Id1 Id2

1 1 2

2 1 3

3 1 4

Page 8: MODEX WEB DOMINIQUE ROSSIN Mysql. La semaine passée index.php?page=contact Page autorisée ? Redirection NON

Exemple

On veut créer une table permettant de stocker le nom d’utilisateur, le nom, le prénom, la date de naissance et la feuille de style préférée d’un utilisateur.

Les champs seront donc : login (VARCHAR(10)) nom (VARCHAR(30)) prenom (VARCHAR(20)) naissance (date) feuillestyle (VARCHAR(50))

Clé primaire

Page 9: MODEX WEB DOMINIQUE ROSSIN Mysql. La semaine passée index.php?page=contact Page autorisée ? Redirection NON

PhpMyAdmin

Création d’une base de donnéesCréation d’une table

CREATE TABLE ‘personne‘ (‘login‘ varchar(10) NOT NULL,‘nom‘ varchar(50) NOT NULL,‘prenom‘ varchar(50) NOT NULL,‘feuilleStyle‘ varchar(50) NOT

NULL,‘naissance‘ date NOT NULL,PRIMARY KEY (‘login‘),KEY ‘nom‘ (‘nom‘)

)

CREATE TABLE ‘personne‘ (‘login‘ varchar(10) NOT NULL,‘nom‘ varchar(50) NOT NULL,‘prenom‘ varchar(50) NOT NULL,‘feuilleStyle‘ varchar(50) NOT

NULL,‘naissance‘ date NOT NULL,PRIMARY KEY (‘login‘),KEY ‘nom‘ (‘nom‘)

)

Page 10: MODEX WEB DOMINIQUE ROSSIN Mysql. La semaine passée index.php?page=contact Page autorisée ? Redirection NON

Ajout

Ajouter un enregistrement dans la tableAjout d’un uplet (nom, prenom,

dateNaissance, login, feuilleStyle)Que se passe-t-il en cas de doublons pour le

login ?

Page 11: MODEX WEB DOMINIQUE ROSSIN Mysql. La semaine passée index.php?page=contact Page autorisée ? Redirection NON

SQL INSERT

INSERT INTO ‘test‘.‘personne‘ (‘login‘ , ‘nom‘ , ‘prenom‘ ,‘feuilleStyle‘ , ‘naissance‘)VALUES (’rossin94’, ’rossin’, ’dominique’, ’bo.css’,’1973-08-14’) ;

INSERT INTO ‘test‘.‘personne‘ (‘login‘ , ‘nom‘ , ‘prenom‘ ,‘feuilleStyle‘ , ‘naissance‘)VALUES (’rossin94’, ’rossin’, ’dominique’, ’bo.css’,’1973-08-14’) ;

Page 12: MODEX WEB DOMINIQUE ROSSIN Mysql. La semaine passée index.php?page=contact Page autorisée ? Redirection NON

Recherche

SELECT * FROM ‘personne‘ WHERE ‘login‘ LIKE ’%o%’

Recherche des logins contenant un oRecherche des logins contenant un o

Page 13: MODEX WEB DOMINIQUE ROSSIN Mysql. La semaine passée index.php?page=contact Page autorisée ? Redirection NON

Tri des résultats

SELECT *FROM ‘personne‘WHERE ‘login‘ LIKE ’%o%’ ORDER BY ‘login‘

Recherche des personnes dont le login contient un o triées par ordre alphabétique

Recherche des personnes dont le login contient un o triées par ordre alphabétique

Page 14: MODEX WEB DOMINIQUE ROSSIN Mysql. La semaine passée index.php?page=contact Page autorisée ? Redirection NON

Limitation des résultats

SELECT *FROM ‘personne‘WHERE ‘login‘ LIKE ’%o%’ ORDER BY ‘login‘ LIMIT 10

Recherche des personnes dont le login contient un o triées par ordre alphabétique (limité à 10

réponses)

Recherche des personnes dont le login contient un o triées par ordre alphabétique (limité à 10

réponses)

LIMIT 10,20LIMIT 10,20

Page 15: MODEX WEB DOMINIQUE ROSSIN Mysql. La semaine passée index.php?page=contact Page autorisée ? Redirection NON

Et les listes alors ?!?

On veut stocker les contacts d’une personne . . .

C’est un ensemble Solution ?

Création d’une table d’associations !Création d’une table d’associations !

Structure•login1•login2•clé ?

Structure•login1•login2•clé ?

Page 16: MODEX WEB DOMINIQUE ROSSIN Mysql. La semaine passée index.php?page=contact Page autorisée ? Redirection NON

Création de la table

CREATE TABLE ‘test‘.‘contact‘ ( ‘cle‘ INT NOT NULL AUTO_INCREMENT , ‘login1‘ VARCHAR( 10 ) NOT NULL , ‘login2‘ VARCHAR( 10 ) NOT NULL , PRIMARY KEY ( ‘cle‘ ))

Page 17: MODEX WEB DOMINIQUE ROSSIN Mysql. La semaine passée index.php?page=contact Page autorisée ? Redirection NON

Recherche des login des contacts de rossin

SELECT * FROM ‘contact‘WHERE (login1 = ’rossin’)OR (login2 = ’rossin’)

login prenom nom Age

serre olivier serre 20

euler Leonhard

Euler 302

desprez

Baptiste Desprez

15

morain François Morain 12

Id login1 login2

1 serre euler

2 serre desprez

3 morain desprez

Page 18: MODEX WEB DOMINIQUE ROSSIN Mysql. La semaine passée index.php?page=contact Page autorisée ? Redirection NON

Recherche des noms et prenoms

SELECT personne.nom, personne.prenom FROM personne,contactWHERE ( (personne.login = contact.login1)AND ( contact.login2 =

’rossin’ ))OR (( personne.login = contact.login2 )AND ( contact.login1 =

’rossin’ ))login prenom nom Ag

e

serre olivier serre 20

euler Leonhard

Euler 302

desprez

Baptiste Desprez

15

morain François Morain 12

Id login1 login2

1 serre euler

2 serre desprez

3 morain desprez

4 rossin serre

5 desprez rossin

Page 19: MODEX WEB DOMINIQUE ROSSIN Mysql. La semaine passée index.php?page=contact Page autorisée ? Redirection NON

Recherche des noms et prénoms (Optimisation)

SELECT personne.nom, personne.prenomFROM personne INNER JOIN contact ON ( (contact.login1 = ’rossin’AND contact.login2 = personne.login)OR (contact.login2 = ’rossin’AND contact.login1 = personne.login) )

Page 20: MODEX WEB DOMINIQUE ROSSIN Mysql. La semaine passée index.php?page=contact Page autorisée ? Redirection NON

Calcul de moyenne de notes

SELECT AVG(note) FROM `tableNote` WHERE `idPhoto`=‘1’;

idPhoto

user note

1 serre 2

1 euler 5

1 desprez 2

1 morain 1

idPhoto AVG(note)

1 2.5

Page 21: MODEX WEB DOMINIQUE ROSSIN Mysql. La semaine passée index.php?page=contact Page autorisée ? Redirection NON

Calcul de moyenne de notes (2)

SELECT idPhoto, AVG(note) AS moyenne FROM `tableNote` GROUP BY idPhoto;

idPhoto

user note

1 serre 2

1 euler 5

2 desprez 0.5

2 morain 1

idPhoto moyenne

1 3.5

2 0.75

Page 22: MODEX WEB DOMINIQUE ROSSIN Mysql. La semaine passée index.php?page=contact Page autorisée ? Redirection NON

Et PHP ?

function connect () { // Connection SGBD, user toto,mot de passe titi $db=mysql_connect("localhost", "toto", "titi"); // Choix de la BD test mysql_db("test", $db); mysql_query("SET NAMES ’utf8’") ;}function foo() { connect(); $req = mysql_query("SELECT * FROM personnes"); $res = mysql_numrows($req) ; // Nbre de réponses echo $res;}

Page 23: MODEX WEB DOMINIQUE ROSSIN Mysql. La semaine passée index.php?page=contact Page autorisée ? Redirection NON

Exploitation résultats

function bar() { connect(); $req = mysql_query("SELECT * FROM personnes"); while ($tab = mysql_fetch_assoc($res)) { foreach ($tab as $cle=>$val) {

echo $cle.’ => ‘.$val.’<br />’; } }}

prenom Nom

dominique Rossin

Olivier Serre

Prenom => dominiqueNom => RossinPrenom => OlivierNom => Serre

Prenom => dominiqueNom => RossinPrenom => OlivierNom => Serre

Foreach ligne