{HyperFile} Lire une base Hyper File en PhP

Fermé
BrousseOuilisse Messages postés 27 Date d'inscription vendredi 18 septembre 2009 Statut Membre Dernière intervention 15 octobre 2010 - 19 sept. 2009 à 10:40
 issa_galsen - 14 mars 2017 à 10:53
Bonjour,
D'un coté, j'ai une base HyperFile (Windev) liée à un soft réalisé sous Windev14.
D'un autre coté, j'ai un intranet développé en Php qui récupère les informations provenant de l'appli locale Windev.

A ce jour, le soft Windev envoie les données dans la base MySql via une passerelle "maison" que je n'ai pas réalisée moi-même, et pour cause, je n'en ai pas les sources. Enfin cette base MySql alimente l'intranet.

Je souhaiterai simplement savoir si il est possible d'attaquer (lecture et écriture) directement la base HyperFile via Php, afin d'unifier les 2 bases en une seule, et ainsi éviter toutes les erreurs liées a la redondance de données (car évidemment il y en a).

Je précise qu'il n'est pas possible de faire l'inverse, a savoir attaquer la base MySql via Windev, vu que l'application est verrouillée et que nous n'en avons plus les sources.

Merci d'avance pour vos réponses

34 réponses

dleclere3 Messages postés 1 Date d'inscription vendredi 26 février 2010 Statut Membre Dernière intervention 26 février 2010 2
26 févr. 2010 à 14:55
Bonjour,
Ou en êtes vous?
J'ai le même pb...
Une caisse -- une base HF -- une base MySql -- un site web ....

Est-ce aussi votre cas ?
A++
2
BrousseOuilisse Messages postés 27 Date d'inscription vendredi 18 septembre 2009 Statut Membre Dernière intervention 15 octobre 2010 5
27 févr. 2010 à 10:07
Bonjour,
Depuis l'ouverture du sujet, j'ai pas mal avancé. Effectivement la solution est l'utilisation du driver odbc de windev (PCSoft m'a bien dépanné pour l'installation du driver)
Ensuite l'acces a la base hf via php se fait tres facilement en lecture comme en ecriture

$connexion =    odbc_connect("dsn", "user", "mot_de_passe") or die("echec connexion");
$requete="SELECT * FROM client";
$resultat = odbc_exec($connexion,$requete);

//affichage du résultat :
odbc_result_all($resultat);


Depuis je suis confronté à un autre probleme mais ça, ça marche, ça pourra peut etre te débloquer
Tiens moi au courant...
1
Bonjour,
depuis quelques jours j'essaie de trouvez un solution pour la base HF, en faite, j'ai un programme développé par WinDev, marche sur un réseau a accessible d'ailleurs et je suis entrein de developper un site php qui doit ce connecter a cette base HF,
j'ai tombé sur ce sujet parhazard et il me plait

alors ma question est pour BrousseOuillisse que je le remerci, ma question :

$connexion = odbc_connect("dsn", "user", "mot_de_passe") or die("echec connexion");

c quoi le dsn?

merci,
0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
20 sept. 2009 à 09:58
si tu a tes données issues de ton soft windev dans ta base mysql, tu fait seulement un script php qui parcours cette base
je vais regarder dans windev exactement ce qu'on peut faire, il me semble que c'est possible mais je suis pas sur (je bosse avec windev 11)
0
BrousseOuilisse Messages postés 27 Date d'inscription vendredi 18 septembre 2009 Statut Membre Dernière intervention 15 octobre 2010 5
20 sept. 2009 à 10:35
Bonjour lewis34,

Une petite précision, le but est d'éliminer la base MySql, afin de ne travailler que sur la base HyperFile.
Cette base étant incontournable du fait du soft Windev sur lequel je ne peux pas agir...
J'espère avoir été assez explicite...

