vendredi, août 25, 2006

Comment afficher une image provenant d'un champ Blob MySQL ?

NB : Tests effectués avec la version 60t de WebDev, PHP 4 et MySQL 5.0.24 (et MySQL 5.0.18)

Utilisation exclusives des ordres "H*"


Soit la table MySQL suivante :

CREATE TABLE `blobmysql` (
`IDBlobMysql` int(11) NOT NULL auto_increment,
`Titre` varchar(50) default NULL,
`pImage` longblob,
PRIMARY KEY (`IDBlobMysql`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;


Dans un page WebDev PHP, ajouter un champ image. Dans le descriptif de celui-ci, définir le type "Dynamique".
Ajouter un bouton et insérer le code suivant :
HLitPremier(BlobMysql)
SI PAS HExtraitMémo(BlobMysql,pImage,"test.gif") ALORS Trace("pas extrait")
IMG_Image2 = "test.gif"

Voilà l'image s'affiche dans le champ image.

PS: Pour ajouter par programmation une image dans un BLOB

CHEMIN_IMAGE est une chaîne = "X:\Mes Sites\warning.gif"

BlobMysql.Titre = "icone warning"
SI PAS HAttacheMémo(BlobMysql,"pImage",CHEMIN_IMAGE,hMémoImg) ALORS
Trace("Erreur ajout")
SINON
HAjoute(BlobMysql)
FIN


Dans une Zone répétée mémoire :

Pour l'afficher dans une Zone répétée mémoire, même principe. Il faut surtout ne pas oublier de mettre le type dynamique dans la description de l'image. Dans le code d'initialisation de la ZR on peut mettre le code suivant :
NomFic est une chaîne
i est un entier = 0

HLitPremier(BlobMysql)
TANTQUE PAS HEnDehors()
i++
Nomfic = "$$Test"+i
HExtraitMémo(BlobMysql,pImage,Nomfic)
ZoneRépétéeAjouteLigne(ZR_BlobMysql,BlobMysql.Titre,nomfic)
HLitSuivant(BlobMysql)
FIN


















Dans une Zone répétée Fichier :

Pour l'afficher dans une Zone répétée Fichier. Encore plus simple suivre l'assistant lors de la création de la Zone répétée. Une fois créée modifier le descriptif de l'image de la ZR. Mettre sur le Type : "Depuis une base de données".



6 commentaires:

Anonyme a dit…

Le flux RSS est cassé :(

Anonyme a dit…

merci pour ce tuto!! gagné plusieurs jours de boulot grâce à toi!!!

Anonyme a dit…

Bonjour

J'ai recopié ce bout de code et j'ai l'erreur suivante:

La rubrique pImage du fichier BlobMysql n'est pas une rubrique mémo binaire.

Que faire????
================

progwdm a dit…

vérifie que la rubrique définie dans mysql est bien en longblob, si c'est pas le cas modifie la avec phpmyadmin

Anonyme a dit…

Je comprend pas comment faire le bouton avec le code....il faut faire sa dans du php? et tu peut mettre des commentaire s'il te plaît, parce que je comprend pas tout...

merci beaucoup...

progwdm a dit…

la création d'un bouton s'effectue depuis l'éditeur de page (deuxième barre d'outil). On accède au code en selectionnant le bouton et en appuyant sur la touche F2. Puis dans le code clic (Serveur) mettre le code proposé.