Comment
localiser ces images en dehors du répertoire Web ? E. Roumegou |
Je voulais utiliser et partager un répertoire d'images d'un catalogue
produits (image jpeg au format vignette et zoom). Très vite, j'ai constaté
que pour afficher ces images, il fallait que ces dernières se trouvent
dans le répertoire web du projet WebDev, à savoir monprojet_WEB.
Pa vraiment acceptable comme contraintes. Tout d'abord, ces images me servent
sur d'autres applications Clients/Serveur développées en WinDev
7.5 et je veux qu'elles soient utilisées par des sites développés
en PHP ou tout autre technologie. De plus, je ne vais pas à chaque nouveaux
sites WebDev qui utilise ce catalogue produit multiplier ces images.
Donc, je voulais absolument exploiter Une et une seule version de ces images.
Facile, normalement ? Que nenni !!!
Alors comme je ne suis pas mesquin, je vais vous éviter toutes mes galères.
Je tiens à remercier ici Gilles Balp qui m'a apporté
la majeure partie des solutions.
Tout d'abord, vous devez partager votre répertoire image. Pour cela,
vous allez créer un alias, de la mème façon que WebDev
en crée un pour votre répertoire Web.
Je travaille avec Apache 2.0; cela revient donc à modifier le fichier
httpd.conf qui se trouve généralement dans
C:\Program Files\Apache Group\Apache2\conf et rajouter une ligne de ce type
:
Alias /SERVIMAGE/ "C:/VotreRep/Image/"
Si vous tapez depuis un navigateur http://monip/SERVIMAGE/monimage.jpg vous
devez visualiser votre image.
(bien sûr monip est votre adresse IP fixe de votre serveur Web ou le nom
de votre domaine.)
Notre page permet d'afficher la fiche produit avec une image. On utilisera la vignette en mode zoom que l'on retrouvera sous la dénomination LARGE_nn.jpg; nn étant l'Id du produit. |
![]() |
![]() |
Pour décrire l'image, ce qu'il est important de préciser : - choisir statique, car ce sera une image gérée en code navigateur. - décocher Localiser image dans le répertoire _Web |
![]() |
Déclarer une variable Globale à la page. C'est elle qui contiendra l'adresse de votre image |
Initialisation de FicheGift (serveur) |
CHEM_IMG est chaîne URL=CHEM_IMG+GIF_ID+".jpg" |
WL Chargement (onload) de FicheGift (navigateur) |
Image1=URL
Plus compliqué maintenant car il n'y a pas de codes navigateur avec
le chargement d'une ligne d'une ZR. |
![]() |
dans votre ZR, en lieu et place d'un champs Image, vous allez créer un champs HTML que l'on appelera HTML_IMAGE et rattachez lui un attribut de type valeur. (ZImgHTML)
En initialisation de la page, vous pouvez allez rechercher votre chemin d'accès
et voici maintenant le code de chargement de la zone répétée.
Rmq : j'utilise une base mySQL et les classes d'accès alternatifs. Vous
n'aurez qu'à adapter à d'autre types de lectures (fichiers HF)
ou bases de données.
FONCTION Load_ZR(pCde) MaZoneRep est chaîne="ZRGift" retCode est un booléen commande est chaîne CHEM_IMG est chaîne commande=pCde Numcol,pI,nbrech est un entier lCurReq est un entier wGIF_ID est un entier PresentePts est chaîne="<div align=""center""><font color=""#FF0000"">%1<br>%2 </font></div>" wcode est chaîne="<a href=""javascript:_PAGE_."+ZRGift..Alias+".value = '%3';_PAGE_."+ZRGift..Alias+".value = '%3';_JSL(_PAGE_,'"+zGIF_DESC_FR..Alias+"','_self','','')"">"+... "<img src=""%1"" alt=""%2"" width=""65"" height=""49"" border=""0""> </a>" lCurReq=1 CHEM_IMG=Rtv_Para("IMAGE","CHEM_IMGW")+"SMALL_" //CHEM_IMG="CRM4US/SMALL_" retCode=fSQL:mySQLExec(commande,lCurReq) IF retCode THEN ZoneRépétéeSupprimeTout(MaZoneRep) //Vide la table mémoire fSQL:mySQLPremier(lCurReq) TANTQUE PAS fSQL:mySQLEnDehors ZoneRépétéeAjoute(MaZoneRep) pI=ZoneRépétéeOccurrence(MaZoneRep) Numcol=0 Numcol++;GDE_ID[pI]=fSQL:mySQLCol(lCurReq,Numcol) Numcol++;wGIF_ID=fSQL:mySQLCol(lCurReq,Numcol) Numcol++;GIF_DESC_FR[pI]=fSQL:mySQLCol(lCurReq,Numcol) Numcol++;GIF_COMM_FR[pI]=fSQL:mySQLColLong(lCurReq,Numcol) Numcol++;GDE_REFEXT[pI]=fSQL:mySQLCol(lCurReq,Numcol) Numcol++;GDE_VALPTS[pI]=ChaîneConstruit(PresentePts,fSQL:mySQLCol(lCurReq,Numcol),gOPE_LIBPTS) url=CHEM_IMG+wGIF_ID+".jpg" ZImgHTML[pI]=ChaîneConstruit(wcode,CHEM_IMG+wGIF_ID+".jpg",... "Voir en détail : "+GIF_DESC_FR[pI]+" Ref :"+GDE_REFEXT[pI],... pI) fSQL:mySQLSuivant(lCurReq) FIN //TANTQUE pas fSQL:mySQLEnDehors END CAS nbrech=1 CAS nbrech>1 RENVOYER Vrai |
en rouge, les éléments du code importants pour le cas qui nous interresse.
Dans wcode, on retrouve le code HTML, où l'on subtituera les paramètres
%1, %2, %3 avec nos données variables de la ZR.
Comme je voulais gérer un lien sur l'image (pour afficher la fiche),
j'ai analysé le code produit par le lien texte javascript:_PAGE_.A12.
etc ...et rajouté celui ci en lien sur l'image avec des balises <a
href et </a>.
Pour améliorer la chose et la rendre plus souple à vos diverses modifications, vous pouvez à la place des A12, A13 les remplacer par les alias de la Zone Répétée ZRGift..Alias ou les alias des liens.zGIF_DESC_FR..Alias
Voilà le tour est joué et vos images peuvent être maintenant
à n'importe quel endroit accessible de vos serveurs, voire sur un autre
site distant.