Exercices c
Pour illustrer les fonctionnalités de HTML 5 et localStorage contenteditable, je vous propose un petit exercice simple: concevoir une liste d’achats en ligne, modifiable à volonté et dont les données restent stockées sur votre navigateur, même de le redémarrer (figure 7-27).
Commençons par la structure HTML, qui – sans surprise – se présente sous forme de liste à puces, dont la seule particularité est d’avoir un attribut contenteditable:
Avec l’attribut contenteditable, tous les contenus de la zone occupée par le panneau de devenir modifiable par le visiteur, mais la valeur de cette approche devient évident que lorsque ces informations peuvent être stockées et récupérées.
Les bonnes nouvelles sont que l’application offre localStorage ce comportement en mode natif sur de nombreux navigateurs, notamment Internet Explorer 8. Toutefois, afin de bien contrôler ces caractéristiques, un passage vers le langage JavaScript est nécessaire. Commençons par appeler ma bibliothèque préférée, jQuery:
N’hésitez pas à tester et vérifier que vos modifications ont été prises en compte en actualisant la page web, ou même de redémarrer votre navigateur.
Le seul problème est que les données restent constamment en mémoire, même si vous ne le voulez pas! La seule solution réside dans un localStorage alternative très simple à mettre en œuvre.
Réduisez le nombre de tuples de revenir et de le faire dès que possible est la mission du développeur Web (entre autres). Quelle que soit la langue de script côté serveur utilisé, l’utilisation de SQL est inévitable lorsque l’on souhaite interroger une base de données. Cette étape ne devrait pas être négligée, voire inutiles pour optimiser sa PHP, ASP ou JSP si par la suite la base de données entière est rappatriée pour le traitement par le serveur web (voir la dernière erreur de la série: ’10 à ne pas commettre des erreurs en PHP). Pour limiter les données à extraire de la base de données, plusieurs commandes SQL, en plus de la syntaxe classique ‘SELECT … DE … WHERE ‘.
Le commandement «BYRappelez vous, nous avons terminé la première partie de cette série sur la commande SQL SELECT … pp_prenom, pp_mot_clefFROM PAR pp_mot_clef peopleORDER … Cela a eu pour effet de réduire le champs ‘pp_prenom’ et ‘pp_mot_clef’ table ‘people’, tous classés en fonction de la pp_mot_clef domaine. Classé oui, mais dans quel ordre? Par défaut, la commande ‘ORDER BY’ est exécuté dans «ASC» pour «ascendante», cette classification est appliquée dans l’ordre croissant.
ORDER BY
Si vous souhaitez exécuter les exemples qui suivent, nous vous recommandons de créer à la maison l’exemple de tableau ci-dessous, un simple copier / coller dans PhpMyAdmin assez. Nous vous rappelons qu’il est facile à installer et à Apache et PHP4 via ‘easyphp’ par exemple.
Voici le ‘CREATE TABLE’ et ‘INSERT’ correspondants: CREATE TABLE consoles (id tinyint (3) unsigned NOT NULL auto_increment, nom varchar (30) NOT NULL default, smallint prix (5) unsigned NOT NULL par défaut ‘0’ , fabricant varchar (20) PASpar défaut NULL, PRIMARY KEY (id))
INSERT INTO consoles VALUES (1, ‘Boy Color’, 76 ‘Nintendo’); INSERT INTO consoles VALUES (2, ‘PS2’, 305 ‘Sony’) INSERT INTO consoles VALUES (3, ‘Dreamcast, 152,’ Sega ‘ ) INSERT INTO consoles valeurs (4, ‘Boy Advance’, 122, ‘Nintendo’) INSERT INTO VALUES consoles (5, ‘Boy Advance’, 100 ‘Nintendo’);
Voyons ce que donne un ‘ORDER BY’ en mode descendant, tous les revoir certaines notions déjà abordées dans le didacticiel précédent:
Pourquoi ce résultat? Nous avons demandé le nom et le prix des consoles avec le nom du fabricant commence par la lettre ‘N’ (rappelez-vous le rôle de ‘LIKE’), avec un prix plus élevé à 50 €, toutes classées par nom, par ordre décroissant.Les consoles ont tous appris un nom composé, et le premier mot est identique («Boy») est le deuxième que le tri aura lieu: trier par ordre alphabétique inversé puisque nous sommes dans ‘DESC’ («descendant»).
Encore une fois, pourquoi? Nous avons demandé le nom, le prix, y compris le fabricant de consoles ‘Nintendo’, tous inscrits par leur nom dans l’ordre décroissant (qui s’applique à lui comme ‘DESC’) et le prix (par défaut ‘ASC’). Sans préciser le prix dans le «par décret» … id SELECT, nom, fabricant prixFROM consolesWHERE = ‘Nintendo’ORDER BY nom DESC … nous aurions obtenu:
ORDER BY
Si vous souhaitez exécuter les exemples qui suivent, nous vous recommandons de créer à la maison l’exemple de tableau ci-dessous, un simple copier / coller dans PhpMyAdmin assez. Nous vous rappelons qu’il est facile à installer et à Apache et PHP4 via ‘easyphp’ par exemple.
Voici le ‘CREATE TABLE’ et ‘INSERT’ correspondants: CREATE TABLE consoles (id tinyint (3) unsigned NOT NULL auto_increment, nom varchar (30) NOT NULL default, smallint prix (5) unsigned NOT NULL par défaut ‘0’ , fabricant varchar (20) PASpar défaut NULL, PRIMARY KEY (id))
INSERT INTO consoles VALUES (1, ‘Boy Color’, 76 ‘Nintendo’) INSERT INTO consoles VALUES (2, ‘PS2’, 305 ‘Sony’) INSERT INTO consoles VALUES (3, ‘Dreamcast, 152,’ Sega ‘) INSERT INTO consoles valeurs (4, ‘Boy Advance’, 122 ‘Nintendo’) INSERT INTO VALUES consoles (5, ‘Boy Advance’, 100 ‘Nintendo’);
Voyons ce que donne un ‘ORDER BY’ en mode descendant, tous les revoir certaines notions déjà abordées dans le didacticiel précédent:
Pourquoi ce résultat? Nous avons demandé le nom et le prix des consoles avec le nom du fabricant commence par la lettre ‘N’ (rappelez-vous le rôle de ‘LIKE’), avec un prix plus élevé à 50 €, tous répertoriés par nom, par ordre décroissant. Les consoles ont tous appris un nom composé, et le premier mot est identique («Boy») est le deuxième que le tri aura lieu: trier par ordre alphabétique inversé puisque nous sommes dans ‘DESC’ («descendant»).
Encore une fois, pourquoi? Nous avons demandé le nom, le prix, y compris le fabricant de consoles ‘Nintendo’, tous inscrits par leur nom dans l’ordre décroissant (qui s’applique à lui comme ‘DESC’) et le prix (par défaut ‘ASC’). Sans préciser le prix dans le «par décret» … SELECT id, nom, fabricant prixFROM consolesWHERE = ‘Nintendo’ORDER BY nom DESC … nous aurions obtenu:
fonctions de calcul et de commande ‘GROUP BY … HAVING’
Trouver un maximum ou un minimum, calculer une moyenne, une somme qui ne fait pas peur de la langue SQL.Voyons la façon de calculer le prix à payer pour un lot défini par une Dreamcast et PS2:
‘