Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Php 2 - Approfondissement MySQL, PDO et MVC

2,753 views

Published on

Introduction au langage de programmation PHP.
Présentation réalisée la première fois le lundi 10 mars 2014 à l'IIM : Institut de l'Internet et du Multimédia pour les années préparatoires.

Cette présentation a pour but d'approfondir les compétences PHP des élèves : utiliser des bases de données, comprendre PDO et le modèle MVC (basique).

Après présentation orale de ces slides, des exercices de mise en pratique ont été réalisés en Atelier avec les élèves.
L'exercice principal était de construire une plateforme similaire à twitter selon un modèle MVC.

Voici le plan de la présentation :
• Les bases de données : MySQL
- Principe
- phpMyAdmin
- Interagir avec une BDD
• Les fonctions
- La machine à carottes
- Exemple avec MySQL
- Les fonctions PHP
• Modèle Vue Contrôleur - MVC
- Principe
- Mise en pratique
• Quelques trucs à savoir a.$_FILES et $_POST
- $_SESSION
- L’indentation
- PHP + HTML = ?

Published in: Engineering
  • DOWNLOAD THAT BOOKS/FILE INTO AVAILABLE FORMAT - (Unlimited) ......................................................................................................................... ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes Christian, Classics, Comics, Contemporary, Cookbooks, Art, Biography, Business, Chick Lit, Children's, Manga, Memoir, Music, Science, Science Fiction, Self Help, History, Horror, Humor And Comedy, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THI5 BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD TH1S BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK Here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB EBOOK Here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK Here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB EBOOK Here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc EBOOK Here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Php 2 - Approfondissement MySQL, PDO et MVC

  1. 1. <?php 2 Pierre Faure - pierrefaure.me
  2. 2. Plan de la présentation 1. Les bases de données : MySQL a. Principe b. phpMyAdmin c. Interagir avec une BDD 2. Les fonctions a. La machine à carottes b. Exemple avec MySQL c. Les fonctions PHP 3. Modèle Vue Contrôleur - MVC a. Principe b. Mise en pratique 4. Quelques trucs à savoir a. $_FILES et $_POST b. $_SESSION c. L’indentation d. PHP + HTML = ? Pierre Faure - pierrefaure.me
  3. 3. 1.Les bases de données : MySQL a.Principe Photo par closet factory. license CC BY-ND : https://creativecommons.org/licenses/by-nd/2.0/deed.fr ‘‘Une base de donnée est comparable à un placard extensible et modulable
  4. 4. 1.Les bases de données : MySQL a.Principe La base de donnée contient des tables 
 Les tables sont organisées sous forme de tableau id f_name l_name birth 1 36754 David Axmark 1962-04-28 website http://… http://…Rasmus 1968-11-22Lerdorf users Pierre Faure - pierrefaure.me
  5. 5. Lier deux tables avec un identifiant id f_name l_name birth 1 36754 David Axmark 1962-04-28 website http://… http://…Rasmus 1968-11-22Lerdorf users id name user_id 10 476 MySQL 1 PHP 36754 tools user_id peut également
 s’intituler clé étrangère ou foreign key (FK) Pierre Faure - pierrefaure.me
  6. 6. id et user_id, quelle différence ? id f_name l_name birth 1 36754 David Axmark 1962-04-28 website http://… http://…Rasmus 1968-11-22Lerdorf users id name user_id 10 476 MySQL 1 PHP 36754 tools id est un identifiant unique 
 user_id permet de lier des données 477 PHP 2 36754 Dans user_id, "user" fair référence au nom de la table liée Pierre Faure - pierrefaure.me
  7. 7. 1.Les bases de données : MySQL b.phpMyAdmin Pierre Faure - pierrefaure.me
  8. 8. b.phpMyAdmin : onglet Bases de données Les bases de données utf8_general_ci Créer une base de données Pierre Faure - pierrefaure.me
  9. 9. b.phpMyAdmin : à l’intérieur de base_de_donnee3 Les tables de la BDD Créer une table Pierre Faure - pierrefaure.me
  10. 10. b.phpMyAdmin : à l’intérieur de la table vehicles Les colonnes
  11. 11. b.phpMyAdmin : l’onglet structure Nom : Nom assigné à la colonne de la table
 Type : Type des données à l’intérieur de la colonne
 Interclassement : Encodage 
 Attributs > UNSIGNED : Les valeurs seront supérieures à 0
 Null : Non = La valeur ne peut pas être inexistante (vide est différent de null)
 Défaut : Valeur par défaut de la cellule
 Extra > AUTO_INCREMENT : +1 automatiquement lorsqu’une donnée est ajoutée
 Action : Opérations réalisables Pierre Faure - pierrefaure.me
  12. 12. b.phpMyAdmin : syntaxe des noms Ne jamais utiliser de tiret - dans les noms de vos BDD, de vos tables ou de vos colonnes Utilisez underscore _ à la place Pierre Faure - pierrefaure.me
  13. 13. b.phpMyAdmin : créer une table Créons une table posts Contenant les colonnes id, title, content, date Pierre Faure - pierrefaure.me
  14. 14. b.phpMyAdmin : type & taille d’une colonne Pierre Faure - pierrefaure.me
  15. 15. b.phpMyAdmin : type & taille d’une colonne Les types les plus fréquents INT : valeurs numériques entre 0 et 4,294,967,295 VARCHAR(*) : valeurs entre 0 et 65,535 caractères (255 anciennes versions de MySQL) TEXT : valeurs entre 0 et 65,535 caractères 
 MEDIUMTEXT : valeurs entre 0 et 16,777,215 caractères TIMESTAMP : Date au format : AAAA-MM-JJ HH:MM:SS DATETIME : Date au format : AAAA-MM-JJ HH:MM:SS DATE : Date au format : AAAA-MM-JJ TIMESTAMP, ajouts et mises à jour - date d’ajout/modification d’un article/commentaire/message …
 DATETIME, date spécifique - Événements : anniversaire… | Ne fonctionne pas avec les fuseaux horaires des serveurs (*) Vous devez obligatoirement spécifier une valeur Pierre Faure - pierrefaure.me
  16. 16. b.phpMyAdmin : La valeur par défaut Défaut : Valeur par défaut lors de l’insertion CURRENT_TIMESTAMP : Date & heure du serveur Pierre Faure - pierrefaure.me
  17. 17. b.phpMyAdmin : L’interclassement utf8_general_ci : Suffisant pour les langues telles que le français et l’anglais utf8_unicode_ci : Pour les langues comme l’allemand, le russe … Pierre Faure - pierrefaure.me
  18. 18. b.phpMyAdmin : Attribut > UNSIGNED Attributs > UNSIGNED : Les valeurs stockées seront supérieures à 0 Pierre Faure - pierrefaure.me
  19. 19. b.phpMyAdmin : NULL Null : Non = La valeur ne peut pas être inexistante ‘‘Une valeur vide n’est pas similaire/égale à une valeur NULL Pierre Faure - pierrefaure.me
  20. 20. b.phpMyAdmin : Index > PRIMARY Index PRIMARY : clé primaire & unique de la table « id » Pierre Faure - pierrefaure.me
  21. 21. b.phpMyAdmin : Auto Incrémentation A_I (Auto_Increment) : +1 automatiquement lorsqu’une donnée est ajoutée Pierre Faure - pierrefaure.me
  22. 22. b.phpMyAdmin : Le moteur de stockage Pierre Faure - pierrefaure.me
  23. 23. b.phpMyAdmin : Le moteur de stockage INNODB : - Plus flexible avec les identifiants (clés étrangères)
 - Utilisé pour les applications bancaires MyISAM :
 - Plus rapide pour des sites classiques (Insertion et lecture de données)
 - Les requêtes de recherche s’effectuent plus rapidement On utilisera INNODB cette semaine Pierre Faure - pierrefaure.me
  24. 24. 1.Les bases de données : MySQL c. Interagir avec une BDD The Wolf of Wall Street Pierre Faure - pierrefaure.me
  25. 25. c. Interagir avec une BDD : Se connecter PDO Pierre Faure - pierrefaure.me
  26. 26. c. Interagir avec une BDD : Se connecter PDO Est le procédé conseillé par PHP pour se connecter aux bases de données Permet d’interagir plus simplement avec MySQL, Oracle, PostgreSQL … Pierre Faure - pierrefaure.me
  27. 27. c. Interagir avec une BDD : Se connecter $host = 'localhost'; $dbname = ''; $user = 'root'; $pass = ''; $db = new PDO('mysql:host='.$host.';dbname='.$dbname, $user, $pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')); PDO  $pass = 'root'; Pierre Faure - pierrefaure.me
  28. 28. SELECT INSERT UPDATE DELETE c. Interagir avec une BDD : Requêtes Pierre Faure - pierrefaure.me
  29. 29. Construction d’une requête id f_name l_name birth 1 36754 David Axmark 1962-04-28 website http://… http://…Rasmus 1968-11-22Lerdorf users $sql = 'SELECT * FROM users'; Sélectionner toutes les données de la table users1 SELECT Pierre Faure - pierrefaure.me
  30. 30. Envoi et traitement d’une requête $req = $db->prepare($sql);
 $req->execute(); Envoi de la requête au serveur
 Exécution de la requête $sql = 'SELECT * FROM users'; Sélectionner toutes les données de la table users1 2 SELECT Pierre Faure - pierrefaure.me
  31. 31. Traduction du résultat de MySQL pour PHP : fetchAll $req = $db->prepare($sql);
 $req->execute(); Envoi de la requête au serveur
 Exécution de la requête $sql = 'SELECT * FROM users'; Sélectionner toutes les données de la table users1 2 $result = $req->fetchAll(); On stock le résultat de la requête dans $result3 Pourquoi une traduction ? Car MySQL peut communiquer avec d’autres langages comme Ruby, Python … 
 Il faut donc traduire le résultat pour PHP SELECT fetchAll() permet de convertir le résultat en tableau. Il joue un rôle de traducteur fetchAll(PDO::FETCH_ASSOC) le tableau sera associatif Pierre Faure - pierrefaure.me
  32. 32. Pour résumer $req = $db->prepare($sql);
 $req->execute(); $sql = 'SELECT * FROM users';1 2 $result = $req->fetchAll();3 $db = new PDO(...); Connexion à la base de données0 Ne pas oublier de se connecter une seule fois au tout début du script Sélectionner toutes les données de la table users On stock le résultat de la requête dans $result Envoi de la requête au serveur
 Exécution de la requête SELECT Pierre Faure - pierrefaure.me
  33. 33. SELECT Type de requête SELECT Destination FROM Conditions WHERE et AND / OR
 LIMIT 
 GROUP BY
 ORDER BY
 ... Construction d’une requête SELECT * FROM users WHERE age > 18 AND sex = 0 ORDER BY f_name LIMIT 20 Sélectionner toutes les colonnes de la table users où l’âge est supérieur à 18 et le sexe est masculin, les classer par prénom, limiter à 20 lignes age, sex et f_name sont des colonnes de la table users Pierre Faure - pierrefaure.me
  34. 34. SELECT * FROM users WHERE age > 18 AND sex = 0 ORDER BY f_name LIMIT 20 SELECT Les requêtes préparées SELECT * FROM users WHERE age > :ag AND sex = :sx ORDER BY f_name LIMIT 20 $req = $db->prepare($sql);
 $req->execute(array( ':ag' => $age, ':sx' => $sex )); $sql = ' '; Passer les paramètres dans le « execute » permet d’éviter les injections SQL « prepare » est également très utile lorsqu’on « execute » plusieurs fois de suite la même requête et que les paramètres sont différents d’une fois à l’autre Pierre Faure - pierrefaure.me
  35. 35. id f_name l_name birth 1 36754 David Axmark 1962-04-28 website http://… http://…Rasmus 1968-11-22Lerdorf users $sql = "SELECT * FROM users"; $req = $db->prepare($sql);
 $req->execute(); $result = $req->fetchAll(PDO::FETCH_ASSOC); Pour sélectionner toutes les données de la table users SELECT Pierre Faure - pierrefaure.me
  36. 36. Array( [0] => Array( [id] => 1 [f_name] => David [l_name] => Axmark [birth] => 1962-04-28
 [website] => http://www.mysql.com/ ) [1] => Array( [id] => 36754 [f_name] => Rasmus [l_name] => Lerdorf [birth] => 1968-11-22
 [website] => http://php.net ) ) var_dump($result); Que contient $result ? Un tableau ! SELECT Pierre Faure - pierrefaure.me
  37. 37. id f_name l_name birth 1 36754 David Axmark 1962-04-28 website http://… http://…Rasmus 1968-11-22Lerdorf users $sql = "SELECT f_name, l_name FROM users"; $req = $db->prepare($sql);
 $req->execute(); $result = $req->fetchAll(PDO::FETCH_ASSOC); Pour sélectionner uniquement les prénoms et noms de la table users SELECT Pierre Faure - pierrefaure.me
  38. 38. Array( [0] => Array( [f_name] => David [l_name] => Axmark ) [1] => Array( [f_name] => Rasmus [l_name] => Lerdorf ) ) var_dump($result); Que contient $result ? Un tableau ! SELECT Pierre Faure - pierrefaure.me
  39. 39. id f_name l_name birth 1 36754 David Axmark 1962-04-28 website http://… http://…Rasmus 1968-11-22Lerdorf users 
 $sql = "SELECT * FROM users WHERE f_name = :fnm "; $req = $db->prepare($sql);
 $req->execute(array(':fnm' => $f_name)); $result = $req->fetchAll(PDO::FETCH_ASSOC); Pour sélectionner toutes les données de la table users qui ont pour f_name David SELECT $f_name = 'David'; Pierre Faure - pierrefaure.me
  40. 40. Array( [0] => Array( [id] => 1 [f_name] => David [l_name] => Axmark [birth] => 1962-04-28
 [website] => http://www.mysql.com/ ) ) var_dump($result); Que contient $result ? Encore un tableau ! SELECT Pierre Faure - pierrefaure.me
  41. 41. SELECT INSERT UPDATE DELETE c. Interagir avec une BDD : Requêtes Pierre Faure - pierrefaure.me
  42. 42. INSERT Construction d’une requête id f_name l_name birth 1 36754 David Axmark 1962-04-28 website http://… http://…Rasmus 1968-11-22Lerdorf users $sql = "INSERT INTO users SET f_name = :fnm, l_name = :lnm, birth = :birth, website = :wsite)"; 1 On ajoute Mark Zuckerberg à la base de données Pierre Faure - pierrefaure.me
  43. 43. INSERT 1 $req = $db->prepare($sql); $req->execute(array( ':fnm' => 'Mark', ':lnm' => 'Zuckerberg', ':birth' => '1984-05-14', ':wsite' => 'http://facebook.com' )); Envoi de la requête au serveur
 Exécution de la requête 2 On ajoute Mark Zuckerberg à la base de données Envoi et traitement d’une requête $sql = "INSERT INTO users SET f_name = :fnm, l_name = :lnm, birth = :birth, website = :wsite)"; Pierre Faure - pierrefaure.me
  44. 44. INSERT Pour résumer On ajoute Mark Zuckerberg à la base de données 1 $db = new PDO(...); Connexion à la base de données0 Ne pas oublier de se connecter une seule fois au tout début du script $req = $db->prepare($sql); $req->execute(array( ':fnm' => 'Mark', ':lnm' => 'Zuckerberg', ':birth' => '1984-05-14', ':wsite' => 'http://facebook.com' )); Envoi de la requête au serveur
 Exécution de la requête 2 $sql = "INSERT INTO users SET f_name = :fnm, l_name = :lnm, birth = :birth, website = :wsite)"; Pierre Faure - pierrefaure.me
  45. 45. SELECT INSERT UPDATE DELETE c. Interagir avec une BDD : Requêtes Pierre Faure - pierrefaure.me
  46. 46. Construction d’une requête id f_name l_name birth 1 36754 David Axmark 1962-04-28 website http://… http://…Rasmus 1968-11-22Lerdorf users $sql = "UPDATE users SET f_name = :newnm WHERE id = 1";1 UPDATE Modification du prénom par Pierre pour l’utilisateur ayant l’id 1 Pierre Faure - pierrefaure.me
  47. 47. $sql = "UPDATE users SET f_name = :newnm WHERE id = 1";1 UPDATE Modification du prénom par Pierre pour l’utilisateur ayant l’id 1 $req = $db->prepare($sql);
 $req->execute(array(':newnm' => 'Pierre')); Envoi de la requête au serveur
 Exécution de la requête 2 Envoi et traitement d’une requête Pierre Faure - pierrefaure.me
  48. 48. Pour résumer $sql = "UPDATE users SET f_name = :newnm WHERE id = 1";1 UPDATE Modification du prénom par Pierre pour l’utilisateur ayant l’id 1 2 $db = new PDO(...); Connexion à la base de données0 Ne pas oublier de se connecter une seule fois au tout début du script $req = $db->prepare($sql);
 $req->execute(array(':newnm' => 'Pierre')); Envoi de la requête au serveur
 Exécution de la requête Pierre Faure - pierrefaure.me
  49. 49. SELECT INSERT DELETE c. Interagir avec une BDD : Requêtes UPDATE Pierre Faure - pierrefaure.me
  50. 50. Construction d’une requête id f_name l_name birth 1 36754 David Axmark 1962-04-28 website http://… http://…Rasmus 1968-11-22Lerdorf users $sql = "DELETE FROM users WHERE id = 1";1 Suppression de l’utilisateur ayant l’id 1 DELETE Pierre Faure - pierrefaure.me
  51. 51. $sql = "DELETE FROM users WHERE id = 1";1 DELETE Suppression de l’utilisateur ayant l’id 1 $req = $db->prepare($sql);
 $req->execute(); Envoi de la requête au serveur
 Exécution de la requête 2 Envoi et traitement d’une requête Pierre Faure - pierrefaure.me
  52. 52. Pour résumer $sql = "DELETE FROM users WHERE id = 1";1 DELETE Suppression de l’utilisateur ayant l’id 1 $req = $db->prepare($sql);
 $req->execute(); Envoi de la requête au serveur
 Exécution de la requête 2 $db = new PDO(...); Connexion à la base de données0 Ne pas oublier de se connecter une seule fois au tout début du script Pierre Faure - pierrefaure.me
  53. 53. JOINTURES SQL t1 t2 t2t1 t2t1 t2t1 t2t1 SELECT * 
 FROM t1 
 LEFT JOIN t2 
 ON t1.key = t2.key SELECT * 
 FROM t1 
 RIGHT JOIN t2 
 ON t1.key = t2.key SELECT * 
 FROM t1 
 FULL OUTER JOIN t2 
 ON t1.key = t2.key SELECT * 
 FROM t1 
 FULL OUTER JOIN t2 
 ON t1.key = t2.key
 WHERE t1.key IS NULL OR t2.key IS NULL SELECT * 
 FROM t1 
 INNER JOIN t2 
 ON t1.key = t2.key Soit t1 et t2, deux tables pouvant être reliées l’une à l’autre grâce à des clés étrangères Modèle original : C.L. Moffatt Pierre Faure - pierrefaure.me
  54. 54. COLLE 2.Les fonctions On peut comparer une fonction à une machine 
 qui effectue toujours les mêmes actions a.La machine à carottes Les paramètres Le résultat : return Pierre Faure - pierrefaure.me
  55. 55. 2.Les fonctions Rappels Une fonction effectue une ou plusieurs actions et retourne un résultat function validPassword($pass){
 if(strlen($pass) > 4){ return true; } else{ return false; }
 } Si la longueur du mot de passe est supérieure à 4 On renvoie true Sinon On renvoie false validPassword('1234'); false validPassword('12345'); true Pierre Faure - pierrefaure.me
  56. 56. 2.Les fonctions Avec MySQL : supprimer un article $host = 'localhost'; $dbname = ''; $user = 'root'; $pass = ''; $db = new PDO('mysql:host='.$host.';dbname='.$dbname, $user, $pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')); function deletePost($db, $id){ $sql = "DELETE FROM posts WHERE id = :id"; $req = $db->prepare($sql); $req->execute(array(':id' => $id)); } deletePost($db, 1); Pierre Faure - pierrefaure.me
  57. 57. 2.Les fonctions Les fonctions proposées par PHP isset(); est définie empty(); est vide !empty(); n’est pas vide explode(); coupe une chaîne de caractère Liste de l’ensemble des fonctions sur http://php.net/ Pierre Faure - pierrefaure.me
  58. 58. 3.Le Modèle MVC M V CO
 D
 È L E U
 E O
 N
 T
 R
 Ô
 L
 E
 U
 R Pierre Faure - pierrefaure.me
  59. 59. 3.Le Modèle MVC a.Principe MODÈLE VUE CONTRÔLEUR Contient la plupart de votre code PHP, les fonctions, les requêtes SQL … Contient vos pages HTML avec peu de PHP (boucles, conditions …) Fais la liaison entre le modèle et la vue, il permet d’initialiser la logique de votre code avec 
 des « include » et des vérifications basiques (utilisateur authentifié, connexion à la BDD …) Pierre Faure - pierrefaure.me
  60. 60. b.Mise en pratique monsite Dossier racine Contrôleur Configurations (BDD …) fonctions, requêtes … fichiers html, images … config model view index.php css img js index.html Pierre Faure - pierrefaure.me
  61. 61. b.Mise en pratique index.php index.html function.php include 'config/db.php'; 
 CONTRÔLEUR MODÈLE VUE db.php Connexion à la BDD include 'model/function.php'; include 'view/index.html';
  62. 62. 4.Quelques trucs à savoir Pierre Faure - pierrefaure.me
  63. 63. 4.Quelques trucs à savoir a.$_FILES et $_POST & Pierre Faure - pierrefaure.me
  64. 64. a.$_FILES <form action="" method="post" enctype="multipart/form-data"> <input type="file" name="image"> <input type="submit"> </form> var_dump($_FILES['image']); array(5) { ["name"]=> string(53) "screenshot.png" ["type"]=> string(9) "image/png" ["tmp_name"]=> string(36) "/tmp/php/php70mcrk" ["error"]=>int(0) ["size"]=>int(115383) } Pierre Faure - pierrefaure.me
  65. 65. a.$_FILES 1 Choix de l’image via le bouton Parcourir … L’image est chez vous L’image est temporairement 
 sur le serveur 2 Verifications diverses Extension : strrchr() Type MIME : $_FILES["file"]["type"]
 Taille : getimagesize() 3 Déplacer l’image dans le dossier de votre choix
 avec le nom désiré move_uploaded_file() L’image est définitivement 
 sur le serveur Les étapes de l’envoi de fichier ‘‘Avec les éléments ci-dessus, la sécurité n’est pas nécessairement assurée
 Beaucoup de paramètres peuvent entrer en jeu entre votre serveur et votre fichier .htaccess Pierre Faure - pierrefaure.me
  66. 66. a.$_FILES <form action="" method="post" enctype="multipart/form-data"> <input type="file" name="image"> <input type="submit"> </form> $_FILES et $_POST sont interprétés différemment par le navigateur L’envoi de fichier est rendu possible par : le type="file" qui permet de sélectionner un fichier le enctype="multipart/form-data" qui signale au navigateur 
 qu’il va devoir traiter un fichier Comment modifier le formulaire pour envoyer un fichier Pierre Faure - pierrefaure.me
  67. 67. a.$_FILES et $_POST <form action="" method="post" enctype="multipart/form-data"> <input type="file" name="image"> <textarea name="description"></textarea> <input type="submit"> </form> var_dump($_POST); array(1) { ["description"]=> string(22) "description de l'image" } Pierre Faure - pierrefaure.me
  68. 68. 4.Quelques trucs à savoir b.$_SESSION $_SESSION accueil profil article ‘’En changeant de page, restez connecté grâce à la SESSION Pierre Faure - pierrefaure.me
  69. 69. b.$_SESSION : initialisation session_start(); permet d’initialiser une nouvelle SESSION 
 Il doit se situer sur chaque page de votre code ou vous souhaitez utiliser la SESSION Pierre Faure - pierrefaure.me
  70. 70. $_SESSION['username'] = 'Pierre'; $_SESSION['email'] = 'mail@example.com'; $_SESSION['profil-picture'] = 'profil.jpg'; var_dump($_SESSION); array(3) { ["username"]=> string(6) "pierre" ["email"]=>string(16) "mail@example.com" ["profil-picture"]=>string(10) "profil.jpg" } echo 'Bonjour '.$_SESSION['username']; Bonjour Pierre b.$_SESSION : déclarer des variables Pierre Faure - pierrefaure.me
  71. 71. b.$_SESSION : se déconnecter Savoir détruire une SESSION peut s’avérer utile lorsque par exemple, 
 un utilisateur se déconnecte session_unset(); session_destroy(); Permet de "nettoyer" les variables de SESSION 
 Elles seront vides Permet de supprimer la SESSION
 Elle ne sera plus existante Pierre Faure - pierrefaure.me
  72. 72. 4.Quelques trucs à savoir c.L’indentation Pierre Faure - pierrefaure.me
  73. 73. c.L’indentation if(){ } } } } if(){ else{ for($i=0;$i<10;$i++){ Pour le PHP Pierre Faure - pierrefaure.me
  74. 74. c.L’indentation <div id="content"> </div> </ul> </li> </div> <div id="header"> <ul id="list"> <li> Pour le HTML Pierre Faure - pierrefaure.me
  75. 75. c.L’indentation <div id="content"> </div> } </div> </div> <div id="header"> if{ <div id="connected"> Pour le HTML et le PHP Pierre Faure - pierrefaure.me
  76. 76. 4.Quelques trucs à savoir d.HTML et PHP </> <?>& Pierre Faure - pierrefaure.me
  77. 77. 4.Quelques trucs à savoir d.HTML et PHP <div id="content"> <ul id="account"> <?php if($connected == true){ echo '<li>Bienvenue Pierre !</li>'; } else{ echo '<li><a href="">Inscrivez-vous</a></li>'; } ?> <li><a href="">Notre newsletter</a></li> </ul> </div> ‘‘Vous pouvez mettre du php dans un fichier .html et du html dans un fichier .php Pierre Faure - pierrefaure.me
  78. 78. ?> Pierre Faure - pierrefaure.me
  79. 79. Made by Pierre Faure
 Check out my blog: pierrefaure.me A big thanks to the noun project for the icons Fonts: Courier Prime & Marvel Pierre Faure - pierrefaure.me

×