Merci d'avance,
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
20 sept. 2009 à 10:58
ok je pense avoir compris, en fait c'est l'inverse de ce que je te disais que tu veut faire ??
je te tiens au courant
0
BrousseOuilisse Messages postés 27 Date d'inscription vendredi 18 septembre 2009 Statut Membre Dernière intervention 15 octobre 2010 5
20 sept. 2009 à 11:39
Oui c'est bien ça, nous sommes d'accord:)
Merci à toi
0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
20 sept. 2009 à 17:51
j'ai pas eu le temps cet apres midi de regarder ça sérieusement, mais une idée me vient en tete...
A tu essayer de faire un xml de ta BD (php) afin que windev puisse le lire, ça c'est possible.

C'est une piste je me colle au probleme demain matin
0
BrousseOuilisse
20 sept. 2009 à 21:39
c'est vrai que c une idée !
J'y réfléchis aussi. bonne soirée
0
Cqqn Messages postés 964 Date d'inscription vendredi 22 novembre 2002 Statut Membre Dernière intervention 1 avril 2010 21
21 sept. 2009 à 11:01
Bonjour,

normalement, avec le cd d'installation de windev, tu as un driver odbc qui te permet de te connecter à une bdd HyperFile via odbc.

Par contre je ne l'ai jamais fait ...

0
BrousseOuilisse Messages postés 27 Date d'inscription vendredi 18 septembre 2009 Statut Membre Dernière intervention 15 octobre 2010 5
21 sept. 2009 à 13:11
Bonjour et merci pour ton aide,
Je vais tester via odbc (que je n'ai jamais testé non plus) et tenir informé...
0
bapt37 Messages postés 6 Date d'inscription samedi 27 février 2010 Statut Membre Dernière intervention 28 février 2010
27 févr. 2010 à 15:35
Bonjour à tous,

Je suis nouveau sur le forum de CCM. Je me suis inscris, car ce sujet m'intéresse.

Je suis en train de créer un site web, dans lequel je dois faire le lien avec une base Hyperfile pour pouvoir faire de la consultation de données en ligne.

Dans mon cas, la base Hyperfile est sans cesse mise à jour et elle sera exporté en FTP chez l'hébergeur. Mon site est en PHP.

Je me suis un peu renseigné, sur le net, mais je sais pas trop quoi mettre en application pour lire les données à partir de mon site web. Entre le WDScript, le lien ODBC, la conversion de fichier .fic vers XML puis intégration des fichier XML dans une base SQL, je reste un peu dans le flou.

Je voudrais savoir comment il faut s'y prendre pour que je puisse consulter les données de ma base hyperfile sur mon site ?

Merci d'avance pour vos réponses.
0
BrousseOuilisse Messages postés 27 Date d'inscription vendredi 18 septembre 2009 Statut Membre Dernière intervention 15 octobre 2010 5
27 févr. 2010 à 15:55
Bonjour,

En utilisant le driver odbc comme je l'indique précédemment ça marche tres bien

Quelle est ta version de windev ?

Sur le principe tu installes donc le driver odbc livré avec ton cd de windev, ensuite tu accède aux outils d'administration de windows, Sources de données - ODBC, puis tu crées ta source de données, qui pointe sur ton analyse windev.
Suis ce lien si tu,as besoin d'aide pour ça http://www.commentcamarche.net/contents/odbc/odbcdsn.php3.

Ensuite tu n'as plus qu'a reprendre mon exemple pour effectuer tes requetes sur tes fichiers
0
bapt37 Messages postés 6 Date d'inscription samedi 27 février 2010 Statut Membre Dernière intervention 28 février 2010
27 févr. 2010 à 16:15
Merci bien de me répondre aussi rapidement.

Je ne connaît pas la version de windev avec laquelle la base a été crée. Elle a été crée par une société extérieure. Est ce qu'il y a un moyen de connaître la version grâce aux fichiers de la base?

Je pense que je vais utiliser le driver ODBC, seulement où s'installe t-il? sur le serveur où la base est présente?

Et concernant la base est-ce qu'une copie doit être sur le serveur FTP de l'hébergeur ou je peux l'interroger à distance?

Merci
0
BrousseOuilisse Messages postés 27 Date d'inscription vendredi 18 septembre 2009 Statut Membre Dernière intervention 15 octobre 2010 5
27 févr. 2010 à 17:49
Tu n'as pas les sources du soft Windev ?

Je ne suis pas un spécialiste de la chose mais si ce n'est pas le cas ça risque d'etre compliqué car je pense qu'il faudrait que tu passes ton soft en architecture Client-serveur pour pouvoir installer la base hf sur un Windows Serveur, ou sera hébergé ton site web (via Sql Server).

A ma connaissance le serveur doit disposer du driver odbc et hormis un serveur Windows je ne vois pas comment tu peux y arriver.

Je ne pense pas qu'un hébergeur du style ovh te permette ce genre du chose

Tiens moi quand meme au courant car si tu trouves une autre méthode ça m'interesse

Un autre lien pour t'aider :
http://www.prosygma.com/aide/Configurer-une-connexion-ODBC-HyperFile-137.htm

Bon courage...
0
bapt37 Messages postés 6 Date d'inscription samedi 27 février 2010 Statut Membre Dernière intervention 28 février 2010
28 févr. 2010 à 12:17
Merci beaucoup de t'intéresser à mon cas!

Je possède une copie des fichiers de la base Hyperfile (.fic .ndx .mmo), je pense que c'est ça que tu appelles "sources du soft". J'ai regardé et ils ont été développés avec Windev 11.

C'est une petite entreprise, et la base Hyperfile tourne sur un poste sous Windows XP faisant office de "serveur" (pas de réel intérêt d'avoir un OS serveur pour eux). Les postes clients se connectent à la base hyperfile pour consulter, ajouter ou modifier des enregistrements.

