Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.



Documents pareils
Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Optimisation de 4D Server et 4D Web Server. Résumé. 4D Notes techniques

4e Dimension Clés XML Backup. Windows /Mac OS 4e Dimension D SA. Tous droits réservés.

Logiciel (Système d impression directe)

Corrigé de l'atelier pratique du module 8 : Implémentation de la réplication

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

1. Introduction Création d'une requête...2

Database Manager Guide de l utilisateur DMAN-FR-01/01/12

Quels sont les espaces disponibles sur l ordinateur pour stocker ses documents et comment accéder facilement au dossier «My Documents»?

Qu est ce qu une bibliothèque?

Service de certificat

Le logiciel de création de site internet IZISPOT est un outil très puissant et qui est assez simple après quelques temps d utilisation.

Didacticiel de mise à jour Web

Introduction à Expression Web 2

Utilisation de l éditeur.

E.N.T. Espace Numérique de Travail

On trouvera sur le site du CCDMD un exemple d album construit avec Cantare. (

MANUEL D INSTALLATION

Single User. Guide d Installation

Création d un site web avec Nvu

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

< Atelier 1 /> Démarrer une application web

HP Data Protector Express Software - Tutoriel 3. Réalisation de votre première sauvegarde et restauration de disque

Juin XMS PC Connect Guide de l utilisateur

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

La technologie au collège

Administration du site

MISE A JOUR : 04 FEVRIER 2011 PROCÉDURE D INSTALLATION. Cegid Business COMMENT INSTALLER CEGID BUSINESS V9 SOUS WINDOWS XP, VISTA ET 7

COURS WINDEV NUMERO 3

Mise en route et support Envision 10 SQL server (Avril 2015) A l'intention de l'administrateur SQL Server et de l administrateur Envision

Guide de démarrage rapide Centre de copies et d'impression Bureau en Gros en ligne

!" #$$%& Disque dur 2.5 pouces Firewire Apple MacOS FR V2.4 - Page 1/17

A. Introduction. Chapitre 7

Administration du site (Back Office)

GUIDE D UTILISATION CRÉER SON SITE WEB - PROJET RESCOL

VM Card. Manuel des paramètres des fonctions étendues pour le Web. Manuel utilisateur

Dans cette Unité, nous allons examiner

HowTo Installer egroupware 1.2 sur SME Serveur 7.0

MAILING KOMPOZER... 2 CREEZ UNE PAGE... 2 FORMAT DE LA PAGE... 2 AJOUTER DU TEXTE SUR UNE PAGE... 4

Comment utiliser FileMaker Pro avec Microsoft Office

AssetCenter Notes de version

Encryptions, compression et partitionnement des données

SQL MAP. Etude d un logiciel SQL Injection

Notes de mise à jour Fiery Print Controller AR-PE3, version 1.01 pour AR-C330

La Clé informatique. Formation Excel XP Aide-mémoire

v7.1 SP2 Guide des Nouveautés

GUIDE D UTILISATION DU BACKOFFICE

Instructions préliminaires P2WW FR Préface

Procédure Platine Exchange 2010 Accompagnement à la migration de votre compte 09/08/ Version 1.0 Hébergement web professionnel

Dans l'article précédent, vous avez appris

Présentation du PL/SQL

Menu Fédérateur. Procédure de réinstallation du logiciel EIC Menu Fédérateur d un ancien poste vers un nouveau poste

HP Data Protector Express Software - Tutoriel 4. Utilisation de Quick Access Control (Windows uniquement)

Utiliser Access ou Excel pour gérer vos données

Antidote et vos logiciels

Configuration de GFI MailArchiver

Le backup LOGOSw (Backup interne)

Setting Up PC MACLAN File Server

Antidote et vos logiciels

Configuration de Microsoft Internet Explorer pour l'installation des fichiers.cab AppliDis

Corrigé de l'atelier pratique du module 5 : Analyse de SQL Server

CREG : versailles.fr/spip.php?article803

Guide de prise en main Symantec Protection Center 2.1

FileMaker Pro 12. Guide de configuration de l installation réseau

Réaliser un PUBLIPOSTAGE

Guide de l administrateur DOC-OEMCS8-GA-FR-29/09/05

Utilisation du plugin AppliDis SLB (Smart Load Balancing)

Corrigé de l'atelier pratique du module 3 : Récupération d'urgence

Manuel logiciel client for Android

Prise en main rapide

Campagnes d ings v.1.6

Organiser le disque dur Dossiers Fichiers

Gestion des documents avec ALFRESCO

Objet du document. Version document : 1.00

Gestion de données avec les bibliothèques Final Cut Pro X. Livre blanc Juin 2014

DE VOS NOMS DE DOMAINE : Cette méthode est particulièrement efficace pour un référencement optimal sur une cible bien définie.

Service d information pour remise de paiement de factures Scotia

Ecran principal à l ouverture du logiciel

FileMaker Server 14. Guide de démarrage

MainBoss GMAO 2.9 Manuel de l utilisateur. Copyright 2005, Thinkage Ltd.

Utilisation de la clé USB et autres supports de stockages amovibles

Enseignement Informatique. Classe de Bac Pro SAPAT

Niveau 1. Atelier d'initiation à l'ordinateur ... Fondation de la Bibliothèque Memphrémagog inc. Magog (Québec) J1X 2E7 Tél.

Annexe 5. Kaspersky Security For SharePoint Servers. Consulting Team

Création d'un questionnaire (sondage)

Créer et partager des fichiers

FileMaker Server 14. Aide FileMaker Server

Manuel de I utilisateur. PrintShop Mail Version Logiciel de publipostage professionnel pour Apple Macintosh

Classer et partager ses photographies numériques

1.1 L EXPLORATEUR WINDOWS

Les dossiers, sous-dossiers, fichiers

E-MARQUE TRAITEMENT DES FICHIERS SAISON 2014/2015

Qlik Sense Desktop. Qlik Sense Copyright QlikTech International AB. Tous droits réservés.

GUIDE D UTILISATION DU CENTRE DE DONNÉES DE L ISU

Installation et paramétrage. Accès aux modèles, autotextes et clip- art partagés

Transcription:

Serveur de pages HTML Dynamiques Par Hugo FOURNIER, Support Technique 4DUS Note technique 4D-200010-26-FR Version 1 Date 1 Octobre 2000 Résumé Cette note technique explique la création d une base simple qui peut créer des pages HTML dynamiques. Bien qu elle reste simple, elle montre l utilisation d un 4DACTION dans une URL, l essentiel des liens de remplacement, et la façon dont une structure relationnelle simple peut égaler une structure de documents hiérarchiques HTML. 4D Notes techniques Copyright 1985-2004 4D SA - Tous droits réservés Tous les efforts ont été faits pour que le contenu de cette note technique présente le maximum de fiabilité possible. Néanmoins, les différents éléments composant cette note technique, et le cas échéant, le code, sont fournis sans garantie d'aucune sorte. L'auteur et 4D S.A. déclinent donc toute responsabilité quant à l'utilisation qui pourrait être faite de ces éléments, tant à l'égard de leurs utilisateurs que des tiers. Les informations contenues dans ce document peuvent faire l'objet de modifications sans préavis et ne sauraient en aucune manière engager 4D SA. La fourniture du logiciel décrit dans ce document est régie par un octroi de licence dont les termes sont précisés par ailleurs dans la licence électronique figurant sur le support dulogiciel et de la Documentation afférente. Le logiciel et sa documentation ne peuvent être utilisés, copiés oureproduits sur quelque support que ce soit et de quelque manière que ce soit, que conformément aux termes de cette licence. Aucune partie de ce document ne peut être reproduite ourecopiée de quelque manière que ce soit, électronique ou mécanique, y compris par photocopie, enregistrement, archivage ou tout autre procédé de stockage, de traitement et de récupération d'informations, pour d'autres buts que l'usage personnel de l'acheteur, et ce exclusivement aux conditions contractuelles, sans la permission explicite de 4D SA. 4D, 4D Calc, 4D Draw, 4D Write, 4D Insider, 4ème Dimension, 4D Server, 4D Compiler ainsi que les logos 4e Dimension, sont des marques enregistrées de 4D SA. Windows,Windows NT,Win 32s et Microsoft sont des marques enregistrées de Microsoft Corporation. Apple, Macintosh, Power Macintosh, LaserWriter, ImageWriter, QuickTime sont des marques enregistrées ou des noms commerciaux de Apple Computer,Inc. Mac2Win Software Copyright 1990-2002 est un produit de Altura Software,Inc. 4D Write contient des éléments de "MacLink Plus file translation", un produit de DataViz, Inc,55 Corporate drive,trumbull,ct,usa. XTND Copyright 1992-2002 4D SA. Tous droits réservés. XTND Technology Copyright 1989-2002 Claris Corporation.. Tous droits réservés ACROBAT Copyright 1987-2002, Secret Commercial Adobe Systems Inc.Tous droits réservés. ACROBAT est une marque enregistrée d'adobe Systems Inc. Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs. 1 / 14

Introduction Cette note technique décrit une méthode simple qui permet de publier des pages dynamiques de texte HTML. Le contenu de ces pages utilise 4D comme d un RDBMS (Relational Database Management System). Cette solution décrite ici tire avantage du mode non-contextuel de 4D, et plus spécialement, utilise un 4D ACTION dans une URL. Cette note est présentée selon le plan suivant : I II III - Étendue - Démarrer l'exemple - La base exemple et ses modèles HTML IV - Où allons nous? V VI - Créer le modèle - Créer le code qui permet la création de la page HTML A- La méthode " Populate_Gen_Chapters " B- La méthode " Substitute_Chapters " C- La méthode " Populate_Gen_SubChapters " D- La méthode " Substitute_SubChapters " I - Étendue Afin d'aborder les difficultés dans un ordre croissant, l exemple HTML que nous allons utiliser restera assez simple. Le but ici est de définir un modèle HTML simple et d avoir une publication 4D automatique de ses contenus. Les points techniques suivants sont abordés : - Définir une structure qui vous permet de faire une classification hiérarchique au moment de publier les documents. - Utiliser un 4D ACTION dans une URL. 2 / 14

- Manipuler un modèle HTML et remplir celui-ci de données. - Utiliser ENVOYER BLOB HTML pour envoyer le code HTML. II - Démarrer l'exemple La base exemple est configurée afin qu elle réachemine les liens créés à l adresse locale 127.0.0.1. Si vous voulez vous connecter à partir d une machine séparée, vous aurez besoin de l adresse IP de la machine serveur dans l enregistrement existant de la table Modèles. Vous pouvez aussi ajouter des données dans les tables Chapitres et Paragraphes. Elles seront publiées et formatées sur le modèle HTML stocké dans la table Modèles. III - La base exemple et ses modèles HTML La base exemple qui accompagne cette note technique est conçue pour publier un document avec trois niveaux hiérarchiques de texte : deux niveaux de titre et un niveau pour le corps du texte. Les données utilisées dans cet exemple consistent à dégager de la documentation de 4D Serveur, et seront considérées comme des données brutes de texte. Le résultat final que nous voulons obtenir ressemblera à : 3 / 14

Cette page HTML se compose de deux tables : - Une table qui inclut l autre et qui se compose d une ligne et d une colonne. - L autre table qui se compose au départ de deux lignes et de deux colonnes. Celle-ci est la table dont la bordure apparaît dans le document final. L autre table n est pas utilisée dans cet exemple, mais elle peut être utilisée pour afficher un arrière plan différent ou des données supplémentaires. L interface de ce document HTML permet à l utilisateur de sélectionner un chapitre en choisissant son nom sur la liste des chapitres, située à gauche. Une fois sélectionné, le contenu de ce chapitre est affiché sur la partie de droite. Il est organisé sur deux niveaux : le titre et le corps du texte. Les données sont organisées comme suit : Un chapitre comprend plusieurs sous-chapitres, chacun d eux se compose d un titre et, généralement de plusieurs paragraphes. Une seule table pour stocker les chapitres, et plusieurs tables pour stocker le contenu des chapitres. Quelles données supplémentaires devrons-nous inclure? 4 / 14

- L adresse IP du Serveur : sur une machine locale ou des réseaux locaux, si les bases de données ont besoin de retourner le pointeur URL vers celui-ci dans le contenu HTML, une adresse IP est utilisée durant l assemblage du code HTML. - Les données du modèle : dès lors que nous avons choisi d utiliser des pages dynamiques, il n y a aucune page HTML stockée sur le disque. Toutes les données HTML sont stockées dans la base. Voici notre structure : Dans les tables Chapitreset Paragraphes, le champ " Sequence_ID " est ajouté, ainsi vous pouvez définir un ordre de publication. La table Modèles est utilisée pour stocker les modèles et les adresses IP. Il serait logique de stocker ceux-ci dans deux tables séparées, mais cet exemple n est pas conçu pour utiliser plusieurs modèles ou adresse IP. IV - Où allons nous? Il y a deux problèmes qui ont besoin d être abordé conjointement : - Le modèle a besoin d être conçu d après le résultat que vous voulez obtenir. Cette partie devrait être faite dans tous les éditeurs HTML et nous devrions avoir très peu à faire avec l actuel programme de la base. Cependant, vous aurez besoin d isoler et de repérer l endroit où les données ont besoin d être insérées et laisser une chaîne texte à laquelle vous pourrez vous référer pour vos futurs remplacements. - Vous avez besoin d exécuter du code, ainsi la base 4D réagit à un appel spécifique à travers un 4D ACTION, et crée le code HTML approprié. 5 / 14

V - Créer le modèle Dans cet exemple, l apparence finale du document HTML est obtenue en utilisant de fausses données, il est nécessaire de remplacer ces données par une chaîne-texte qui servira à indiquer l emplacement où les données seront insérées. Cela nous donne le modèle suivant : Comme vous pouvez le voir, il reste seulement un exemple de chaque type de paragraphe, chacun est délimité par une chaîne de texte spécifique : - Chapter_Target : cette chaîne-texte indique l emplacement où le titre du chapitre sera inséré. - Body1_Target : cette chaîne-texte indique l emplacement où le sous-titre du chapitre sera inséré. - Body2_Target : cette chaîne-texte indique l emplacement où le corps du texte du sous-chapitre est inséré. Vous avez sûrement remarqué qu il y a seulement un exemple de chaque type de paragraphe. La raison est simple : comme vous ne savez pas à l avance combien de paragraphes seront insérés, vous devez laisser 4D construire le modèle et s'assurer qu il y ait le nombre correct de chaînes pour les remplacer. Si, dans un chapitre, il y a quatre enregistrements sélectionnés dans la table Paragraphes (par conséquent quatre sous titres avec le corps de texte correspondant), vous aurez besoin de quatre chaînes cibles pour les remplacer. Idem pour les titres de Chapitres. 6 / 14

Avant de pouvoir insérer le modèle HTLM dans la base, nous avons besoin d isoler dans le code HTML, les chaînes à remplacer et les balises correspondantes : Cela nous donne : - Chapter_Target : lorsque nous voulons remplacer cet item, nous remplacerons réellement : "<p> Chapter_Target</p>" - Body1_Target : lorsque nous voulons remplacer cet, nous remplacerons réellement : "<p><b><font size="+3">body1_target</font></b></p>" La différence entre cette chaîne et les deux autres est l inclusion de quelques informations sur la taille de la police de caractère. - Body2_Target : lorsque nous voulons remplacer la chaîne, nous remplacerons réellement : <p>body2_target</p>. Maintenant que le modèle est prêt et que nous connaissons quelles chaînes rechercher, le modèle peut être stocké dans le champ-texte de la table Modèles. 7 / 14

VI- Créer le code qui permet la création de la page HTML La difficulté principale ici est de définir ce dont la base a besoin de faire une fois que l utilisateur a cliqué sur un titre de chapitre ou s est connecté via une adresse IP du serveur Web (à la première connexion) : 1) Lorsque 4D détecte une connexion Web, la base à besoin de décrypter le modèle générique afin qu il y ait, soit plusieurs chapitres cibles, soit des chapitres à insérer. Dans ce cas, il doit y avoir soit plusieurs cibles, soit des enregistrements dans la table Chapitres. 2) Fondée sur les paramètrespassés à la méthode " Welcome " à travers l URL, une sélection est créée dans la table Paragraphes. 3) D'après cette sélection, 4D crée de sous titres et de corps de texte cible que d'enregistrements trouvés dans la table Paragraphes. 4) 4D remplace les chaînes cibles par les valeurs des champs. 5) 4D envoie ces données vers le navigateur Web. La séquence est initialisée dans la méthode " Welcome " laquelle est exécutée dans la méthode base "Sur Connexion Web" par le biais d'un 4D ACTION. Voici le code gérant le processus de création et d'envoi décrit ci-dessus : TOUT SELECTIONNER([Modèles]) MyLastVar:=Populate_Gen_Chapters ([Modèles]Modèle) Si (Type($1)=5) `Est ce que cette variable est définie? MyLastVar:=Substitute_chapters (MyLastVar) CHERCHER([Chapitres];[Chapitres]Titre="4D Server") LIEN RETOUR([Chapitres]) MyLastVar:=Populate_Gen_SubChapters (MyLastVar) MyLastVar:=Substitute_SubChapters (MyLastVar) Sinon MyLastVar:=Substitute_chapters (MyLastVar) $1:=Remplacer chaine($1;"/";"") CHERCHER([Paragraphes];[Paragraphes]Titre=$1) MyLastVar:=Populate_Gen_SubChapters (MyLastVar) MyLastVar:=Substitute_SubChapters (MyLastVar) Fin de si TEXTE VERS BLOB(MyLastVar;Myblob;3) ENVOYER BLOB HTML(Myblob;"HTM";8) Cette méthode appelle principalement quatre méthodes différentes : 8 / 14

A-La méthode " Populate_Gen_Chapters " `méthode projet Populate_Gen_Chapters TOUT SELECTIONNER([Chapitres]) $NumRec:=Enregistrements trouves([chapitres]) $i:=1 Boucle ($i;1;($numrec-1)) $0:=Remplacerchaine($1;"<p>Chapter_Target</p>";"<p>Chapter"+Chaine($i) +"_Target</p><p>Chapter_Target</p>") Fin de boucle $0:=Remplacer chaine($0;"<p>chapter_target</p>";"<p>chapter"+chaine($i)+"_target</p>") Elle remplace les chapitres cibles par autant de chaînes cibles que de nombre d enregistrements contenus dans la sélection de la table Chapitres. L idée étant de créer une chaîne texte cible pour chaque chapitre qui a besoin d être inséré. Évidemment, pour indiquer les emplacements des chapitres, une convention d'écriture est nécessaire. Dans notre cas, "Chapter_Target" est remplacé par "Chapter1_Target ChapterN_Target", où N est le nombre ordinal de titre du chapitre. Dans le code HTML, il s agit de remplacer <p>chapter_target</p> par <p>chapter1_target</p><p> </p>chaptern_target</p> Une fois le modèle modifié par la méthode " Populate_Gen_Chapters ", nous obtenons cette page, affichant les deux enregistrements de la table Chapitres : 9 / 14

