MODEX WEB DOMINIQUE ROSSIN Mysql
La semaine passée index.php?page=contact Page autorisée ? Redirection NON <?php include (main_.contact..php); <?php include (main_.contact..php); OUI
Comment ca marche ? index.php OUTPUT de PHP index.php C:\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 dinformation Base de donnée ?
table Une base de données contient plusieurs tables. Une table est un ensemble denregistrements. 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, densemble ! ! ! Chaque enregistrement doit différer par sa clé primaire.
Représentation IdPrénomNomAge 1olivierserre20 2LeonhardEuler302 3BaptisteDesprez15 4FrançoisMorain12 IdId1Id
Exemple On veut créer une table permettant de stocker le nom dutilisateur, le nom, le prénom, la date de naissance et la feuille de style préférée dun utilisateur. Les champs seront donc : login (VARCHAR(10)) nom (VARCHAR(30)) prenom (VARCHAR(20)) naissance (date) feuillestyle (VARCHAR(50)) Clé primaire
PhpMyAdmin Création dune base de données Création dune 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 table Ajout dun 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, ) ; INSERT INTO test.personne ( login, nom, prenom, feuilleStyle, naissance ) VALUES ( rossin94, rossin, dominique, bo.css, ) ;
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 dune personne... Cest un ensemble Solution ? Création dune table dassociations ! 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) loginprenomnomAge serreolivierserre20 eulerLeonhardEuler302 desprezBaptisteDesprez15 morainFrançoisMorain12 Idlogin1login2 1serreeuler 2serredesprez 3moraindesprez
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 )) loginprenomnomAge serreolivierserre20 eulerLeonhardEuler302 desprezBaptisteDesprez15 morainFrançoisMorain12 Idlogin1login2 1serreeuler 2serredesprez 3moraindesprez 4rossinserre 5desprezrossin
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; idPhotousernote 1serre2 1euler5 1desprez2 1morain1 idPhotoAVG(note) 12.5
Calcul de moyenne de notes (2) SELECT idPhoto, AVG(note) AS moyenne FROM `tableNote` GROUP BY idPhoto; idPhotousernote 1serre2 1euler5 2desprez0.5 2morain1 idPhotomoyenne
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. ; } prenomNom dominiqueRossin OlivierSerre Prenom => dominique Nom => Rossin Prenom => Olivier Nom => Serre Prenom => dominique Nom => Rossin Prenom => Olivier Nom => Serre Foreach ligne