PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV 2024 → Lire un mémo webdev en dehors de webdev (via PHP et ODBC)
Lire un mémo webdev en dehors de webdev (via PHP et ODBC)
Débuté par Eka, 08 juil. 2021 18:07 - 10 réponses
Posté le 08 juillet 2021 - 18:07
Bonjour !

Je suis un peu embêtée, nous avons un programme local réalisé avec webdev, mais pour la version en ligne nous avons opté pour un site traditionnel sans webdev. Par contre, l'idée est d'utiliser les bases de données hfsql locale des clients.

Le soucis c'est que certains champs de la base de données que j'essaye de récupérer sont en fait des mémos.

Est-ce qu'il y a une façon de les récupérer en dehors de webdev avec php et une passerelle ODBC ?

Merci d'avance, bonne journée.
Posté le 09 juillet 2021 - 08:29
Bonjour !

Je suis un peu embêtée, nous avons un programme local réalisé avec webdev,
mais pour la version en ligne nous avons opté pour un site traditionnel sans
webdev. Par contre, l'idée est d'utiliser les bases de données hfsql locale
des clients.

Le soucis c'est que certains champs de la base de données que j'essaye de
récupérer sont en fait des mémos.

Est-ce qu'il y a une façon de les récupérer en dehors de webdev avec php et
une passerelle ODBC ?

Merci d'avance, bonne journée.


Bonjour
Développer un webservice (avec webdev) semble la façon la plus simple

--
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Posté le 09 juillet 2021 - 09:45
Non justement, le site est déjà fait. Et l'application webdev reste aussi. Mais il me manque quelques fonctionnalité du programme qui sont faites avec des mémos.

Et personnellement je trouve le responsive de webdev très limité. (Ainsi que la personnalisation de certains composants.)
Et donc ma question reste : Comment récupérer le contenu des champs mémo qui se trouve sur la base de données grâce à php via une passerelle ODBC?
Posté le 09 juillet 2021 - 10:59
Non justement, le site est déjà fait. Et l'application webdev reste aussi.
Mais il me manque quelques fonctionnalité du programme qui sont faites avec
des mémos.

Et personnellement je trouve le responsive de webdev très limité. (Ainsi que
la personnalisation de certains composants.) Et donc ma question reste :
Comment récupérer le contenu des champs mémo qui se trouve sur la base de
données grâce à php via une passerelle ODBC?


et donc ma réponse reste : développer un webservice

un projet webdev qui reçoit des requetes, renvoie les résultats en json
en REST pour être consommé par des applis, des sites en ce que tu veux,
etc ...

c'est comme cela que tout le monde fait

sinon tu as une solution php4wd qui peut peut être aussi convenir, je
te laisse regarder sur google. (mias peut être est ce plus pour accéder
à une base depuis des dev pcsoft ?)

non le plus simple est un webservice rest

--
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Posté le 09 juillet 2021 - 14:33
Mais à aucun moment vous ne répondez à ma question. Donc j'entends bien que vous proposez d'autres solutions, mais je n'en demande pas. C'est soit une solution à mon problème (hors webdev!), soit on se passera des contenus des champs mémo. Mais je ne ferai pas le site web avec webdev.

A en croire votre raisonnement, heureusement que je n'ai pas demandé la recette de la sauce bolognaise, vous m'auriez dit que le plus simple restait encore de commander une pizza.

Donc je vais gentiment attendre de voir si quelqu'un a vraiment la solution.

Merci beaucoup et bonne journée :)
Posté le 09 juillet 2021 - 14:55
d'abord PERSONNE n'a dit qu'il fallait faire le site avec webdev....

Le mosieur a dit que la meilleure méthode pour accéder à des données d'une base externe est de passer par un webservice (fait en webdev pour facilité, c'est à dire avec UNE page de type awp)...

Et il a raison... Que ce soit pour des raisons de sécurité, d'évolution ou de facilité...

Ceci dit, pour revenir à la question initiale... Un champ mémo est just un blob (texte ou binaire). Il est donc accessible avec tous les autres champs du même enregistrement. Il n'y a normalement RIEN de spécial à faire. On lit l'enreg, et le champ mémo est la avec les autres.

Si ce n'est pas le cas, il va falloir poster votre code et la description du fichier, qu'on ait une chance de voir le problème
Posté le 09 juillet 2021 - 15:16
Mais à aucun moment vous ne répondez à ma question. Donc j'entends bien que
vous proposez d'autres solutions, mais je n'en demande pas. C'est soit une
solution à mon problème (hors webdev!), soit on se passera des contenus des
champs mémo. Mais je ne ferai pas le site web avec webdev.

A en croire votre raisonnement, heureusement que je n'ai pas demandé la
recette de la sauce bolognaise, vous m'auriez dit que le plus simple restait
encore de commander une pizza.

Donc je vais gentiment attendre de voir si quelqu'un a vraiment la solution.

Merci beaucoup et bonne journée :)


ok donc pizza ou sauce bolognaise, relis ta propre description de pb
"Je suis un peu embêtée, nous avons un programme local réalisé avec
webdev, "

