====== TD13 : MySQL et sessions ====== ===== MySQL Jointures ===== On va avoir besoin des jointures, donc relisez l'[[amphi06]] (y compris le tuto de vulgarisation), refaites le [[td06]]. On va faire quelques exercices sur le sujet avant de passer aux sessions. {{:ressources:php:cours_mysql_artistes.sql.zip|}} Nous allons créer une base de données nommée cours_mysql_artistes et y importer ce fichier. Lors de l'import, vérifiez bien que les 1405 requêtes qu'il contient ont bien été effectuées. Si ce n'est pas le cas, vérifiez votre fichier, effacez tout et réimportez-le. Une fois que tout est importé, dessinez le modèle de données de cette application. Pour faire les exercices ci-dessous, utilisez phpMyAdmin et ne fournissez que la requête SQL. ==== mysql_doublons ==== Cette table comporte des erreurs, par exemple on peut remarquer que la table artistes contient des doublons SELECT count(*) as c FROM `artists` WHERE 1 group by `a_name` order by c desc Qui sont-ils ? ==== mysql_various ==== En executant cette requête, vous verrez qu'il existe un artiste qui s'appelle 'Various Artists. Il s'agit en fait de plusieurs artistes qui sont l'auteurs de plusieurs discs. SELECT * FROM `artists` WHERE `a_name` LIKE '%Various%' Combien de disques sont crédités à Various Artists ? (vous devez en trouver 33) === Technique simple === On sait déjà que various Artists a pour id 16, on recherche donc les albums qui ont 16 pour fk_artist === Technique jointure simple === On sait seulement que l'artiste a le mot Various dans son nom. ==== mysql_dj ==== On s'intéresse un peu aux DJ référencés sur cette base de données. === Qui === Qui sont les artistes qui ont DJ dans leur nom ? (vous en trouverez 5 avec "DJ" et 6 si vous comptez "DJ" et "Dj") === Combien === Combien y a-t-il d'artistes qui ont DJ dans leur nom (en utilisant count(`id_artist`) parce que count(*) cémal) === Quels albums === Quels albums ont été réalisés par des artistes qui ont le mot DJ dans leur nom ? (vous en trouverez 11 si vous cherchez "DJ" et 13 si vous incluez le "Dj") === Combien d'albums === Combien d'albums ont été réalisés par des artistes qui ont le mot DJ dans leur nom ? ==== mysql_discs_docs ==== * Affichez les artistes et le nombre de disques qu'ils ont réalisé * Classez les artistes par leur nombre de disques ? (les plus prolifiques en premier) * Quels sont les disques qui ont le plus de documents attachés ? * Quels sont les artistes qui ont le plus de documents attachés à leurs disques ? * Qui sont les 7 artistes qui n'ont réalisé aucun disque ? ===== Sessions ===== Pour commencez, lisez [[http://www.tizag.com/phpT/phpsessions.php|le petit cours sur les sessions sur Tizag.com]][en] * la fonction [[phpfn>session_start]] crée une session ou restaure celle trouvée sur le serveur, via l'identifiant de session passé dans une requête GET, POST ou par un cookie. * la fonction [[phpfn>session_destroy]] détruit toutes les données associées à la session courante. * l'objet [[phpfn>reserved.variables.session|$_SESSION[] ]] permet d'accéder aux données persistantes contenues dans la session et qui sont conservées de manière sécurisée sur le serveur. Pour tester vous-même l'utilisation des sessions, voici un petit fichier de démo {{:ressources:php:sessions_demo.zip|}}. ====== session_simplesecure ====== A partir du fichier de démo, n'autorisez l'accès qu'aux aux utilisateurs qui connaissent le mot de passe (le mot de passe, c'est "[[http://www.youtube.com/watch?v=IOxpPJYUTDM|swordfish]]").
Seul ceux qui connaissant le peuvent entrer

====== session_simplemenu ====== Faites en sorte que le menu s'adapte aux besoins: * Pour les utilisateurs non connectés, il ne s'affiche que home et login. * Pour les utilisateurs connectés, il affiche home, private et logout. ====== session_mvc_social-0.1 ====== Nous allons créer un mini réseau social. Nous ne partons pas les mains vides, j'ai préparé une sandbox. {{:ressources:php:mvc_session.zip|}} Cet archive comprend déjà une table utilisateurs et des fonctions qui vous seront utiles pour gérer des sessions sécurisées. Installez-le et configurez-le. ====== session_mvc_social-0.2 ====== A partir de ce fichier, ajoutez : * Un champ 'bio' pour que l'utilisateur puisse ajouter une courte biographie * Une page logout.php de déconnexion * Une page subscribe.php d'inscription * Une page list.php qui liste l'ensemble des utilisateurs :!: * Une page profile.php qui permet d'éditer ses informations :!: * Une page user.php qui permet de visionner les informations sur un utilisateur :!: Les pages avec un :!: sont des pages avec accès sécurisé. Une fois que c'est fait, passez en version 0.2 et sauvegardez un archive de cette application ou utilisez un SVC (genre [[http://github.com|git]]).