Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/08/2011, 08h45   #1
Futur Membre du Club
 
Étudiant
Inscription : juin 2007
Messages : 99
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Gard (Languedoc Roussillon)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2007
Messages : 99
Points : 19
Points : 19
Envoyer un message via MSN à CleeM
Par défaut Remplacement de caractères sur type TEXT

Bonjour à tous,

Je bloque sur un problème depuis un petit moment et j'aurais bien besoin d'aide ! :-)

Mon problème concerne plusieurs langages, mais la solution que j'ai trouvée est orientée SGBD, donc je la pose ici mais je vais quand même vous exposer la totalité du problème :

Je développe un site en AJAX :

- Un tableau récapitulatif en HTML s'affiche aux yeux de l'utilisateur.
- Lorsqu'il valide celui-ci, un ajout dans la BDD se fait (en AJAX donc) : j'insère dans la table RECAP le code HTML du tableau.

---> Déjà ici : AJAX faisant appel à un fichier XML et les balises HTML étant composées de caractères '<' et '>', un problème se pose.

- Je remplace donc tous les caractères '<' et '>' de ma chaine par leur code HTML : '&lt;' et '&gt;'.
- Je créé un trigger sur ma table sous SQL Server et décide de remplacer ces caractères HTML par ceux qui étaient bloqués par XML juste après un INSERT.

---> Et voici mon problème en SQL : ma colonne contenant le tableau HTML est une colonne TEXT car il peut être très grand et avec de nombreuses balises. Et apparemment, la fonction replace ne peut pas être utilisée sur ce type de colonne...

Connaissez vous un autre moyen de procéder à un remplacement de ces caractères?


Merci par avance,
Clément.

PS: Je n'ai pas le choix du langage, ainsi il aurait été plus simple de faire cet ajout en PHP, mais je ne peux pas.
CleeM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 10h05   #2
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Bonjour,

Si vous faites cela en Ajax, je suppose que vous avez une page (php, asp, ou autre) qui récupère ces informations et les fournit pour votre httprequest. personnellement, je ne stockerai en base que les valeurs du tableau, et je laisserai à cette page le soin de créer le tableau html à partir des données (et éventuellement l'inverse si nécessaire)

au pire, cette page pourrai au moins se charger de la conversion des caractères spéciaux. Les langages de scripting orientés web fournissent souvent nativement ce genre de fonction, il ne vous en coutera qu'une ligne

Avez vous une idée de la taille maximum que pourra atteindre ce tableau html ?

d'atre part, je ne comprend pas bien :
Citation:
---> Déjà ici : AJAX faisant appel à un fichier XML et les balises HTML étant composées de caractères '<' et '>', un problème se pose.
quel fichier XML, et quel est le problème qui se pose ? (vous pourriez aussi stocker simplement ce fichier XML en base, avec le type XML)


Enfin, si vous voulez vraiment effecteur des remplacements sur votre colonne TEXT, vous pouvez la spliter an "blocs" de 4000, convertir en nvarchar, effectuer vos remplacements et reconvertir en TEXT. Mais cela n'est pas l'idéal, vous disposerez de beaucoup moins d'outils/fonctions pour faire ce genre d'opérations qu'avec un langage de programmation, tout simplement parce qu'un SGBDR n'est pas initialement prévu pour cela.
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h05.


 
 
 
 
Partenaires

Hébergement Web