dimanche 28 février 2010

Exporter données HyperFile SQL vers MySQL

Voici le but de ce projet.

J'ai une application windev avec une base HyperFile SQL (non client/serveur).
J'ai un site internet à distance avec une base MySQL.
Je souhaite faire une synchronisation de l'application windev vers la base de données à distance.
A chaque synchronisation, les tables sont remises à zéro sur la base distante.

Comment j'ai fait

Dans l'application windev et plus particulièrement dans l'analyse, j'ai ajouté une connexion MySQL vers la base distante. (Pensez à installer l'accès natif MySQL pour windev)

J'ai fait la synchronisation dans une nouvelle fenêtre.
Ayant une base d'environ 1000 lignes, j'ai trouvé une "astuce" pour réaliser la synchronisation facilement.

Ajouter un tableau d'un fichier Windev voulu, sélectionnez tous les champs (chargé en mémoire !)
Tester la fenêtre, vos enregistrements devraient s'afficher.
Ajoutez ensuite un bouton, nous allons mettre du code dedans...

L'idée est de stocker dans le tableau les enregistrements de votre base HyperFile SQL puis de changer de connexion vers MySQL, de reparcourir le tableau et d'ajouter dans MySQL chaque ligne de ce tableau. Astucieux non ? :D

Dans le code du bouton, avant toute chose, il faut forcer le parcours de toutes les lignes du tableau pour que windev mette en mémoire l'ensemble des lignes.

POUR i = 1 _A_ TABLE_Produits..Occurrence
//Rien
FIN

Ensuite on change de connexion. De HyperFile SQL vers MySQL

HChangeConnexion("*",ConnexionMySQL)
HSupprimeTout(Produits)
HCréationSiInexistant("*")

Je crée également les tables MySQL si elles n'existent pas (hCréationSiInexistant).

Puis on re-parcours le tableau en ajoutant les lignes dans MySQL

POUR i = 1 _A_ TABLE_Produits..Occurrence
HRAZ(Produits)
Produits.id= TABLE_Produits.COL_id[i]
Produits.nom= TABLE_Produits.COL_nom[i]

HAjoute(Produits)
FIN

On peut finalement compter le nombre d'ajout dans MySQL. Soit en ajoutant un compteur lorsque le hAjoute réussit (meilleure fiabilité), soit en faisant :

Info(TABLE_Produits..Occurrence + " produits ajoutés")

Je vous conseille également de vérifier le nombre de lignes dans votre base HyperFile SQL et le nombre de lignes ajoutées afin de contrôler l'intégrité des données.


On lance la synchronisation
Windev a créé dans MySQL les tables nécessaires et à ajouté les enregistrements.

Problème d'accents
Windev fait la synchronisation mais on peut avoir des problèmes d'accents. L'astuce est d'ajouter une information dans les connexions windev. Dans l'onglet "Avancé" de la connexion MySQL (dans votre analyse), mettre dans la zone "Infos. étendues" :

WD Unicode Support = 0;

Conclusion
Ce n'est pas la solution idéale je pense, mais c'est une solution rapide pour transférer les informations de HyperFile SQL vers une base MySQL distante (ou locale).

dimanche 8 novembre 2009

Sendmail PHP sur virutalbox ubuntu

Développant la plus part du temps sous Windows, j'ai besoin de tester mes applications sous unix afin de vérifier que tout fonctionne correctement. Pour cela j'utilise VirtualBox sur lequel j'installe un Ubuntu 9.10.

Voici comment j'ai paramétré mon Ubuntu pour activer l'envoie de mail via PHP.

sudo apt-get install ssmtp
Editer le fichier /etc/ssmtp/ssmtp.conf
sudo vim /etc/ssmtp/ssmtp.conf
(Une fois vim ouvert, pour éditer appuyez sur "i", pour enregistrer et quitter l'édition faire : "Echap puis :wq!")

Voila à quoi ressemble mon fichier ssmtp.conf

root=
mailhub=smtp.mon_fai.fr
rewriteDomain=mon_fai.fr
hostname=localhost
FromLineOverride=YES

Il faut ensuite modifier le php.ini pour lui dire d'utiliser ssmtp.

Editer le fichier /etc/php5/apache2/php.ini
sudo vim /etc/php5/apache2/php.ini
Trouver la ligne "sendmail_path" et mettre
sendmail_path = /usr/sbin/ssmtp -t -i
Enregistrez et quitter.

Il ne reste plus qu'à redémarrer Apache
sudo /etc/init.d/apache2 restart
L'envoi de mail devrait maintenant fonctionner sur votre Ubuntu avec la fonction mail().

dimanche 27 septembre 2009

SPBAS - Down for maintenance

Bonjour,

Il m'arrive d'utiliser dans un cadre professionnel l'outil SPBAS v1.1.0 développé par l'équipe de solidPhp.



En quelques mots, cet outil fait office de boutique et de gestion de licences. Lorsqu'un client passe commande, une clé de licence lui est automatiquement attribuée. Dans l'application qu'elle télécharge vous devez incorporez un peu de code de SPBAS pour qu'il effectuer les vérifications de licence.
Cela permet de facilement gérer les licences pour vos applications web et de vous créer une petite boutique pour vendre vos applications web (Php, Mysql, ...)

Cet outil est customisable a volonté. On peut entre autres, lors de l'installation, changer les noms de dossiers par défaut qui définiront chaque espace. L'espace administration, l'espace client, ...

Ainsi on peut dissimuler son espace administration dans un dossier nommé "odzoaiuzeo90238". Gage de sécurité ? Cela va ralentir les pirates mais ils trouveront bien un autre moyen de s'infiltrer si ils le souhaitent :)

Bref, Nous pouvons donc définir les dossiers à notre guise. Cependant un bug dans le code de SPBAS empèche le site de fonctionner correctement. Le message "Down for maintenance" apparaissant peut importe les modifications dans l'administration.

Pour résoudre ce problème, il faut éditer le fichier suivant :

api/configuration.php

A la ligne 2, on voit qu'il fixe le nom du dossier admin. Or il est écrit en dur "admin".
Notre dossier admin étant "odzoaiuzeo90238", il faut remplacer "admin" par "odzoaiuzeo90238", enregistrer et revenir à l'accueil de votre boutique. (en enlevant le ?task=down_for_maintenance).

Bon courage pour votre boutique avec SPBAS !

Liens interessants :
Documentation sur SPBAS : http://solidphp.com/docs/

Ouverture

Ouverture du blog,

Il sera pour moi le lieu d'essai de la plateforme blogger et entrepôt d'articles intéressants.