donc il fallait que l'on traduise en langage de cuisine .. avec Windev.

Je te parlais de webdev parce que l'on accède facilement à l'HF et que
l'on peut faire des webservices toujours facilement.
Mais on peut faire aussi du webservice avec WinDev (en soap (rien à
voir avec la cuisine non plus), je pense qu'avec les dernières vs de
Windev, on peut faire aussi du webservice REST)

Et comme dit Argus, c'est effectivement la meilleure façon de faire
pour développer une couche d'accès aux données.

--
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Posté le 09 juillet 2021 - 18:19
Dans un code hors webdev, et avec une base de données MySQL, si on veut faire une saisie de média, on fait un formulaire avec method post et on input un média, comme ceci :

<form action="#" method="POST" enctype="multipart/form-data">
<label>Upload Picture</label>
<input type="file" name="photo">
<button type="submit" name="upload" value="Upload" id="upload" >Submit</button>
</form>

Ensuite, avec php pour l'introduire dans la base de données dans une colonne "BLOB", on fait comme ça :

$image = $_FILES["photo"]["tmp_name"];
$maVariable = $bdd->prepare("INSERT INTO TABLE(colonne) VALUES (?) ");
$maVariable->execute(file_get_contents($image));

Donc, on se retrouve avec une image dans la base de données.

Par la suite, mettons que ce soit que des images qui sont acceptées, si on veut afficher cette image, on fait une requête vers la db.

$test = $bdd->prepare("SELECT * FROM TABLE");
$test->execute();
while($testImg = $test->fetch()){
?>
<img alt="" style="width:100px" src="data:image/jpg;charset=utf8mb4_bin;base64,<?= base64_encode($testImg["image"]) ?>"/>

<?php
}
?>

Et après ceci, l'image apparaît.

Mon soucis avec les BLOB version hfsql, c'est qu'en suivant identiquement le même procédé, ça ne fonctionne pas. Je me retrouve avec une suite de caractères qui ne sont pas traduits parce qu'il y a un cryptage particulier visiblement dans ce champ de mémo binaire.

Quand j'ai demandé à ce qu'on réalise un test (sur le programme fait avec webdev) avec la fonction "<Mode de cryptage actuel> = <Fichier de données>.CryptageMmo" sur un champ de mémo pour voir ce que ça ressort, la réponse est 34. Je n'ai pas trouvé dans la doc à quoi ça correspond. Et 34 ne fait partie d'aucun élément dans la liste des types de cryptages de mémo que j'ai trouvé sur cette page https://doc.pcsoft.fr/fr-FR/?2512014&name=CryptageMmo

Donc, j'en déduis qu'il y a un cryptage natif dans l'enregistrement du champ. Et j'aimerais savoir lequel pour pouvoir afficher des images qui se trouvent sur la base de données. (Et qui ont été uploadées avec le programme webdev)

Voilà voilà ^^
Posté le 09 juillet 2021 - 23:40
> Donc, j'en déduis qu'il y a un cryptage natif dans l'enregistrement du champ. Et j'aimerais savoir lequel pour pouvoir afficher des images qui se trouvent sur la base de données. (Et qui ont été uploadées avec le programme webdev)

Non... le cryptage décrit ici est le même que celui du fichier de données principale. Si le code peut lire l'enreg principal, il doit aussi lire le mémo de la même manière.

Et ca doit se faire simplement en affectant le champ quand on lit l'enreg. Aucune transformation.
Posté le 11 juillet 2021 - 22:19
Alors pour quelle raison je peux sortir toutes les autres infos sauf les fichiers mémo ? :/

Mais genre, vraiment toutes. Il n'y a que ça qui ne passe pas.

Donc je me doute qu'il n'y a peut-être qu'un petit détail à ajouter pour que ça fonctionne. (Comme par exemple, quand on veut sortir les accents et autres caractères spéciaux de la bdd il suffit dans le code php d'entourer la donnée par un "utf8_encode()" pour que ça fonctionne. Et bien entendu un utf8_decode() pour rentrer les données dans la bdd à partir du site hors webdev. )

Et c'est ce petit détail que j'aimerais bien trouver. Afin de me permettre avec uniquement mon code php de sortir aussi les données qui se trouvent dans un mémo binaire. (Avec ma passerelle odbc) Sans faire de json ou de passage intermédiaires avec ou sans webdev.
Posté le 12 juillet 2021 - 14:55
sans voir l'analyse, le contenu du fichier, le code d'écriture en wlanguage dans ce fichier, et le code de lecture externe, c'est impossible à dire.

Ca pourrait être :
- confusion dans le type de champ mémo (texte ansi/texte unicode, binaire)
- type de variable utilisé en sortie incorrect
- transformation avant écriture faite en wlanguage
- ...

La, je te conseille de te trouver un consultant windev expérimenté pour qu'il plonge dans les détails qu'on ne peut pas voir ici, parce que encore une fois, il n'y a RIEN de spécial à faire pour lire les champs mémos, textes ou binaires...