Comme vous pouvez le constater, seuls les textes cibles sont construits. L étape suivante permet de remplir les titres du chapitre avec les valeurs des enregistrements. Ceci est exécuté par la méthode suivante. B- La méthode " Substitute_chapters" `méthode projet Substitute_chapters TOUT SELECTIONNER([Chapitres]) TRIER([Chapitres]Sequence_ID;>) $NumRec:=Enregistrements trouves([chapitres]) $TempChar:=$1 $i:=1 Boucle ($i;1;($numrec)) SourceString:="Chapter"+Chaine($i)+"_Target" ReplacementString:="<ahref="+Caractere(34)+"http://"+[Modèles]IP_Address+"/4DACTION/Welcom e/" +Remove_Spaces ([Chapitres]Titre)+Caractere(34)+">"+[Chapitres]Titre+"</a>" $TempChar:=Remplacer chaine($tempchar;sourcestring;replacementstring) ENREGISTREMENT SUIVANT([Chapitres]) Fin de boucle $0:=$TempChar Cette méthode remplace chaque chapitre cible par les valeurs correspondantes contenues dans les champs des enregistrements. Ces remplacements sont effectués en utilisant la commande "Remplacer chaîne". En outre, cette méthode crée aussi l URL utilisée pour le lien de chaque objet (indispensables pour les requêtes à la base de données). Un lien caractéristique s écrirait : <a href="http://ip_address/4daction/methodname/parameter>chaptertitle</a>" Rappel : 1) Lorsqu il est utilisé dans une URL, un 4DACTION vous permet d appeler une méthode 4D. Les paramètres doivent être passés après le nom de la méthode, et doivent être séparés par un slash (/). 2) Il faut retenir que lorsque vous utilisez plusieurs paramètres stockés dans la variable $1 "tels quels", ceuxci sont séparés par des slashs (/). Dans l exemple ci-dessous, nous voulons appeler la méthode " Welcome " et passer le nom du chapitre comme paramètre. Faire en sorte que lorsque l utilisateur clique sur le lien d un chapitre spécifique, le paramètre indique à 4D la requête devant être exécutée. Dans la méthode " Substitute_chapters ", la ligne de code créant le lien indispensable est : ReplacementString := "<a href=" + Caractere (34) + "http://" + [Modèle]IP_Address + "/4DACTION/Welcome/" + Remove_Spaces ([Chapitre]Titre) + Caractere (34) + ">" 10 / 14

+ [Chapitre]Titre + "</a>" Vous noterez que les guillemets qui peuvent apparaître dans le code HTML ont été remplacés par "Caractère (34)" pour éviter tout conflit avec la syntaxe du code 4D lui-même. Ceci est une pratique courante lorsque nous manipulons du code HTML. Une fois que la méthode " Substitute_chapters " a été exécutée, le résultat HTML apparaît dans le navigateur comme suit : Les liens sont prêts à être utilisés, mais aucune donnée de sous-chapitre n a encore été adressée. Comme avec les chapitres, le remplacement, la duplication et la substitution des textes cibles sont exécutés en deux étapes. C- La méthode " Populate_Gen_SubChapters" `méthode projet Populate_Gen_SubChapters $TempStr:=$1 $i:=1 $NumRec:=Enregistrements trouves([paragraphes]) Boucle ($i;1;($numrec-1)) SourceString:="<p><b><font size="+caractere(34)+"+3"+caractere(34)+">body1_target</font></b></p><p>body2_target</p>" ReplacementString:="<p><b><font size="+caractere(34)+"+3"+caractere(34)+">body1_target"+chaine($i)+"</font></b></p><p>bod y2_target"+chaine($i)+"</p>" ReplacementStringExt:=ReplacementString+"<p><b><font size="+caractere(34)+"+3"+caractere(34)+">body1_target</font></b></p><p>body2_target</p>" $TempStr:=Remplacer chaine($tempstr;sourcestring;replacementstringext) Fin de boucle ReplacementString:="<p><b><font 11 / 14

