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.

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 le petit cours sur les sessions sur Tizag.com[en]

  • la fonction 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 session_destroy détruit toutes les données associées à la session courante.
  • l'objet $_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 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 ”swordfish”).

<form action="login" method="get" accept-charset="utf-8">
	<div>Seul ceux qui connaissant le <label for="password">password</label> peuvent entrer</p>
	<div><input type="text" name="password" value="" id="password"></div>
	<div><input type="submit" value="Essayer &rarr;"></div>
</form>

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.

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 git).

ressources/php/td13.txt · Last modified: 2013/06/16 22:51 (external edit)
 
 
Creative Commons License Powered by PHP Valid XHTML 1.0 April