WinDev Mobile et MySQL Stocker les images dans la Base de données

AUTEUR Code-Codage ~ 21/07/2022
Programmation WINDEV Mobile Débutant

Je vous propose de découvrir dans ce nouveau Tutoriels (Chasse aux bugs) comment Stocker les images dans la Base de données, en d'autres terme le sauvegardé, dans cette vidéo nous allons corrigé les erreurs de notre application d'e-commerce et nous allons commencé par les erreurs des images

Abonne toi ? https://www.youtube.com/channel/UC46u_O-UerkzuSHHrR7zQCw 

Buffer : https://doc.pcsoft.fr/?1514042&name=type_buffer_type_variable

Vous pouvez aussi utiliser la fonction Crypte pour crypter les images et stocker dans la base de données

Exemple d'utilisation avec la fonction Crypte

BufferImage est une Buffer

//A placer dans le constructeur
BufferImage = dSauveImageJPEG(ImageP,enMémoire)
NomImage = Crypte(BufferImage,"dc")

Pour charger l'image et l'afficher 

ImageProduit est un Buffer
Img est Image

ImageProduit = Decrypte(mySQLLitColParNom(1, "IMAGE"),"dc")
Img = dChargeImage(ImageProduit)

Classe Commande

ClassCommande est une Classe

hérite DBconnect

PRIVATE
ClientId est une entier
ClientNom, ClientEmail, ClientAdresse, ClientContact sont des chaînes

ProduitId, ProduitQuantite sont des entiers
ProduitNom, ProduitPrix, ProduitImage, TotalSomme sont des chaînes

//Variable Buffer
BufferImage est une Buffer


FIN

PROCÉDURE Constructeur(IdClient, NomClient, EmailClient, AdresseClient, ContactClient, IdProduit, NomProduit, QuantiteProduit, PrixProduit, ImageProduit, SommeTotal)

//Client

ClientId = IdClient
ClientNom = NomClient
ClientEmail = EmailClient
ClientAdresse = AdresseClient
ClientContact = ContactClient

//Produit
ProduitId = IdProduit
ProduitNom = NomProduit
ProduitQuantite = QuantiteProduit
ProduitPrix = PrixProduit

//Encoder l'image en base 64
BufferImage = dSauveImageJPEG(ImageProduit,enMémoire)
ProduitImage = Encode(BufferImage,encodeBASE64)


TotalSomme = SommeTotal

PROCÉDURE Commander()

SQLRequete = "INSERT INTO commande SET IDCLIENT = '" + ClientId + "', NOMCLIENT = '"...
+ ClientNom + "', ADRESSE = '" + ClientAdresse + "', EMAIL = '" + ClientEmail + "', TELEPHONE = '"...
+ ClientContact + "', IDPRODUIT = '" + ProduitId + "', NOMPRODUIT = '" + ProduitNom + "', PRIX = '"...
+ ProduitPrix + "', QUANTITE = '" + ProduitQuantite + "', IMAGE = '" + ProduitImage + "', TOTAL = '" + TotalSomme + "'"

SI mySQLExec(SQLRequete, 1) ALORS
Info("Votre commande est effectué")
FIN

Classe RecupProduit

ClassRecupProduit est une Classe

hérite DBconnect

PUBLIC
ReqRcupProduit est une chaîne
ExecuReq est un entier

ImageProduit est une Buffer

FIN

PROCÉDURE ListeProduit()

ReqRcupProduit = "SELECT * FROM produits ORDER BY ID DESC"

ExecuReq = mySQLExec(ReqRcupProduit, 1)

ZoneRépétéeSupprimeTout(ClientProduit.ZoneClientProduit)

TANTQUE mySQLFetch(1)
ImageProduit = Décode(mySQLLitColParNom(1, "IMAGE"),encodeBASE64)

ZoneRépétéeAjouteLigne(ClientProduit.ZoneClientProduit, ImageProduit, mySQLLitColParNom(1, "NOM"), mySQLLitColParNom(1, "PRIX"), mySQLLitColParNom(1, "ID"))
ZoneRépétéeAffiche(ClientProduit.ZoneClientProduit, taDébut)
FIN

Classe sélection produit

ClassSelectionProduit est une Classe

hérite DBconnect

PUBLIC
nomp, prixp, datep sont des chaînes
imageProduit est un Buffer
reqRecherche est une chaîne

GLOBAL
idp est un entier

FIN

PROCÉDURE ProduitChoisi(numProduit)

reqRecherche = "SELECT * FROM produits WHERE ID = '" + numProduit + "'"
mySQLExec(reqRecherche, 1)

mySQLGetNumRows(1)

SI mySQLFetch(1) ALORS
nomp = mySQLLitColParNom(1,"NOM")
prixp = mySQLLitColParNom(1, "PRIX")
datep = mySQLLitColParNom(1, "DATEPUB")
imageProduit = Décode(mySQLLitColParNom(1, "IMAGE"),encodeBASE64)
idp = mySQLLitColParNom(1, "ID")
FIN

Classe commande effectué

CommendeEffectue est une Classe

hérite DBconnect

PUBLIC
ImageProduit est une Buffer

FIN