Le site web sera hébergé sur 1and1, on possède un nom de domaine.

Mais est-ce que la base Hyperfile doit aussi être sur le serveur FTP de l'hébergeur pour pouvoir consulter les données sur mon site web?? Je pense que oui mais sans certitude!!

Car si le lien ODBC doit forcément être sur le serveur où la base est présente alors ça va pas être possible de le mettre en place sur le serveur 1and1!! et le mettre en place sur le serveur Win XP me donnera rien pour l'interrogation à distance.
Je pense que le lien ODBC est uniquement utilisable sur un réseau local.

Tu peux me re-confirmer mes interrogations car là je sais pas trop quoi penser!

Je vais chercher les autres méthode sur le net et je vous tiens au courant...
0
BrousseOuilisse Messages postés 27 Date d'inscription vendredi 18 septembre 2009 Statut Membre Dernière intervention 15 octobre 2010 5
28 févr. 2010 à 12:47
Non ce que j'appelle les sources sont les codes Wlangage de Windev, c'est a dire les codes qui te permettraient de modifier le logiciel. si ce n'est pas le cas je ne pense pas que tu puisse connecter ton site web a ta base hf qui est en local sur un poste xp.

Effectivement le driver odbc doit etre sur le serveur, et la base hf aussi.
Dans l'etat actuel des choses tu n'as aucune possibilité de lire la base hf depuis un hébergement 1and1 sur un poste xp distant. Et je ne crois pas que tu puisse installer le driver odbc sur un hébergement 1and1 (je crois que ce sont des serveurs linux)

Le poste disposant de la base hyperfile doit aussi etre un serveur web et ce n'est pas le cas. Meme si ton poste xp dispose du driver odbc, ton site web ne pourra pas aller lire la base installée dessus.

As tu pensé a développer ton site sous webdev? lui il sait lire des bases hyperfile, et c'est peut etre une piste...
Il faudrait apres mettre au point un web service duplicant les données entre le poste xp et le serveur web.

Bonne recherches, tiens nous au courant
0
bapt37 Messages postés 6 Date d'inscription samedi 27 février 2010 Statut Membre Dernière intervention 28 février 2010
28 févr. 2010 à 14:55
Merci pour ta réponse!
Non, en effet je ne dispose pas des sources mais uniquement de la base Hyperfile.

Oui, c'est bien ce que je pensais, ça va être quasi impossible. Le lien ODBC est pratique pour faire des requêtes PHP sur la base Hyperfile mais sur un réseau local.

