Categories > TinyButStrong general (FR) >

htmlentities, htmlconv et loadtemplate( ,false)

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: TiTi
Date: 2006-05-11
Time: 16:28

htmlentities, htmlconv et loadtemplate( ,false)

Bonjour,
voici une petite réflexion

Avant tout :
Dans notre admin pannel, le code qui enregistre les données fait entre autres un htmlentities() et le tout est stocké dans la bdd.
donc si je tapes : "tiny & strong", je me retrouves avec "tiny & strong" dans ma bdd.

---

Par conséquent on est obligés (2 webmasters) de mettre htmlconv=no pour toutes les données, sinon le code source générée est : "tiny & strong", ce qui donne dans le navigateur "tiny & strong".....

J'ai relu les propriétés de la method LoadTemplate().
En fait quand tu fais $TBS->LoadTemplate(string File{, string HtmlCharSet}) bah par défaut il pense que c'est du ISO-8859-1 et va utiliser htmlentities() ... c'est pour ca qu'on mettaient htmlconv=no : pour empêcher que sa devienne : &
Et apparement on peut se passer du htmlconv=no pour tous les champs en mettant false au deuxième paramètre !

Mais du coup je suis en train de me demander si il vaut mieux stocker & ou simplement & dans la BDD... pouvez-vous m'éclairer ? que me conseillez-vous de faire ?


En vérité le cheminement de ma réflexion n'a pas été aussi simple et rapide, j'espère donc avoir été assez synthétique.
By: Skrol29
Date: 2006-05-11
Time: 16:51

Re: htmlentities, htmlconv et loadtemplate( ,false)

Salut,

Mon conseil perso est clair : de manière générale il faut enregistrer dans la base les données brutes, non formatées.
Pourquoi ? Parce que le formatage (ici en HTML) dépend de ce que vous voulez faire de l'info et de vers quoi vous l'envoyez.

Si vous stockez l'info formatée en HTML, alors vous ne pourrez que l'afficher dans des pages HTML. Les recherches textes risques d'être limitées, les éventuelles inclusions dans des chaînes Javascript sont impossibles, les reporting OpenOffice, Excel, Word, aussi.... Bref vous limitez sauvagement l'utilisation des données.

On rencontre le même genre de problème quand (nous) les informaticiens on enregistre des dates formatées dans un table sous un champ texte.  La date est préformée en français, ok cool, mais tous les calculs de date deviennent impossibles. Mieux vaut enregistrer la date brute (dans un champ date), puis formater la valeur récupérée quand on en a besoin.
By: TiTi
Date: 2006-05-11
Time: 16:59

Re: htmlentities, htmlconv et loadtemplate( ,false)

ok merci pour ton conseil.

Je vais voir ce qu'on va faire parceque sa risque de nous poser des problèmes avec les données préexistentes dans la BDD.

ouais pour la date vive preg_replace ;)
$datecreation=preg_replace('!([0-9]{4})([-])([0-9]{2})([-])([0-9]{2})!', '$5/$3/$1', $d['datecreation']);

P.S. : Je finis mon DUT info cette année :-P
By: Skrol29
Date: 2006-05-11
Time: 17:16

Re: htmlentities, htmlconv et loadtemplate( ,false)


> $datecreation=preg_replace( ...

Pour le formatage, ta ligne est équivalente à :
$datecreation = date('d/m/Y', strtotime($d['datecreation']) );

strtotime() est bien plus pratique. Quand tu as le timestamp, tu fais ce que tu veux : formatage, mois, jour, année, différence de jour,...

Petit bémol : PHP introduit un bug pour les dates avant 1970.