PROCÉDURE CommandeListe()

SQLRequete = "SELECT * FROM commande ORDER BY IDCOMMANDE DESC"
mySQLExec(SQLRequete, 1)

ZoneRépétéeSupprimeTout(Commande.ZoneCommande)
TANTQUE mySQLFetch(1)
ImageProduit = Décode(mySQLLitColParNom(1, "IMAGE"),encodeBASE64)
ZoneRépétéeAjouteLigne(Commande.ZoneCommande, mySQLLitColParNom(1, "NOMCLIENT"), mySQLLitColParNom(1, "EMAIL"), mySQLLitColParNom(1, "TELEPHONE"), mySQLLitColParNom(1, "ADRESSE"), ImageProduit, mySQLLitColParNom(1, "NOMPRODUIT"), mySQLLitColParNom(1, "PRIX"), mySQLLitColParNom(1, "QUANTITE"), mySQLLitColParNom(1, "TOTAL"))
ZoneRépétéeAffiche(Commande.ZoneCommande, taDébut)
FIN

Classe modification Produit

ModificationProduit est une Classe

hérite DBconnect

PUBLIC
nomProduit est une chaîne
PrixProduit est une chaîne
DatePub est une chaîne
NomImage est une chaîne
IdProduit est un entier

reqModifier est une chaîne

//Variable Buffer
BufferImage est une Buffer


FIN

PROCÉDURE Constructeur(ModifNom, ModifPrix, ModifDate, ModifImage, idP)

nomProduit = SansCaractère(ModifNom,"?!*~~[]<>")
PrixProduit = SansCaractère(ModifPrix,"?!*~~[]<>")
DatePub = ModifDate

BufferImage = dSauveImageJPEG(ModifImage,enMémoire)
NomImage = Encode(BufferImage,encodeBASE64)


IdProduit = idP


PROCÉDURE ModifierPoduit()

reqModifier = "UPDATE produits SET NOM = '" + nomProduit + "', PRIX = '" + PrixProduit + "', DATEPUB = '" + DatePub + "', IMAGE = '" + NomImage + "' WHERE ID = '" + IdProduit + "'"
mySQLExec(reqModifier, 1)

Classe nouveau Produit

NouveauProduit est une Classe

hérite DBconnect

PUBLIC
NomProduit est une chaîne
PrixProduit est une chaîne
DatePub est une chaîne
NomImage est une chaîne

ReqNouveauProduit est une chaîne

//Variable Buffer
BufferImage est une Buffer


FIN

PROCÉDURE Constructeur(NomP, PrixP, DateP, ImageP)

NomProduit = SansCaractère(NomP,"?!*~~[]<>")
PrixProduit = SansCaractère(PrixP,"?!*~~[]<>")
DatePub = DateP

BufferImage = dSauveImageJPEG(ImageP,enMémoire)
NomImage = Encode(BufferImage,encodeBASE64)

PROCÉDURE AjoutProduit()

ReqNouveauProduit = "INSERT INTO produits SET NOM = '" + NomProduit + "', PRIX = '" + PrixProduit + "', DATEPUB = '" + DatePub + "', IMAGE = '" + NomImage + "'"
//exécution de la requête

mySQLExec(ReqNouveauProduit,1)

Info("Produit ajouté")

Classe recupProduitModifier

recupProduitModifier est une Classe

hérite DBconnect

PUBLIC
nomp, prixp, datep, imageProduit sont des chaînes
reqRecherche est une chaîne

GLOBAL
idp est un entier

FIN

PROCÉDURE ProduitPrepare(numProduit)

reqRecherche = "SELECT * FROM produits WHERE ID = '" + numProduit + "'"
mySQLExec(reqRecherche, 1)

mySQLGetNumRows(1)

SI mySQLFetch(1) ALORS
nomp = mySQLLitColParNom(1,"NOM")
prixp = mySQLLitColParNom(1, "PRIX")
datep = mySQLLitColParNom(1, "DATEPUB")
imageProduit = Décode(mySQLLitColParNom(1, "IMAGE"),encodeBASE64)
idp = mySQLLitColParNom(1, "ID")
FIN

Classe RecupToutProduit

RecupToutProduit est une Classe

hérite DBconnect

PUBLIC
ReqRcupProduit est une chaîne
ExecuReq est un entier

ImageProduit est une Buffer

FIN

PROCÉDURE ListeProduit()

ReqRcupProduit = "SELECT * FROM produits ORDER BY ID DESC"

ExecuReq = mySQLExec(ReqRcupProduit, 1)

ZoneRépétéeSupprimeTout(adminListProduit.ZoneProduits)

TANTQUE mySQLFetch(1)
ImageProduit = Décode(mySQLLitColParNom(1, "IMAGE"),encodeBASE64)

ZoneRépétéeAjouteLigne(adminListProduit.ZoneProduits, ImageProduit, mySQLLitColParNom(1, "NOM"), mySQLLitColParNom(1, "PRIX"), mySQLLitColParNom(1, "DATEPUB"), mySQLLitColParNom(1, "ID"))
ZoneRépétéeAffiche(adminListProduit.ZoneProduits, taDébut)
FIN


Réponses