IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[Conception] HTML et Bases de données


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 38
    Points : 28
    Points
    28
    Par défaut [Conception] HTML et Bases de données
    Bonjour,

    Je pense que beaucoup d'entre vous connaissent la fonction nl2br, qui permet d'insérer la balise '<br />' devant toutes les nouvelles lignes. Beaucoup de personnes recommandent d'utiliser cette fonction uniquement à l'affichage. Et d'ailleurs, cela parait tout à fait logique, et cela explique également pourquoi il n'existe pas de fonction br2nl.

    Cependant, je me trouve face à une impasse : imaginez un formulaire bbcode, dans un panel d'administration, permettant d'insérer du html (je ne parle pas d'une coloration syntaxique, mais bel et bien de html : les balises sont interprétées). Voici un exemple :

    Par exemple, nous entrons ceci dans le formulaire :

    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Phasellus eu arcu. Nulla diam velit, convallis in, elementum sed, varius varius, lorem.

    [HTML]
    Quisque ut purus et <strong>lorem</strong> mollis venenatis.<br />
    Qroin luctus dignissim sapien.
    Sed luctus porta eros.
    [/HTML]

    Aliquam purus velit, pharetra vitae, porttitor quis, ornare ut, libero. Quisque convallis, dolor a varius elementum, dolor leo suscipit nisl, in mollis nisl ipsum et lacus.
    Et cela afficherait :

    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Phasellus eu arcu. Nulla diam velit, convallis in, elementum sed, varius varius, lorem.

    Quisque ut purus et lorem mollis venenatis.
    Qroin luctus dignissim sapien. Sed luctus porta eros.

    Aliquam purus velit, pharetra vitae, porttitor quis, ornare ut, libero. Quisque convallis, dolor a varius elementum, dolor leo suscipit nisl, in mollis nisl ipsum et lacus.
    Ici, le parser serait très simple. Mais en ajoutant plusieurs options (coloration syntaxique d'une dizaine de langage, etc...), ça peut rapidement devenir asez lourd. Pour des raisons de performance, le plus judicieux est de parser le formulaire à l'enregistrement. Cependant, ça impose d'utiliser nl2br à l'enregistrement, et non à l'affichage. Autrement dit, on est véritablement partagé entre performance et logiques de programmation.


    Même si je reconnais que la question n'est pas de la plus haute importance, votre point de vue m'intéresse.

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Avant de répondre de manière plus complète, peux-tu me dire où tu utilises le BBCode que tu évoques ?

  3. #3
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    je verrais plutot htmlentities() et html_entity_decode() non ??

    et puis si tu tapes des balises html, tu les stockes avec htmlentities comme ca elle ne sont pas executable, et après tu les décode pour l'affichage avec [HTML] [/HTML] non ?? ou j'ai pas pigé le probleme ?

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 38
    Points : 28
    Points
    28
    Par défaut
    Le bbcode est utilisé dans un formulaire du panel d'administration, pour modifier des articles. Les articles sont visualisés par tous les visiteurs.

    Concernant htmlentities, cette fonction est utilisé, mais uniquement sur le texte hors des balises [HTML]. Mais le problème est exactement le même qu'avec nl2br : il est plus logique de l'utiliser lors de l'affichage, mais plus performant de le faire lors de l'enregistrement.

    Enfin, le fond de ma question, c'est essentiellement la logique de programmation. Pour des raisons de performance, j'aurais tendance à parser lors de l'enregistrement, et stoquer la valeur parsée dans la base de données, prete à être affichée. Seulement, la logique voudrait que l'on parse uniquement à l'affichage.

  5. #5
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Okay, maintenant j'ai saisi le fond du problème ^^

    Ne t'en fais pas pour les performances, va. Dans mon URL Rewriting, je parse la page HTML complète pour chercher les URLs, faire plusieurs dizaines de requêtes sur la BDD et effectuer autant (voire davantage) de remplacements. Je mélange des regex, des str_replace et j'en passe. Pourtant, le temps d'exécution total de la fonction d'URLR est ridicule.

    Mon conseil : ne jamais coder en pensant "performances" mais, à l'inverse, toujours avec un objectif de relecture ultérieure.
    Les petites optimisations comme celle dont tu parles sont vraiment ridicules et elles peuvent te faire perdre un temps monstrueux un jour ou l'autre, puisque ce n'est pas très correct.
    Enregistre toujours des données brutes (atomiques) dans la BDD. Laisse tous les traitements au langage de script.

  6. #6
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    Je suis totalement d'accord avec Yogui, la base de données devrait toujours contenir le texte tel qu'il a été saisi, et non tel qu'il devra etre affiché.

    Si apres tu as des soucis de performances... et bien, rien ne t'empeche de mettre en place un systeme de cache, et cela independamment de la provenance des données (base de données ou autre) afin d'ameliorer les perfs.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 38
    Points : 28
    Points
    28
    Par défaut
    Donc vous privilégiez la logique aux performances.
    Autrement dit, je ne change pas mes petites habitudes, et j'enregistre tel quel dans la base de données.


    Concernant le système de cache, c'est une solution.
    Cependant, dans d'autres systèmes (un forum par exemple, avec des centaines de milliers de message), c'est très difficile, voire impossible à mettre en place.

Discussions similaires

  1. conception de la base de donnée
    Par zidenne dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 27/06/2006, 11h42
  2. [Conception] Modifier une base de données
    Par fabrice88 dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 09/06/2006, 09h21
  3. [Conception] Formulaire et base de donnée ?
    Par heldev dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 10/03/2006, 17h09
  4. Avis sur la conception de ma base de données.
    Par perlgirl dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 10/11/2005, 21h47
  5. Besoin d'aide sur la conception d'un base de données
    Par lordgodgiven dans le forum Modélisation
    Réponses: 1
    Dernier message: 01/10/2005, 16h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo