IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

enregistrer une image sur un serveur MySql [WD14E]


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Gérant
    Inscrit en
    Septembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Gérant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2007
    Messages : 123
    Par défaut enregistrer une image sur un serveur MySql
    Bonjour,

    Après des jours de recherches, sur notre copain Google, j'ai trouvé quelques infos mais disons... contradictoire et surtout, je pense que certaines sont d'un niveau supérieur au mien, autant dire que je ne comprend pas.

    Voici mon problème... assez simple à expliquer :
    Je souhaite enregistrer une image en format ... n'importe, sur un serveur MySql (utilisant WorkBench), Je sais que le mieux est d'enregistrer que le lien de l'image sur le serveur MySql, mais... ce n'est pas ce que je souhaite dans ce code car l'image ce doit d'être enregistrée dans la base MySql.

    J'ai tenté à minte et minte reprise de créer une colonne Blob, texte, de changer les sous types dans l'analyse windev... puis d'insérer les codes suivants, mais rien n'y fait, mon image n'est pas créée :
    En vert, le tableau MySql
    En bleu, la rubrique MySql ou l'image est stockée.
    Moimême, est un caroussel, qui doit utiliser l'image stockée.
    En //, les essais que je fais, mais infructueux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    HDésactiveFiltre(bdtp01)
    HLitPremier(bdtp01)
    TANTQUE HTrouve(bdtp01)
    	ListeAjoute(MoiMême,bdtp01.BDTpNo01,bdtp01.BdTpIm01)
    	//HExtraitMémo(bdtp01,BdTpIm01,MoiMême)
    	//{WDMemoBinaire(bdtp01.BdTpIm01)}
    	HLitSuivant(bdtp01)
    FIN
    Coté enregistrement :
    Le dSauvegardeImage, fonctionns, car je retrouve bien l'image créée sur mon disque dûre. Je peux donc en déduire que le ScTp01.Img01 fonctionne aussi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //HAttacheMémo(bdtp01,BdTpIm01,Img01)
    bdtp01.BdTpIm01 = ScTp01.Img01
    dSauveImageJPEG(ScTp01.Img01, "C:\Documents and Settings\Image.JPEG")
    Coté serveur VPS MySql :
    Je suis bien connecté ^^
    La transmission d'info se crée sans problème sur l'ensemble de mon projet.
    Cependant je ne suis pas sûre d'avoir l'image belle et bien enregistrée dans la rubrique.
    Par fois j'ai une note BLOB dans ma rubrique, (mais j'ai lu sur un forum, qu'il ne s'agissait pas de l'image mais simplement du lien enregistré,)
    D'autres fois j'ai du vide dans ma rubrique, d'autres fois une valeur NULL.
    Je vous met en lien le screan de ma table, les lignes représentent de multiples essais et les BdTpIm01,02,03 et 04 sont en réalité la même rubrique, je les aient multiplées pour multiplier mes essais afin de trouver la bonne formule.



    En éspérant avoir été suffisement claire et ayant donné suffisement d'information,
    Je vous remercie pour m'avoir lu,
    Images attachées Images attachées  

  2. #2
    Membre Expert
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Par défaut
    Bonsoir,

    Je viens de faire un essai avec l'accès natif MySQL en v16. La table à cette structure et à été créée par Windev directement par HCréationSiInexistant (apèrs description de la table dnas l'analyse bien sûr !).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE IF NOT EXISTS `testimage` (
      `IDTestImage` int(11) NOT NULL AUTO_INCREMENT,
      `Nom` varchar(50) DEFAULT NULL,
      `Image` longblob,
      PRIMARY KEY (`IDTestImage`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3
    Pour que Windev me crée cette table, j'ai déclaré un fichier avec un champ de type "son, image, binaire"

    Pour créer un enregistrement dans cette table, j'effectue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TestImage.Nom = "test"
    HAttacheMémo(TestImage, Image, "e:\temp\monimage.jpg", hMémoImg)
    HAjoute(TestImage)
    Au niveau de MySQL (je passe par phpmyadmin), je vois bien un enregistrement avec un champ blob de la taille (en ko) de mon image, ce n'est donc pas un lien, mais l'image réellement stocké.

  3. #3
    Membre confirmé
    Homme Profil pro
    Gérant
    Inscrit en
    Septembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Gérant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2007
    Messages : 123
    Par défaut
    Ok Delphi,

    Je te remerci pour ces infos,
    Je vais regarder tout ceci demain matin,
    Je te tiens informé.

    Bonne nuit,

  4. #4
    Membre confirmé
    Homme Profil pro
    Gérant
    Inscrit en
    Septembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Gérant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2007
    Messages : 123
    Par défaut
    Très bien, cela fonctionne :

    Cependant il me reste toujours une intérogation, serait il possible d'enregistrer l'image sur la BDD sans avoir à l'enregistrer temlporairement sur le disque ?

    Mettre la rubrique sur "son,image,video" dans le sous type de l'analyse Windev,

    A l'enregistrement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dSauveImageJPEG(ScTp01.Img01, "C:\Documents and Settings\Image.JPEG")
    HAttacheMémo(bdtp01,BdTpIm01,"C:\Documents and Settings\Image.JPEG",hMémoImg)
    puis à l'ouverture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	HExtraitMémo(bdtp01,BdTpIm01,"C:\Documents and Settings\ImageExtrait.JPEG")
    	ListeAjoute(Box01,bdtp01.BDTpNo01,"C:\Documents and Settings\ImageExtrait.JPEG")
    Merci Delphi,

  5. #5
    Membre Expert
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Par défaut
    A la lecture, il est possible d'afficher l'image dans un champ sur un formulaire, champs qui est lié au champ de la table. A l'écriture l'opération doit être possible aussi, c'est à dire charger l'image dans le champ sans passer par le fichier intermédiaire.

    Après, il faudrait peut être donné plus d'informations sur l'origine de l'image pour savoir comment la traiter.

  6. #6
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 226
    Par défaut
    bonjour,

    pour ne pas passer par un fichier temporaire, tu peux utiliser un champ image (invisible ou pas) :
    et pour la lecture dans une liste image tu peux utiliser directement la rubrique de la base de données.
    exemple : j'ai une table mysql (matable) qui contient 3 rubriques : id primary auto increment, nom varchar de 50, photo blob.
    pour écrire dans la rubrique photo ce qui est affichée dans un champ image (img_photo) je peux faire (en considérant que l'enregistrement à modifier est sélectionné) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    matable.photo = img_photo
    HModifie(matable)
    cela remplace le HattacheMemo.

    et pour lire la photo dans une listeimage (en considérant que l'enregistrement à lire est sélectionné) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ListeAjoute(ListeImage1,"elemx",matable.photo)
    j'espère ne pas avoir raconté de bêtises

    Ami calmant, J.P ;-)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Enregistrer une image sur un serveur
    Par leyeno dans le forum Flex
    Réponses: 2
    Dernier message: 01/06/2010, 16h05
  2. uploader une image sur le serveur
    Par kespy13 dans le forum Langage
    Réponses: 5
    Dernier message: 07/04/2006, 20h01
  3. [Image]Stockage d'une image sur un serveur
    Par zoby43 dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 23/03/2006, 11h42
  4. Réponses: 3
    Dernier message: 21/10/2005, 09h54
  5. Enregistrement d'une image sur le serveur
    Par MHI dans le forum Langage
    Réponses: 3
    Dernier message: 07/04/2005, 15h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo