240 likes | 401 Views
Mysql. Modex Web Dominique Rossin. La semaine passée. index.php?page=contact. Page autorisée ?. OUI. NON. < div ><? php include (‘ main_ ’.contact.’. php ’); </ div >. Redirection. Comment ca marche ?. C:xampphtdocsindex.php. http://www.polytechnique.fr/index.php. index.php.
E N D
Mysql Modex Web Dominique Rossin
La semaine passée index.php?page=contact Page autorisée ? OUI NON <div><?php include (‘main_’.contact.’.php’); </div> Redirection
Comment ca marche ? C:\xampp\htdocs\index.php http://www.polytechnique.fr/index.php index.php OUTPUT de PHP index.php Mysql PHP
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 ; ... }
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és Pas de possibilité de liste chainée, d’ensemble ! ! ! Chaque enregistrement doit différer par sa clé primaire.
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ées Cré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‘) )
Ajout Ajouter un enregistrement dans la table Ajout 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’ ) ;
Recherche SELECT * FROM ‘personne‘ WHERE ‘login‘ LIKE ’%o%’ Recherche 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
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) LIMIT 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 ! • 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’)
Recherche des noms et prenoms SELECT personne.nom, personne.prenom FROM personne,contact WHERE ( (personne.login = contact.login1)AND ( contact.login2 = ’rossin’ )) OR (( personne.login = contact.login2 )AND ( contact.login1 = ’rossin’ ))
Recherche des noms et prénoms (Optimisation) SELECT personne.nom, personne.prenom FROM 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’;
Calcul de moyenne de notes (2) SELECT idPhoto, AVG(note) AS moyenne FROM `tableNote` GROUP BY idPhoto;
Et PHP ? functionconnect () { // 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’") ; } functionfoo() { 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 />’; } } } Foreach ligne Prenom => dominique Nom => Rossin Prenom => Olivier Nom => Serre