On m'a déjà suggérer développer le site sur webdev, cependant je ne peut pas me le procurer. Celà dit c'est sur que ce serait la meilleure solution mais bon..

Est-ce que la migration d'une base Hyperfile vers une base MySQL est possible ?

Sinon, ce que je pense faire c'est plutôt de reconstituer la base sous MySQL, de faire une conversion des fichiers .fic en XML puis d'introduire les données dans les tables. Un traitement un peu lourd mais si c'est une des seules solutions, ça vaut peut être le coup. Qu'est ce que tu en penses ?

Je vais me pencher dessus, je vous tiens au courant...
0
BrousseOuilisse Messages postés 27 Date d'inscription vendredi 18 septembre 2009 Statut Membre Dernière intervention 15 octobre 2010 5
28 févr. 2010 à 15:17
Migration de Hyperfile vers Mysql non, pas directement.
Je suppose donc que tu ne dispose pas de licence Windev, donc pas moyen de modifier tes fichiers "fic" vers un format autre.

Par contre j'ai déjà eu à importer des données vers une base mysql, et j'avais trouvé un bout de code permettant ça depuis un format csv (excel).
ça donne quelque chose comme ça :

connexion();

if ($creertable)
{
         $query = "CREATE TABLE $table( id int(11), code varchar(20), famille varchar(250), intitule varchar(250))";
	$result= MYSQL_QUERY($query);
}

/* On ouvre le fichier à importer en lecture seulement */
if (file_exists($fichier))
	$fp = fopen("$fichier", "r"); 
else
{ /* le fichier n'existe pas */
	echo "Fichier introuvable !<br>Importations stoppées.";
	exit();
}
$i=0;
while (!feof($fp)) /* Et Hop on importe */
{ /* Tant qu'on n'atteint pas la fin du fichier */ 
	$i++;
	$ligne = fgets($fp,4096); /* On lit une ligne */  

	/* On récupère les champs séparés par ; dans liste*/
	$liste = explode( ";",$ligne);  

	/* On assigne les variables */ 
	$code = $liste[1];
	$famille = str_replace("'","\'",$liste[0]) ;
	$intitule = str_replace("'","\'",$liste[2]) ;
			
	/* Ajouter un nouvel enregistrement dans la table */ 
	$query = "INSERT INTO $table VALUES('$i','$code','$famille','$intitule')"; 
	$result= MYSQL_QUERY($query); 
  
	if(mysql_error())
	{ /* Erreur dans la base de donnees, sûrement la table qu'il faut créer */
		echo "Erreur dans la base de données : ".mysql_error();
		print "<br>Importation stoppée.";
		exit();
	} 
	else /* Tout va bien */
		print "$i $code $famille $intitule <br/>";
} 
     
echo "<br>Importation terminée, avec succès."; 
       
/* Fermeture */ 
fclose($fp); 
MYSQL_CLOSE(); 


Bon dev...
0
bapt37 Messages postés 6 Date d'inscription samedi 27 février 2010 Statut Membre Dernière intervention 28 février 2010
28 févr. 2010 à 15:55
En réalité, si j'ai une licence windev mais pas webdev.

Je pourrais donc réenregistrer mes fichier .fic en csv en passant par windev et ensuite je les ajoute dans mes tables grâce au code que tu m'a passé ??

Ca a l'air pas mal, merci bien de ton aide. Je pense que je vais essayer ça..
0
BrousseOuilisse Messages postés 27 Date d'inscription vendredi 18 septembre 2009 Statut Membre Dernière intervention 15 octobre 2010 5
28 févr. 2010 à 16:05
Alors tu devrais t'en sortir,
Bonne continuation...
0
bapt37 Messages postés 6 Date d'inscription samedi 27 février 2010 Statut Membre Dernière intervention 28 février 2010
28 févr. 2010 à 20:03
Encore moi :)

Juste une question qui a son importance, dans quel langage est développé le code que tu m'as donné ?
PHP mais je suis pas sur !!

Merci d'avance
0