Dans le numéro 3 du TP, il faut afficher le titre + le nom du groupe des chansons contenus dans la base de données.
Selon le modèle de données qu'on utilise, il faut joindre 3 tables pour obtenir ces informations.
Voici un exemple de requête :
SELECT DISTINCT cd.titre, g.nom
FROM cd, groupe AS g, chanson AS ch
WHERE
ch.groupe = g.groupe_id
AND
cd.cd_id = ch.cd;
Notez que g et ch sont des alias sur les tables groupe et chanson, respectivement. La requête est donc équivalente à ca :
SELECT DISTINCT cd.titre, groupe.nom
FROM cd, groupe, chanson
WHERE
chanson.groupe = groupe.groupe_id
AND
cd.cd_id = chanson.cd;
Pour afficher les résultats, je demandes de limiter à 10 par pages le nombre d'items.
Comment faire alors?
Voici du pseudo-code qui explique un peu la logique...
# On initialise
page = 0;
nbparpage = 10;
# on suppose que vous construisez votre SQL
sql = Select [...] LIMIT page * nbparpage, nbparpage;
# que vous l'exécutez et affichez les résultats
[affichage de la liste]
S : page suivante demandé
page =1
donc,
limit 10, 10
qui donne requete de 10 résultats, a partir de 10.
et ainsi de suite : logiquement, on offre la page suivante seulement s'il y a possiblement des résultats, ie si le nombre d'enregistrements reçus est >= a nbparpage.
N'hésitez pas à écrire dans les commentaires si vous avez des questions sur ce code!
Les notes du cours du 25 mars sont disponibles, en format PDF ou HTML
Notez bien que je n'ai pas écrit de note sur l'introduction à DBI du cours précédent : il y a assez d'intro à DBI qui trainent sur le Net, je ne voulais pas en réécrire une autre...
Donc, regardez bien les textes données plus bas
Considérez le contenu du texte "Spécification DBI - extrait de Perl DBI, le guide du développeur, de O'Reilly" comme matière à examen (seulement les concepts qu'on a abordés, bien sûr) : il s'agit pratiquement d'une traduction du manuel de DBI de toute façon...
Encore une modification au contenu à faire dans le TP.
Pour être bien certain que tout le monde a bien compris la modification annoncé au début du cours du jeudi 25 mars :
Le numéro 3 demandait d'écrire 2 applications (que certaines constructions/manipulations auraient pu permettre la gestion dans un seul et même "exécutables" : je reviendrai sur ce genre de constructions dans la 3e partie de la session, après l'examen). La première de ces application, voircd, doit permettre de visualiser le contenu de la "discothèque" et des CD qu'elle contient. La seconde application devait servir à manipuler les inscriptions dans cette base de données : ajouter, modifier les entrées de CD, artistes, chansons, etc.
Dans le but de garder les choses simple et d'éviter d'étirer le temps alloué pour le TP2, la seconde application n'est plus à faire. Donc, le numéro 3 du TP 2 consiste à produire une application capable d'afficher le contenu de la base de données d'albums de la BD "musique".
Le TP est donc par conséquent bel et bien à remettre au début de la scéance de TP du mardi 6 avril. On pourra alors commencer dès cette scéance à travailler sur les utilitaires à bâtir pour le TP3.
... plutôt minimaliste, j'en conviens... :)
Comme je l'ai mentionné dans l'ancien site, un déménagement de serveur a fait en sorte de bousiller les dates de modification des entrées dans le gestionnaire du site. J'ai donc trouvé plus simple de simplement transférer le tout dans MovableType, un autre engin de blog écrit en Perl, qui est beaucoup plus complet que Blosxom (mais beaucoup plus "lourd", bien sur...).
La session tirant déjà à sa fin (enfin, on est en plein milieu, mais bon...), nous nous contenterons des gabarits de pages par défaut, plutôt que d'avoir à subir mes maigres talents d'infographiste.. ;P
Voici une série de lien à propos de Perl et de DBI.
En français
En anglais
Disponible en format HTML
La BD "musique", nécessaire pour faire le numéro 3, est disponible ici
Enfin : comment arrêter d'afficher la dernière recherche?
Le tips no 93 sur vim.org donne la réponse.. ;)
Version courte : faut setter :nohls. Lorsqu'on fait une autre recherche, le hightlight va revenir, jusqu'à ce qu'on retape le :nohls. L'entrée de vim.org explique différente façon de "mapper" l'opération dans une touche, d'avoir une option on/off, etc.
Et, tant qu'à y être, découvrez des centaines d'autres trucs à faire avec Vim. Et explorez la section "plugins" pour trouver comment étendre les possibilités d'utilisations de Vim...
Vous pourrez y faire du Perl. ;oP
Le site use.perl.org nous informe que le French Perl Workshop se tiendra à Paris le 6 et 7 juin prochain.
Plein de documentation sur Perl et certains modules sur le site des traducteurs de la documentation Perl en français.
Disponibles en format HTML, PDF ou OpenOffice.
Le texte complet suivra bientôt, en attendant, voici le début du TP :
Question 1
Produire le diagramme représentant les entités nécessaires pour stocker l'information sur un parc informatique : ordinateurs (et leurs caractéristiques de bases, ie. CPU, taille mémoire, taille disque), écrans, imprimantes, utilisateurs associés à chacun (seulement nom, prénom, no. de bureau).
Le diagramme est à faire dans un outil graphique, du genre de Dia, qui est installé sur vos stations et qui est disponible pour Windows.
Question 2
Créer les utilisateurs (un pour l'administration, l'autre pour la lecture), la base de données (appelé "inventaire") et les tables pour supporter le diagramme du no.1
Le reste est à suivre
Euh... En tout cas, se servir du langage-au-chameau pour organiser ses chansons...:-P
L'article est en deux partie chez le IBM DevelopperWorks :
La première partie explique grosso-modo le fonctionnement du script et de ses librairies, la seconde ajoute des détails et explique comment faire des manipulations plus poussés.
Évidemment, ce n'est pas du Perl pour débutant... :) Mais ne vous laissez pas intimider, si ca vous intéresse, commencez simplement par faire fonctionner le script.
Les modules sont probablement disponibles via le CPAN (nan, je n'ai pas vérifié...) : je pourrai montrer comment installer des modules à partir de là au prochain lab, pour ceux que ca intéresse. On prendra simplement un peu d'avance, puisque de toute façon c'est quelque chose que je voulais vous faire faire un peu plus tard.. :)
Disponibles en format HTML, PDF ou OpenOffice.
Attention : les images ne sont pas extra à lire avec la version HTML... Je n'ai pas fait attention à la taille des images... : Le PDF, ou mieux, le sxw devraient être beaucoup mieux.