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
**** 22-05-2010
07h00 start 09h tours annonces; téléphone… 10h03 tours annonces; putain même problème qu'hier sur ce form, ya un truc qui passe pas mais je sais pas quoi, rage.. je viens de remplacer le champ order par ordre et le champ path par chemin. Et ça marche, je pense qu'il y a un des noms qui doivent etre interdits ou réservés par mysql. ? Du coup elevons ma bidouille de merde... 12h13 : l'administration de la boutique est en place avec le niveau de fonctionalité 1. Par niveau de fonctionalité 1 j'entends que l'utilisateur est capable de faire tout ce qu'il a le droit de faire grâce à l'interface. Le niveau de fonctionalité 2 apportera des facilités de gestion qui n'existent pas au niveau1. Le niveau de foncitonalité apporte des petites fonctions qui rendent l'interface plus convivilale, pratique et intuitive. Malgré tout, le niveau 1 est suffisant pour administrer une boutique, et étant donné les contraintes de temps que j'ai, amener un service au niveau de fonctionalité 1 est déjà un premier sous but. Je vais maintenant amener le front office au niveau de fonctionalité 1, c'est à dire principalement déterminer ou et comment vont s'afficher les éléments. 12h51 Alors déjà, dans ma conception pas de page d'accueil, okaaaaay, c'est le premier défaut? pour corriger cela en fait je pense qu'il faut introduire la notion de pages. Typiquement, un internaute arrive sur une page d'accueil qui contient un texte et ue ou quelques photos et qui présentent par exemple les catégories du commerçant. En cliquant sur une catégorie, l'internaute (i) arrive sur une page de catégorie qui affiche un petit descriptif de la catégorie puis tous les produits liés à cette catégorie. En cliquant sur un produit, i arrive sur un page de produits qui affiche l a description du produit, son prix éventuellement ainsi que sa quantité ( à ajouter dans les options), ainsi que toutes les photos liées à ce produit. Pour m'éviter du travail, je peux dire que commerce_categorie_produit est en fait commerce_categorie. Et dans layout, j'étends un peu le concept, et cela devient type. Ce qui me permet de dire type=accueil ou type=categorie1 ou type = accueil2, … 12h58 musique. 13h59 : Pour clarifier, disons que le commerçant peut ajouter des pages qui ont un certaine disposition : libre ou produit Le commerçant choisit libre, il écrit donc du html librement dedans. Si par contre il choisit type=pageProduit, il pourra lier des produits à cette page, qui s'afficheront conformément au modèle choisi. Pour être affiché, un produit doit nécessairement être lié à une page. Reforgeons le schéma sql. J'en profite pour ajouter une propriété qui permettra de choisir d'afficher ou pas les prix, par page, cela donne : sch-ecommerce3.png Bon, c'est reparti pour un tour. Encore une fois on voit que tout est dans la conception, et que j'aurais pu gagner quelques heures si j'avais bien conçu dès le départ… 15h16 : ok, douche 15h36 : ok, rajoutons une table commerce_config qui contiendra pour l'instant le paramètre page d'accueil : paramètre qui définit sur quelle page doit s'ouvrir la boutique; Il y aura également un paramètre afficher les prix global qui sera overridé ou pas par page. sch-ecommerce4.png 16h21 : boudiou, qu'est)ce que je suis lent… Passons maintenant au front office comme aurait d être le cas depuis tout à l'heure. 17h36 : après avoir réfléchi sur la meilleure organisation, question perfs, rapidité de développement, évolution, etc… il me semble que la meilleure manière d'organiser les différents templates pour la page d'accueil n'est pas l'objet, comme je voulais faire au début, mais une hiérarchie dans des dossiers, simplement, chacun contenant des fichiers correspondant au layout appelé. 17h57 : sport 18h47 : encore une fois je vais rusher ... 19h11 : viens alors le problème de placement de menu. Si je veux que l'utilisateur puisse choisir de le placer en haut ou à gauche facilement, alors peut être je devrais créer une option dans la config générale qui lui permette de faire cela. Cette option ciblerait un template. Du coup, je vais peutêtre avoir besoin d'objets finalement, sinon, mon pauvre petit cerveau risque de galérer.. Je vais essayer encore un peu de voir ce qu'il est possible de faire sans objet, puis si j'y arrive pas, je passerais en modèle objet. En fait toujours pas besoin d'objet, je vais m'en sortir plus élégamment (mon point de vue) avec des include. 19h51 : ok le test de base est passé avec succès. Par contre nous sommes tout de suite confrontés à d'autres problèmes intéressants : 1. l'affichage du menu de manière rrécursive (hélas j'ai plus ça en stock) 2. L'affichage du sous menu relatif dans la page ? Evidemment, la constante dans les 2 problèmes est que nous manquons encore crucialement de temps. Donc pour l'instant, je vais faire un menu flat de chez flat. Et la question 2 est directement zappée, car mon objectif est d'apporter le front end au niveau 1 de fonctionalité, c'est à dire avec la galerie photo, la présentation des produits donc pas le temps de se lancer dans des fonctions complexes maintenant; 23H01 : en fait l'idée de faire une table spécialement pour les galeries était une bonne idée. Maintenant c'est trop tard pour revenir en arrière, mais cela m'aurait permis d'être plus propre : en séparant le style d'une galerie dans la table galerie. Alors que là, avec le design actuel, je me sens obligé d'utiliser un attribut style de galerie dans la table produit, ce qui je pense est un peu moins juste. Au moins distinguons le style de galerie et le style de page. Pour l'instant, ne gardons que le style de galerie, nous développerons en fonction des besoins réels utilisateurs. 00h12 : ca y est : super rustique mais fonctionnel, l'exercice était intéressant, et j'aimerais bien le développer "correctement" plus tard, rajouter des templates, monter au niveau de fonctionalité 2 etc… Pour l'heure très largement satisfaisant par rapport à la requête de base qui était qu'un commerçant puisse présenter ses produits sur le site. La suite de ce module est évidemment la vente en ligne. Mettons cela en ligne et allons vite nous coucher pour bien nous reposer pour demain... MODIFS... img/estore/37/page img/estore/37/produit Tan_Private_CommercePage Tan_Kustom_CommerceProduit Tan_Kustom_CommerceConfig Tan_Kustom_CommerceStat 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_config` ( `id` INT(11) NOT NULL AUTO_INCREMENT , `commerce_id` INT(11) NOT NULL , `page_accueil_id` INT(11) NOT NULL , `afficher_prix` CHAR(1) NOT NULL , `afficher_quantite` CHAR(1) NOT NULL , `template` VARCHAR(255) NOT NULL , PRIMARY KEY (`id`) , INDEX `fk_commerce_config_commerce1` (`commerce_id` ASC) , CONSTRAINT `fk_commerce_config_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_page_has_commerce_produit` ( `id` INT(11) NOT NULL AUTO_INCREMENT , `commerce_page_id` INT(11) NOT NULL , `commerce_produit_id` INT(11) NOT NULL , PRIMARY KEY (`id`, `commerce_page_id`, `commerce_produit_id`) , INDEX `fk_commerce_page_has_commerce_produit_commerce_page1` (`commerce_page_id` ASC) , INDEX `fk_commerce_page_has_commerce_produit_commerce_produit1` (`commerce_produit_id` ASC) , CONSTRAINT `fk_commerce_page_has_commerce_produit_commerce_page1` FOREIGN KEY (`commerce_page_id` ) REFERENCES `tan`.`commerce_page` (`id` ) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_commerce_page_has_commerce_produit_commerce_produit1` 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_page` ( `id` INT(11) NOT NULL AUTO_INCREMENT , `parent_id` INT(11) NOT NULL , `commerce_id` INT(11) NOT NULL , `titre` VARCHAR(255) NOT NULL , `textehtml` TEXT NOT NULL , `photo` VARCHAR(255) NOT NULL , `layout` TINYINT(4) NOT NULL , `ordre` INT(11) NOT NULL , `afficher_prix` CHAR(1) NOT NULL , `afficher_quantite` CHAR(1) 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_photo` ( `id` INT(11) NOT NULL AUTO_INCREMENT , `commerce_produit_id` INT(11) NOT NULL , `chemin` VARCHAR(255) NOT NULL , `ordre` TINYINT(4) NOT NULL , `statut` TINYINT(4) NOT NULL , PRIMARY KEY (`id`) , INDEX `fk_commerce_produit_photo_commerce_produit1` (`commerce_produit_id` ASC) , CONSTRAINT `fk_commerce_produit_photo_commerce_produit1` 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_produit` ( `id` INT(11) NOT NULL AUTO_INCREMENT , `commerce_id` INT(11) NOT NULL , `titre` VARCHAR(45) NOT NULL , `description` TEXT NOT NULL , `mainphoto` VARCHAR(255) NOT NULL , `prix` DECIMAL(13,2) NOT NULL , `style_galerie` TINYINT(4) NOT NULL , `quantite` INT(11) 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; SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; drop table commerce_produit; drop table commerce_produit_photo; drop table commerce_page; drop table commerce_page_has_commerce_produit; drop table commerce_config;