Cette page contient des informations pratiques pour les étudiants en cycle C au CNAM de Lyon qui suivent mon cours sur les technologies de l'Internet dynamique.
Les TPs de découverte du cours vont s'organiser cette année autour de la création d'un site d'échange de recettes de cuisine dont les fonctionnalités sont à définir (notamment lors de la 2ème séance) :
Nous nous inspirerons des très nombreux sites existants : Marmiton.org, SuperToinette.com, ... Il vous faudra donc les parcourir pour le 23/01 !
Le tableau suivant présente les (seulement) 7 séances de cet enseignement regroupées en 3 catégories : les pré-requis (création de sites statiques), l'ajout de dynamique (côtés client et serveur) puis la gestion des membres et des styles.
| 16/01 | 23/01 | 30/01 | 06/02 | 13/02 | 20/02 | 27/02 | 06/03 | --- | 13/03 |
| placez la souris sur une case pour plus de détails | |||||||||
Au cours de ces séances nous allons découvrir (et seulement
parfois approfondir) de nombreuses technologies
complémentaires et indissociables (selon moi) : XHTML/CSS,
DOM/JavaScript/DHTML, PHP/MySQL, Cookies/Sessions.
L'objectif de cet enseignement n'est donc en aucun cas de faire de vous
des spécialistes de l'une ou l'autre de ces technologies mais de
vous apprendre comment elles s'articulent entre elles afin de savoir
sur quel levier jouer pour ajouter de nouvelles fonctionnalités
à un site web.
Les conséquences sont doubles :
Pour réaliser les TPs, il vous appartient
de chercher les informations pratiques dans le cours (et les liens) mis à
votre disposition sur ce site.
Ceci est primordial puisque cela vous place dans la situation normale de
développement de nouvelles fonctionnalités d'un site web.
Pour cette même raison, peu d'ouvrages vous seront recommandés car ils
accusent trop souvent un retard important vis-à-vis de l'évolution
constante des spécifications des langages et du parc des machines et
navigateurs utilisés par les internautes.
En contrepartie je vous demande de me prévenir
très rapidement si vous vous sentez perdu et/ou estimez ne pas avoir assez
d'informations généralistes.
Je suis là pour m'adapter à vos besoins.
chacun doit se tenir au courant du travail des
autres groupes, ce qui implique que vous documentiez les aspects importants de
votre code (choix, moyens, ...).
Pour information, le barème qui donnera votre note finale ressemblera à :
Si comme moi vous avez du mal à mettre un nom sur un visage et/ou le contraire, voici un petit script bien pratique :
|
|
|
Mais si vous préférez, vous pouvez voir tout le trombinoscope.
Le thème sur lequel nous allons nous appuyer cette année est la création d'un site de recettes de cuisine.
Avant de commencer, merci de
répondre à quelques
questions afin que je puisse adapter les prochaines séances
à votre profil.
liste.html (PNG, 479 ko).recette.html (PNG, 529 ko).recherche.html (PNG, 511 ko).
Envoyez-moi par mailvos fichiers avant de partir !
A faire avant la séance :
en vous inspirant de sites existants (Marmiton.org,
SuperToinette.com, ...)
proposez les fonctionnalités (classées en minimales et étendues)
de notre site d'échange de recettes de cuisine.
Réfléchissez aux différentes pages nécessaires et à
ce que devrait permettre la base de données associée.
Cette semaine nous allons appliquer à notre site projet ce que
nous avons vu les deux semaines précédentes : la création
de formulaires en XHTML et leur traitement local en JavaScript avant de les
transmettre au serveur qui les analysera en PHP (cette partie sera vue la
semaine prochaine).
A partir de maintenant, nous allons régulièrement travailler
directement sur le site
projet (accès par FTP à l'adresse ftpperso.free.fr
avec le login aurelien.barbier et le mot de passe donné en
cours).
login.html contenant simplement un
formulaire de saisie d'un login et d'un mot de passe,
ce dernier étant immédiatement crypté
avec la fonction (à inclure)
hex_md5
(utilisez l'attribut onchange="" et
this.value).@fai.extension) et ne contient
pas les caractères suivants : !?*#
(utilisez la fonction
value.indexOf('x')).
tmp
du site projet en prenant bien garde d'ajouter un suffixe
discriminant pour éviter d'écraser les fichiers
des autres (désolé mais 2 connexions parallèles
sont autorisées au maximum, donc patience...).
recette.html du
site projet
afin qu'il se mette à jour automatiquement lorsque le
nombre de personnes est modifié (quantité des
ingrédients, kilocalories, ...) puis déposez votre
version dans le répertoire tmp.
index.html, plan.html et
liens.html
(voir le cahier des
charges du site). Attention à la validité !
inscription.html contenant un formulaire
de type post gérant le nom, prénom,
login, mot de passe (en double et de 6 caractères
minimum), email (valide !) et adresse de site web
(enlever http://).
Seuls le login et le mot de passe sont obligatoires et
tous les champs doivent être mis en minuscules sauf
le mot de passe (voir les détails de
l'objet
String).tmp
du site projet en prenant bien garde d'ajouter un suffixe
discriminant pour éviter d'écraser les fichiers
des autres (désolé mais 2 connexions parallèles
sont autorisées au maximum, donc patience...).
top.html, suggestions.html,
contacts.html et depot.html puis des
scripts verif_email.js et verif_mdp.js.
(voir le cahier des
charges du site). Attention à la validité !
recette.html et réalise en moins de dix minutes
les modifications proposées puis uploade le fichier dans
le répertoire recettes du site afin que chacun
travaille sur le même fichier plus tard
(Merci à celui ou celle qui se dévoue).
head.
head.
<div> et </div> puis
utilisez le champ innerHTML et la fonction
findObj() tels que décrits dans le
cours sur DOM et DHTML.
tmp
du site projet en prenant bien garde d'ajouter un suffixe
discriminant pour éviter d'écraser les fichiers
des autres (désolé mais 2 connexions parallèles
sont autorisées au maximum, donc patience...).
A faire avant la séance :
prendre le temps de regarder le travail qui a été fait
dans les autres groupes au TP3 (voir le répertoire tmp
du site projet).
Il ne s'agit pas de refaire le travail des autres mais juste de le lire
et d'essayer de le comprendre car nous n'y reviendrons pas spécialement.
Tiphaine et moi sommes heureux de vous faire part de l'arrivée de notre petite Louna :-)
Cette semaine nous ne travaillerons pas par groupes de niveaux ;
merci de vous mettre en binôme confirmé-débutant ou
intermédiaire-débutant pour cette séance (un débutant
par machine malgré tout tant que cela reste possible).
Désormais nous allons nous intéresser à ce qui se passe
du côté du serveur.
hello_world_auto.php) en partant de la correction
de l'exercice 2 et prenez le temps de comprendre la classe
proposée.
enregistrement.php qui reçoit
les données du formulaire inscription.html et
les affiche (simple vérification pour l'instant).
login.php, inscription.php, et
enregistrment.php en utilisant les outils que nous
venons de voir/créer puis commencez à lire les
notions de cours
sur MySQL et le sujet de la semaine prochaine.
test_dhtml.html comprenant uniquement
un bouton et cinq div (avec du texte quelconque)
identifiés par les noms obj1 à obj5.
Utilisez l'exemple donné en bas de la partie
manipuler des objets
du cours sur le DOM pour lancer le déplacement des objets
lorsque l'on clique sur le bouton.
left et
top des objets).
Comment faudrait-il le modifier encore pour que les objets restent
à l'écran si l'on redimensionne la fenêtre du
navigateur ?
div) de position et de taille fixée puis remplacez
vos objets par des images de billes avec un fond transparent
(.png) : des images.
Le projet est à rendre avant la
séance du 27/02 par mail.
Il peut être réalisé en binôme.
Il doit être constitué d'un répertoire de nom votre nom
de famille (pour un binôme, les deux noms séparés par un
souligné) compressé au format zip (vous pouvez utilisez le logiciel
gratuit 7zip indiqué sur la page du cours).
Ce répertoire doit contenir tous les fichiers (XHTML, JS, images, ...)
nécessaires à la visualisation de la page en local.
La page doit naturellement être valide et utilisable sur tous les navigateurs.
Vos remarques éventuelles devront être placées dans un
fichier LisezMoi.txt.
Le DHTML consiste à modifier sur le poste client la page XHTML
actuellement affichée en fonction des interactions avec l'internaute
mais sans nouvel échange de données avec le serveur.
Les interactions sont détectées à l'aide
d'événements JavaScript et gérées par des fonctions
JavaScript définies dans la partie head de la page.
Nous avons vu comment changer le contenu d'une balise en modifiant son
attribut innerHTML et comment déplacer un bloc div
en modifiant dans son attribut style les propriétés
left et top (rappel: pour cela il faut avoir défini
la propriété position:absolute; dans l'attribut
style du bloc div).
Nous avons également vu comment définir une animation à
l'aide de la fonction JavaScript setTimeout('fonction()',delai); qui
permet d'appeler une fonction après un délai fixé (en
millisecondes).
De manière plus générale, il est possible de modifier
n'importe quel attribut et propriété de style d'un objet que l'on
aura retrouvé à l'aide de la fonction findObj()
définie dans le fichier standards.js.
Le but du projet est de définir une page permettant de
résoudre une énigme.
Tout ce dont vous aurez besoin pour effectuer ce projet a été
vu en cours et/ou suggéré ci-dessus.
Je vous rappelle également que les corrections des exercices de la page
du cours sur JavaScript et la correction du TP de la séance du 13/02 sont
disponibles.
Voici ce que vous devez faire :
border="0").
J'ai fait attention à
être suffisament précis dans le sujet et le barème
présenté ci-dessous pour vous faire comprendre comment
créer la page XHTML (quelles balises utiliser) et quels doivent
être les traitements à effectuer en JavaScript, donc (re-)lisez
bien.
Si vous avez vraiment un doute, vous pouvez toujours
m'envoyer un mail.
Barème : 5 points
span ni div.
Puisque nous n'avons pas encore étudié les CSS, la gestion des styles n'est pas demandée mais si vous le voulez, vous pouvez :
style="text-align:center;vertical-align:middle"
à la balise td
text-align:justify; dans l'attribut style de la
balise p.
Bon courage !!
Foire Aux Questions (en réponse à certains mails, mise à jour le 23/02) :
span et/ou des div ailleurs que pour l'indice ?alert(obj.style.left);, mon navigateur m'affiche unknown :alert(obj.style);
car certains navigateurs n'utilisent pas l'attribut style mais traitent les
propriétés de style comme des attributs.
Dans ce cas il faut directement utiliser obj.left.
Pour faire un code générique, écrivez par exemple
if (obj.style) obj.style.left = l; else obj.left = l;.
obj.style.left = x;, dans une page XHTML-valide
il faut en fait écrire obj.style.left = x+'px';.
left et top ?<script type="text/javascript" src="..."></script>
plutôt que <script type="text/javascript" src="..." /script>
L'examen aura bien lieu le 13/03
de 18h30 à 20h30 dans l'amphithéatre jouxtant la salle
machines dans laquelle nous faisons les séances de cours.
Tous les documents papiers seront autorisés.
Toutes mes excuses pour ces changements successifs finalement sans résultat.
Cette semaine nous allons nous intéresser aux feuilles de style en cascade, autrement dit les CSS :
sujet à définir... (brouillon non contractuel)
recette.php à partir de
recette.html en utilisant xhtml_css.inc.php
et bdd.inc.php afin d'afficher une recette tirée
de la base de données puis vérifiez que le résultat
produit est bien toujours XHTML-valide et dynamique pour sa partie JavaScript
(adaptation des données au nombre de personnes).
L'examen final aura lieu lundi 13/03 de 18h30 à 20h30 dans l'amphithéatre jouxtant la salle machines dans laquelle nous avons fait les séances de cours. Tous les documents papiers sont autorisés. Bonnes révisions.
Vous pouvez consulter le sujet de l'année dernière pour vous rendre compte que les questions sont très proches de tout ce que l'on a vu au cours des séances. Reportez-vous à la section notation pour avoir plus de détails sur le barême potentiel (le sujet n'est pas encore fait) de cette année.
L'examen final a eu lieu le lundi 14/03/2005 de 18h30 à 20h30 dans l'amphithéatre jouxtant la salle machine dans laquelle nous avions fait les séances de cours. Tous les documents papiers étaient autorisés. L'énoncé est désormais consultable a titre d'annale. Le barème a été le suivant :
Il n'y a eu aucune question sur MySQL car nous n'avions que peu abordé ce langage.
Le calendrier des séances a été le suivant :
| 17/01 | 24/01 | 31/01 | 07/02 | 14/02 | 21/02 | 28/02 | 07/03 | 14/03 |
| placez la souris sur une case pour plus de détails | ||||||||