size="+caractere(34)+"+3"+caractere(34)+">body1_target"+chaine($i)+"</font></b></p><p>bod y2_target"+chaine($i)+"</p>" $0:=Remplacer chaine($tempstr;sourcestring;replacementstring) Cette méthode est assez semblable, dans le principe, à la méthode " Populate_Gen_Chapters ". Elle crée des noms cibles génériques pour les sous-chapitres. Une fois appliquée au modèle, cette méthode nous fait apparaître cette page dans le navigateur : Comme vous pouvez le voir, nous avons créé un texte cible générique qui sera utilisé pour le remplacement final des données. A gauche se trouvent les liens existants non modifiés. D- La méthode " Substitute_SubChapters" `méthode projet Substitute_SubChapters $TempStr:=$1 $NumRec:=Enregistrements trouves([paragraphes]) TRIER([Paragraphes]Sequence_ID;>) Boucle ($i;1;$numrec) SourceString:="Body1_target"+Chaine($i) ReplacementString:=[Paragraphes]Sous_Titre $TempStr:=Remplacer chaine($tempstr;sourcestring;replacementstring) SourceString:="Body2_target"+Chaine($i) ReplacementString:=Strip_CRs ([Paragraphes]Description) $TempStr:=Remplacer chaine($tempstr;sourcestring;replacementstring) ENREGISTREMENT SUIVANT([Paragraphes]) Fin de boucle 12 / 14

$0:=$TempStr Cette méthode exécute la dernière étape de la création du code HTML. Elle remplace le texte cible par les données venant de la sélection courante dans la table Paragraphes. Le seul problème spécifique étant le remplacement du retour chariot dans la balise "end of paragraph" et (</p>). Ces retours chariots sont stockés dans le champ texte [Paragraphes]Description. Ils ont besoin d être remplacés par une balise afin que le code HTML interprète ces balises comme un retour chariot (caractere(13)). Ce traitement est exécuté par la méthode " Strip_Crs ". `méthode projet Strip_CRs $0:=Remplacer chaine($1;caractere(13);"</p><p>") Une fois la méthode exécutée, la variable texte (MyLastVar) est prête à être stockée dans un blob et envoyée vers le navigateur. Note : pour stocker cette variable, nous utilisons la commande TEXTE VERS BLOB. Ne Pas utiliser la commande VARIABLE VERS BLOB, utilisée pour les variables qui sont stockées dans des champs/variables BLOB. Finalement, lorsque la dernière commande est exécutée, le navigateur affiche une page complète : 13 / 14

Résumé 14 / 14