modex web dominique rossin mysql. la semaine passée index.php?page=contact page autorisée ?...
TRANSCRIPT
MODEX WEBDOMINIQUE ROSSIN
Mysql
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
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
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 ;...}
Persistence
Persistence entre 2 visites ?Sauvegarde :
Fichier Problème de sécurité Recherche d’information
Base de donnée ?
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.
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
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
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‘)
)
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 ?
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’) ;
Recherche
SELECT * FROM ‘personne‘ WHERE ‘login‘ LIKE ’%o%’
Recherche des logins contenant un oRecherche des logins contenant un o
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
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
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é ?
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‘ ))
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
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
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) )
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
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
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;}
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