Le carnet de bord du webmaster
Passez votre chemin c'est mes notes ici...
07 | 31 | 01 | 19 | 20 | 04 | 32 | 10 | 11 | 21 | 34 | 16 | 36 | 17 | 30 | 18 | 28 | 14 | 29 | 08 | 06 | 03 | 27 | 25 | 22 | 05 | 09 | 02 | 13 | 15 | 12 | 23 | 26 | 24 | 33
**** 20-05-2010
06h29 start 08h49 mon manitou script me fait enfin les tâches simples pour gérer facilement le backup en local. Demain, je coninuerai donc sur le serveur bind distant… Tours annonces : donc le système de photos pour la page d'accueil. Commençons par créer la table photo_accueil Nous avons donc ceci : sch-photo_accueil.png La table n'est pas liée à une autre, car les photos doivent continuer d'exister même si l'utilisateur est supprimé. rpath : relative path 09h12 amélioration de manitou 09h19 : Créons maintenant le formulaire qui va permettre à un utilisateur connecté d'ajouter une photo avec un titre, oups j'aurais du ajouter une description pour plus tard, on ne sait jamais… 09h23 : ok Créons l'onglet dans mon compte, pour l'instant, appelons le "bêtement" Photo Accueil 09h34 oups : ajout du département dans la table. 09h41 oups : il faut qu'une photo appartienne forcément à un utilisateur, pour des facilités d'utilisation d'inner join. L'astuce qu'il faudrait que je retienne sinon ça va me jouer des tours, c'est que l'utilisateur possède la photo, mais le département n'est pas celui auquel est rattaché l'utilisateur, mais seulement le département du site sur lequel l'utilisateur se trouve au moment où il poste la photo. sch-photo_accueil2.png truc à faire… 10h24 11h07 : le formulaire et la liste sont à peu près en place, heureusement que j'ai pu réutiliser mon script au, super gain de temps. 12h10 : les photos défilent sur la page d'accueil. J'ai mis le nom de l'utilisateur en dessous de la photo, afin de mettre en valeur l'utilisateur. Les photos sont sélectionnées alétoirement sur une plage maximum de 20 photos pour des raisons de perfs javascript. Avec le cache actif en prod, cela équivaudra à dire que toutes les heures, le jeu de photos sera différent. Il faut que je style les flèches de ce carousel neithertheless … 12h58 : ok mais je cherche un moyen de générer directement le xml du flash par php (dynamiquement ) plutôt que de le générer statiquement musique/.. 13h58 : tours annonces 15h24 : le gros est fait, rajout de petites touches finales et petites corrections mineures. 16h30 : ok (Pas trop tôt) La suite ::: Mon compte Profil : petite correction Profil > sexe C'est toujours marqué inscrite depuis, mais je en suis pas une fille. Pouvoir changer de sexe... 16h52 : ok la suite … Commerces : présentation des produits Permettre aux commerces de présenter leurs produits à travers le site. Inclure dans compte vendeur; Une sorte de boutique en ligne. Comme les cadeaux Tao, mais avec des produits réels; Mais en fait on va faire différent. Ca doit être pratique à faire pour moi, agréable et intéressant à utiliser pour le commerçant. Complet, évolutif, et centralisé. En gros c'est les cadeaux TAo, en moins complexe., c'est à dire pas besoin d'horaires de lancement et d'expiration, on garde le reste : prix, stock, description, titre. Après pour les déclinaisons d'affichage, on verra dans un deuxième temps. Par contre, il peut être intéressant, voire nécessaire de prendre en compte la suggestion suivante : un produit peut être mis en valeur par plusieurs photos. Mouais, j'essaie d'écouter de la musique en travaillant, j'espère que ça ne perturbera pas trop ma conception… Donc un produit a des caractéristiques de base, titre, description, prix, stock. iIl est mis en avant par des photos. Voyons comment mes doigts tran-sforment cela en database.;; (=>crâneur, =>chtemmerde) En regardant l'état génral des tables, je oups à mort.. Pourquoi avoir fait un ocmpte vendeur, quand seul la table commerce suffisait. La réponse est un peu complexe et est lié à des contraintes bien réélls : lorsque j'ai créé le compte vendeur, l'idée était que je puisse moi-même offrir des cadeaux tao, genre des bouquins que je n'utilise plus… Mais comme je ne suis pas un commerce et que je ne voulais pas créer un commerce juste pour offrir des cadeaux tao, alors j'ai imaginé le compte vendeur, qui permet à une entité de faire des cadeaux tao, moi (ou un utilisateur), un commerce, ou le système. Maintenant, se sont rajoutés des règles business qui compliquent tout. Heureusement que je m'en rends compte. Le compte vendeur ce n'est donc que pour faire des cadeaux Tao, en gros, à la base. Tant pis, je faire une deuxième table pour permettre aux commerces de vendre leurs produits propres. C'est une sorte de duplication, mais il vaut mieux ça plutôt que d'à tout prix essayer de n'avoir qu'un seul système pour tout gérer. Continuer dans cette voie serait à long terme une impasse et provoquerait des incohérenes dans le système, ou tout au moins des complications bien plus tordues. 18h00 sport 19h00 Joomla 21h00 Maya 23h sieste… 00h33 : ok Commençons par mettre à jour le site en ligne. ReCréation des photos pour chaque ville ... 01h58 : ok, one shot ! Maintenant, continuons, ah oui, déjà un autre truc à faire, rien à voir. 03h42 : Voici le schéma pour le ecommerce tel que je l'ai pensé : sch-ecommerce.png Un commerce peut avoir des produits (à vendre). Un produit PEUT appartenir à une catégorie. Un commerce PEUT avoir des catégories. (Chaque commerce a ses propres catégories que le commerçant créant suivant son besoin). Les statuts sont un peu partout sur le schéma et permettent à chaque fois d'activer ou désactiver les "objets" correspondant. Un produit est affiché d'une certaine manière. Le produit peut être lié à 0, 1 ou plusieurs photos. Si le produit est lié à au moins une photo, alors l'affichage de la ou de les photo(s) est forcément défini quelque part : la galerie photo. Cette galerie a un style d'affichage. Cela permet au développeur de travailler sur les styles d'affichage sans se soucier d'autre chose. Cela permet au commerçant d'afficher ses produits de différentes manières facilement, sans reconstruire la galerie, simplement en un clic. Voilà, j'ai une bonne base de travail je pense pour demain. Hélas, le temps est vraiment short, j'aimerais bien finir cela demain… oups mission impossible, ou pas… pigeon impossible, trop bien Voix off. patch sql : CREATE TABLE `photo_accueil` ( `id` int(11) NOT NULL AUTO_INCREMENT, `utilisateur_id` int(11) NOT NULL, `titre` varchar(255) NOT NULL, `description` text NOT NULL, `date` datetime NOT NULL, `rpath` varchar(255) NOT NULL, `departement_id` varchar(3) NOT NULL, `statut` tinyint(4) NOT NULL, PRIMARY KEY (`id`), KEY `fk_photo_accueil_utilisateur1` (`utilisateur_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=24 ; -- -- Contenu de la table `photo_accueil` -- INSERT INTO `photo_accueil` VALUES(1, 285, 'photo1', '', '2010-05-21 00:38:05', '/img/photo-accueil/37/1/thumb/1.jpg', '37', 2); INSERT INTO `photo_accueil` VALUES(2, 285, 'photo2', '', '2010-05-21 00:39:34', '/img/photo-accueil/37/2/thumb/2.jpg', '37', 2); INSERT INTO `photo_accueil` VALUES(3, 285, 'photo 3', '', '2010-05-21 00:40:11', '/img/photo-accueil/37/3/thumb/3.jpg', '37', 2); INSERT INTO `photo_accueil` VALUES(4, 285, 'photo 4', '', '2010-05-21 00:40:26', '/img/photo-accueil/37/4/thumb/4.jpg', '37', 2); INSERT INTO `photo_accueil` VALUES(5, 285, 'photo 5', '', '2010-05-21 00:40:47', '/img/photo-accueil/37/5/thumb/5.jpg', '37', 2); INSERT INTO `photo_accueil` VALUES(6, 285, 'la gare', '', '2010-05-21 00:41:23', '/img/photo-accueil/37/6/thumb/6.jpg', '37', 2); INSERT INTO `photo_accueil` VALUES(7, 285, 'photo 7', '', '2010-05-21 00:41:48', '/img/photo-accueil/37/7/thumb/7.jpg', '37', 2); INSERT INTO `photo_accueil` VALUES(8, 285, 'photo 8', '', '2010-05-21 00:42:03', '/img/photo-accueil/37/8/thumb/8.jpg', '37', 2); INSERT INTO `photo_accueil` VALUES(9, 285, 'la gare, les 2 tours', '', '2010-05-21 00:43:37', '/img/photo-accueil/37/9/thumb/9.jpg', '37', 2); INSERT INTO `photo_accueil` VALUES(10, 285, 'fontaine à la gare', '', '2010-05-21 00:43:58', '/img/photo-accueil/37/10/thumb/10.jpg', '37', 2); INSERT INTO `photo_accueil` VALUES(11, 285, 'La gare, fue de face', '', '2010-05-21 00:44:25', '/img/photo-accueil/37/11/thumb/11.jpg', '37', 2); INSERT INTO `photo_accueil` VALUES(12, 285, 'Boulevard Heurteloup', '', '2010-05-21 00:44:47', '/img/photo-accueil/37/12/thumb/12.jpg', '37', 2); INSERT INTO `photo_accueil` VALUES(13, 285, 'Place plumereau', '', '2010-05-21 00:45:47', '/img/photo-accueil/37/13/thumb/13.jpg', '37', 2); INSERT INTO `photo_accueil` VALUES(14, 285, 'photo 1', '', '2010-05-21 00:46:03', '/img/photo-accueil/37/14/thumb/1.jpg', '37', 3); INSERT INTO `photo_accueil` VALUES(15, 285, 'photo 2', '', '2010-05-21 01:04:59', '/img/photo-accueil/28/15/thumb/2.jpg', '28', 2); INSERT INTO `photo_accueil` VALUES(16, 285, 'photo 4', '', '2010-05-21 01:05:11', '/img/photo-accueil/28/16/thumb/4.jpg', '28', 2); INSERT INTO `photo_accueil` VALUES(17, 285, 'La place des épars', '', '2010-05-21 01:05:32', '/img/photo-accueil/28/17/thumb/5.jpg', '28', 2); INSERT INTO `photo_accueil` VALUES(18, 285, 'photo 6', '', '2010-05-21 01:06:47', '/img/photo-accueil/28/18/thumb/6.jpg', '28', 2); INSERT INTO `photo_accueil` VALUES(19, 285, 'photo 7', '', '2010-05-21 01:07:10', '/img/photo-accueil/28/19/thumb/7.jpg', '28', 2); INSERT INTO `photo_accueil` VALUES(20, 285, 'photo 8', '', '2010-05-21 01:12:15', '/img/photo-accueil/28/20/thumb/8.jpg', '28', 2); INSERT INTO `photo_accueil` VALUES(21, 285, 'vitrail de la cathédrale de chartres', '', '2010-05-21 01:12:30', '/img/photo-accueil/28/21/thumb/9.jpg', '28', 2); INSERT INTO `photo_accueil` VALUES(22, 285, 'photo 1', '', '2010-05-21 01:12:51', '/img/photo-accueil/28/22/thumb/1.jpg', '28', 2); INSERT INTO `photo_accueil` VALUES(23, 285, '', '', '2010-05-21 01:22:39', '', '28', 1); -- -- Contraintes pour les tables exportées -- -- -- Contraintes pour la table `photo_accueil` -- ALTER TABLE `photo_accueil` ADD CONSTRAINT `fk_photo_accueil_utilisateur1` FOREIGN KEY (`utilisateur_id`) REFERENCES `utilisateur` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION; TEsting :: SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL'; CREATE TABLE IF NOT EXISTS `tan`.`commerce_categorie_produit_has_commerce_produit` ( `commerce_categorie_produit_id` INT(11) NOT NULL , `commerce_produit_id` INT(11) NOT NULL , PRIMARY KEY (`commerce_categorie_produit_id`, `commerce_produit_id`) , INDEX `fk_commerce_categorie_produit_has_commerce_produit_commerce_c1` (`commerce_categorie_produit_id` ASC) , INDEX `fk_commerce_categorie_produit_has_commerce_produit_commerce_p1` (`commerce_produit_id` ASC) , CONSTRAINT `fk_commerce_categorie_produit_has_commerce_produit_commerce_c1` FOREIGN KEY (`commerce_categorie_produit_id` ) REFERENCES `tan`.`commerce_categorie_produit` (`id` ) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_commerce_categorie_produit_has_commerce_produit_commerce_p1` FOREIGN KEY (`commerce_produit_id` ) REFERENCES `tan`.`commerce_produit` (`id` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB DEFAULT CHARACTER SET = latin1 COLLATE = latin1_swedish_ci; CREATE TABLE IF NOT EXISTS `tan`.`commerce_categorie_produit` ( `id` INT(11) NOT NULL AUTO_INCREMENT , `parent_id` INT(11) NOT NULL , `commerce_id` INT(11) NOT NULL , `titre` VARCHAR(255) NOT NULL , `ordre` INT(11) NOT NULL , `statut` TINYINT(4) NOT NULL , PRIMARY KEY (`id`) , INDEX `fk_commerce_categorie_produit_commerce1` (`commerce_id` ASC) , CONSTRAINT `fk_commerce_categorie_produit_commerce1` FOREIGN KEY (`commerce_id` ) REFERENCES `tan`.`commerce` (`id` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB DEFAULT CHARACTER SET = latin1 COLLATE = latin1_swedish_ci; CREATE TABLE IF NOT EXISTS `tan`.`commerce_produit` ( `id` INT(11) NOT NULL AUTO_INCREMENT , `commerce_id` INT(11) NOT NULL , `titre` VARCHAR(45) NOT NULL , `description` TEXT NOT NULL , `prix` DECIMAL(13,2) NOT NULL , `statut` TINYINT(4) NOT NULL , PRIMARY KEY (`id`) , INDEX `fk_commerce_produit_commerce1` (`commerce_id` ASC) , CONSTRAINT `fk_commerce_produit_commerce1` FOREIGN KEY (`commerce_id` ) REFERENCES `tan`.`commerce` (`id` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB DEFAULT CHARACTER SET = latin1 COLLATE = latin1_swedish_ci; CREATE TABLE IF NOT EXISTS `tan`.`photo_accueil` ( `id` INT(11) NOT NULL AUTO_INCREMENT , `utilisateur_id` INT(11) NOT NULL , `titre` VARCHAR(255) NOT NULL , `description` TEXT NOT NULL , `date` DATETIME NOT NULL , `rpath` VARCHAR(255) NOT NULL , `departement_id` VARCHAR(3) NOT NULL , `statut` TINYINT(4) NOT NULL , PRIMARY KEY (`id`) , INDEX `fk_photo_accueil_utilisateur1` (`utilisateur_id` ASC) , CONSTRAINT `fk_photo_accueil_utilisateur1` FOREIGN KEY (`utilisateur_id` ) REFERENCES `tan`.`utilisateur` (`id` ) ON DELETE CASCADE ON UPDATE NO ACTION) ENGINE = InnoDB DEFAULT CHARACTER SET = latin1 COLLATE = latin1_swedish_ci; SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;