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

  1. #1
    Membre régulier
    Homme Profil pro
    Gérant
    Inscrit en
    Septembre 2007
    Messages
    121
    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 : 121
    Points : 105
    Points
    105
    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 émérite
    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 : 60
    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
    Points : 2 535
    Points
    2 535
    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 régulier
    Homme Profil pro
    Gérant
    Inscrit en
    Septembre 2007
    Messages
    121
    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 : 121
    Points : 105
    Points
    105
    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 régulier
    Homme Profil pro
    Gérant
    Inscrit en
    Septembre 2007
    Messages
    121
    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 : 121
    Points : 105
    Points
    105
    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 émérite
    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 : 60
    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
    Points : 2 535
    Points
    2 535
    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 éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 105
    Points : 9 602
    Points
    9 602
    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 ;-)

  7. #7
    Membre régulier
    Homme Profil pro
    Gérant
    Inscrit en
    Septembre 2007
    Messages
    121
    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 : 121
    Points : 105
    Points
    105
    Par défaut
    Bonjour Ami Calmant,

    Effectivement tu dis des bêtises ^^
    Nan, en tout cas pour la version 14 de Windev,

    J'avais déjà effectué le test mais sans succès et maintenant que tout fonctionne, j'ai réitéré le test et toujours sans succès.
    Que se soit en lecture ou en écriture.
    J'avais vu sur un forum que le code binaire de Windev et le code binaire de MySql n'était pas le même ou quelque chose du genre.. Bref il y avait une explication pour résoudre se problème mais je n'avais pu comprendre la manière dont on devait s'y prendre. Si je retrouve ce poste je le mettrais en lien.

    Bref, Merci à tous les deux pour votre aide,
    Je passe se poste en Résolu mais si je trouve une solution ultérieure, je ne manquerais pas de l'écrire pour nos futurs lecteurs.

    Amis codeurs,

  8. #8
    Membre régulier
    Homme Profil pro
    Gérant
    Inscrit en
    Septembre 2007
    Messages
    121
    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 : 121
    Points : 105
    Points
    105
    Par défaut
    A partir de la Version 15 :
    http://doc.pcsoft.fr/fr-FR/?1000019656

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 105
    Points : 9 602
    Points
    9 602
    Par défaut
    hello,

    heu je comprends pas pourquoi ça ne marche pas en windev 14 car je viens d'essayer en windev 12 et ce que j'ai expliqué plus haut marche toujours chez moi. Dis moi exactement ce que tu essaies ? As tu installé l'accès natif mysql ?

    Ami calmant, J.P ;-)

  10. #10
    Membre régulier
    Homme Profil pro
    Gérant
    Inscrit en
    Septembre 2007
    Messages
    121
    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 : 121
    Points : 105
    Points
    105
    Par défaut
    : o
    Avec toutes mes excuses alors...
    Voici mon code qui correspond à ton code.
    Pourrais je savoir ce que tu as inscrit dans ton annalyse windev ?
    Pour ma part je suis en son,image,binaire / image (memo binaire)
    Pour l'acces Natif, oui je l'ais bien installé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    bdtp01.BdTpIm01 = ScTp01.Img01
    HAjoute(bdtp01)
    =
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    matable.photo = img_photo
    HModifie(matable)
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListeAjoute(Box01,bdtp01.BDTpNo01,bdtp01.BdTpIm01)
    =
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListeAjoute(ListeImage1,"elemx",matable.photo)
    Le bdtp01.BDTpNo01 correspond au nom de l'image.
    Personnellement, je ne vois pas ce qu'il peut clocher hormi les paramètres d'analyses.
    Car ni en écriture, ni en lecture, cette méthode ne fonctionne chez moi.

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 105
    Points : 9 602
    Points
    9 602
    Par défaut
    hello,

    chez moi img_photo correspond à un champ Image et chez toi à quoi correspond ScTp01.Img01 (que représente ScTp01 ?)
    Mon analyse :
    3 rubriques :
    id -> id automatique -> int auto increment primary
    nom -> texte 50 caractères -> varchar 50
    photo -> son,image,binaire -> blob binary

    mysql 5.5.9

    dans ma fenêtre j'ai aussi un champ Table avec en source en accès direct la table de ma base de données mysql (matable).


    Ami calmant, J.P

  12. #12
    Membre régulier
    Homme Profil pro
    Gérant
    Inscrit en
    Septembre 2007
    Messages
    121
    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 : 121
    Points : 105
    Points
    105
    Par défaut
    Bonjour Jurassic et merci pour ta patience quand à mon micro-poblème,

    ScTp01.Img01
    ScTp01 correspond à un superchamp qui contient img01
    Img01 est un champ image invisible servant en réalité à prendre une sorte de screan shot.

    bdtp01.BdTpIm01 est la rubrique MySql en mode BLOB et son, image, video
    Server: MySQL / Version: 5.5.14

    Lorsque je crée une table en accès direct, cela fonctionne.
    Lorsque je crée un liste image en accès direct, cela fonctionne.

    Je crois donc que je vais utiliser la liste image pour le moment car le caroussel ne peut être mis en accès direct. J'y reviendrais lorsque je maitriserais cet aspect de Windev.

+ 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, 17h05
  2. uploader une image sur le serveur
    Par kespy13 dans le forum Langage
    Réponses: 5
    Dernier message: 07/04/2006, 21h01
  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, 12h42
  4. Réponses: 3
    Dernier message: 21/10/2005, 10h54
  5. Enregistrement d'une image sur le serveur
    Par MHI dans le forum Langage
    Réponses: 3
    Dernier message: 07/04/2005, 16h25

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