Connecter Android avec Mysql sous WM

Comment Connecter une application Android avec une base de donnée Distante sous WM

Bonjour les windeveurs,

Je vais vous présenter comment lier une application WinDev Mobile avec une base donnée distante (Mysql par exemple) en se basant sur les classes de PHP4WM (php for windev mobile) :°.

Prérequis:

Wamp server . Telechargement depuis le site officiel
windev mobile 17.
les classes PHP4WM.

Préparation de l'espace:

A partir de ce lien vous pouvez télécharger PHP4WM:


Extraire le fichier récemment telechargé dans la repertoire www de wampServer
Ouvrir le fichier connect.php sur l'editeur text (notepad++) et modifier les ligne de connexion comme indique l'image suivante:
pour la base de donnée vous pouvez faire votre propre BD.
même indication pour le $PublicKey si non laissez le comme il est.

Maintenant ouvrez votre IDE Windev mobile :
créez un nouveau projet android sans base de données .
dans la répertoire que vous avez télécharger précédemment vous trouvez un fichier qui s'appelle c_Php4WM.wdc, en fait c'est une classe windev mobile. 
Glissez ce fichier vers la partie réservé au classe de votre projet comme suit:


La preparation de l'espace est Terminé.

Établir la connexion avec Mysql:
créer une fenêtre (activité) et placez dedans 2 boutons et un Champ texte ( textView )



le nom de la button verte: BTN_conn
le nom de la button rouge: BTN_deconn 
le nom de la lebellé          : LIB_afficheur

dans le code de la button déconnexion ajouter cette ligne:

IF (estConnecte = True) THEN

estConnecte = False
monAccess:mySQLDeconnecte()
LIB_afficheur="Connection non etablie"

END





dans la partie de la déclaration des variable de projet nous avons besoin d'instancier notre classe php4WM pour cela ajouter les ligne suivants dans la partie initialisation:



GLOBAL
monAccess is c_Php4WM()
i est un entier=1
estConnecte est un booléen=False

dans le code de la bouton connexion ajouter ces lignes:


LOCAL
v_retCode is boolean
monAccess:TypeBase = "MYSQL"
monAccess:CleCryptage = "AABBCCDDEEFFGGHH" // la même clé que connect.php pour le déchiffrement
serv,user,pass,base est une chaîne
/// les mêmes informations que nous avons déjà fourni
serv = "http://10.0.2.2/php4wd.php";
user = "root";
pass = "";
base = "_1_maBase_1";
v_retCode = monAccess:mySQLConnecte(serv,user,pass,base)

IF (v_retCode = True) THEN
LIB_afficheur="Connection établie"
estConnecte=Vrai
ELSE
Erreur("Impossible de se connecter à la base de donnée .", "Erreur n° " + monAccess:mySQLErreur, monAccess:mySQLGetErrorMessage())
END


 vous pouvez démarrer vos programme et tester vote connection ;) .





Au revoir et à la prochaine partie INCHA ALLAH. on va voir comment réaliser les requête avec cette base de données Mysql (Select, Delete, Modifier, Ajouter) CRUD pour la base de données MYSQL.

s'il y a des problèmes ou des propositions n'hésitez pas de me laisser des commentaires pour rendre ce document plus bénéfiques.

  

102 commentaires:

  1. Enfin la solution est là
    j'essaye cette solution ça marche
    merciiiiiiiiiiiiiii :)))))

    RépondreSupprimer
  2. Génial... Et sur la version WM18, c'est pareil ? Merci pour ton savoir et ton partage ! On en veut encore ....pc

    RépondreSupprimer
  3. Merci pour ce tutoriel.
    Il semble que tu fasses une connexion sur une base mysql en local dans ton exemple.

    Pourrais-tu détailler ce qui est à modifier dans le cas d'un hébergement de la base myssql via un compte perso hébergé sur free.fr ?

    Faut il changer le code la page connect.php et le code du bouton BTN_conn ? Si OUI , comment?

    Merci de ton aide préciseuse.
    Sam

    RépondreSupprimer
    Réponses
    1. Salam,
      pour l'exemple j'ai travaillé avec BD local mais si tu as une BD Distant il suffit de changer les paramètre du fichier connect.php et le code de la bouton BTN_conn
      >>change le $serveur, $user et $pass avec celui de ton compte du serveur free.fr
      >>meme chose pour la bouton
      >>heberge les deux fichiers php sur le serveur
      voila c'est tout.
      cordialement

      Supprimer
    2. Bonjour
      Merci de ton aide.
      Prenons l’exemple d'un compte sur free pour un utilisateur nommé webdev
      Le site est hébergé sur le compte http://webdev.free.fr
      par contre l'adresse d'hebergement de mysql est http://sql.free.fr

      J'héberge le fichier connect.php via ftp sur mon compte webdev.free.fr

      J'édite le fichier connect.php et je remplace

      $serv = 'http://sql.free.fr'; <=== serveur SQL
      $user = 'webdev';
      $pass = '***';
      $base = 'webdev';


      De la même façon j'ai adapté le code du Btn_conn de connexion de l'appli

      $serv = 'http://sql.free.fr'; <=== serveur SQL
      $user = 'webdev';
      $pass = '***';
      $base = 'webdev';


      Mais ça ne marche pas.... je tombe dans une sorte d'infinite loop.
      Merci de ton aide
      Sam

      Supprimer
    3. Salam,
      En fait tu as besoin d'heberger aussi l'autre fichier php4wd.php ça s'une part d'autre par tu as besoin de mettre dans le code de Btn_conn .
      $serv = 'Votre acces vers le fichier /php4wd.php'
      càd l'accés vers ce fichier.
      cordialement.

      Supprimer
    4. Bonjour :)
      Même problème pour pour chez Free aussi..
      Envoyé les deux fichiers avec :
      $serv = 'http://sql.free.fr';
      $user = 'xxxxam';
      $pass = 'xxxxfer1';
      $base = 'xxxxtam';
      $PublicKey = 'xxxxtgb';

      et quand je fais un test dans firefox :
      Parse error: syntax error, unexpected '{' in /mnt/105/sda/5/f/xxxxtam/connect.php on line 58

      Donc déjà si dans firefox ça zigouille, dans le pda.. même pas en rêve :( ..

      Supprimer
    5. Toujours problème : je tape l'adresse du php4w sur une navigateur pc internet ou firefox avec test=OUI et le site me répond bien les infos mais.. Sur le téléphone, rien :( ..

      d'ou peut venir le problème ?

      Supprimer
  4. Merci de tes informations, j'ai fais le changement, mais ça ne passe toujours pas .... pourtant j'ai exactement copier/coller tout ton code, j'ai uniquement changé les paramètres de connexions dans les fichiers connect.php et dans le Code du Btn_conn de l'appli Webdev !


    Les fichiers connect.php et php4wd.php ont été transférés par Ftp sur le serveur.

    Dans le code Windev du Btn_conn j'ai mis

    serv = "http://webdev.free.fr/php4wd.php"; <<< correspond à l'adresse Http où est hébergé le fichier php4wd.php
    user = "webdev";
    pass = "***";
    base = "webdev";

    Dans le fichier connect.php sur le serveur j'ai précisé

    $serv = 'sql.free.fr'; <<< correspond au serveur sql de free (cf http://www.free.fr/assistance )/929-utiliser-une-base-de-donnees.html
    $user = 'webdev';
    $pass = '***';
    $base = 'webdev';

    Et ça ne fonctionne pas.

    sam

    RépondreSupprimer
  5. Salam,
    J'ai tester sur ce serveur "www.hebergratuit.com" et ça marche très bien, et bcp des gent ont fait ce tp à distant et ça marche aussi.
    je sais pas c'est quoi vraiment le problème, normalement ça doit marcher très bien...

    RépondreSupprimer
  6. salam,
    tester ton adresse Http pour moi :
    http://helouardi.hebergratuit.com/php4wd.php
    il affiche normalement:
    --DEBUTSQL--PHP4WDSEP

    RépondreSupprimer
    Réponses
    1. Je viens de me créer un compte sur hebergratuit
      Il s'agit de http://windev.hebergratuit.com

      Vous pouvez tester la page http://windev.hebergratuit.com/php4wd.php et voir que j'ai le même résultat que vous.

      En passant dans le fichiers php4wd.php, il y a 2 instructions include :
      include('connect.php');
      include('phpzip.php');
      Je n'ai pas le fichier phpzip.php, où peut-on le trouver ?


      Pour ma conection j'ai cela dans le fichier connect.php
      $serv = 'sql112.hebergratuit.com';
      $user = 'rober_12437586';
      $pass = '***';
      $base = 'rober_12437586_DB1';

      Dans le fichier connect.php sur le serveur j'ai précisé
      serv = "http://windev.hebergratuit.com/php4wd.php";
      user = "rober_12437586";
      pass = "***";
      base = "rober_12437586_DB1";

      Et ça ne marche toujours pas.

      J'ai pourtant respecter toutes vos consignes. Je ne vois vraiment pas ce que j'ai fais de faux !

      Merci de votre aide,
      Sam.







      Supprimer
  7. Je viens de tester mon adresse d'hébergement pour le fichier http://webdev.free.fr/php4wd.php
    et j'obtiens exactement le même résultat que toi !

    RépondreSupprimer
  8. Salam sam,
    d'aprés ton post le 23 février 2013 10:15 plus précisement ici

    //////////////////////////////////////////////////////////////
    Dans le fichier connect.php sur le serveur j'ai précisé
    serv = "http://windev.hebergratuit.com/php4wd.php";
    user = "rober_12437586";
    pass = "***";
    base = "rober_12437586_DB1";
    ////////////////////////////////////////////////////////////////

    Tu veut dire normalement le code de la bouton BTN_conn ;)

    changer ton code et mettre directement ça:
    v_retCode = monAccess:mySQLConnecte("http://helouardi.hebergratuit.com/php4wd.php","rober_10131991","pass","rober_10131991_db1")
    au lieu de ça:
    v_retCode = monAccess:mySQLConnecte(serv,user,pass,base)
    si le problème n'a pas disparu merci de m'informer
    cordialement.
    "Le dieu te donne, Tu partage..." ;)

    RépondreSupprimer
  9. Bonjour El Ouardi,

    Effectivement, je me suis trompé, il s'agissait bien du code de BTN_conn.

    J'ai suivi tes consignes en changeant la ligne de code du BTN_conn.
    Mais ça ne fonctionne malheureusement pas.

    Pour info:
    - J'utilise Windev Mobile 17
    - J'ai bien mis en place la class c_Php4WM dans mon projet et j'ai copié exactement ton code Windev mobile.

    En débuggant, j'ai vu que je suis en boucle infini au sein de la fonction mySQLExec.

    merci encore de ton aide.

    RépondreSupprimer
  10. Salam sam,

    est ce que tu as mis ça directement?:
    v_retCode=monAccess:mySQLConnecte("http://helouardi.hebergratuit.com/php4wd.php","rober_10131991","pass","rober_10131991_db1")
    cordialement...

    RépondreSupprimer
  11. salam,
    Si le probleme s'arrete tjr essayer de me passer votre code pour le voir par ce que c biiizar (les deux fichier).....
    Mon email: helouardi@yahoo.fr

    RépondreSupprimer
    Réponses
    1. Je vous ai envoyé les informations.

      Supprimer
    2. Bonjour, J'ai le meme probleme et je crois que comme quelqu'un l'a dit plus haut il semble qu'il y a un fichier manquant: le phpzip.php car il lui a été fait appel dans le php4wd.php Merci encore de nous aider à trouver une solution.

      Supprimer
    3. Bonjour.
      j'ai aussi le meme probleme. il y a un ficher manquant le phpzip.php
      si vous avez trouvé la solution Merci de m'aider.
      (MOUAD)

      Supprimer
  12. salam Fad,
    Pour information je travaille seulement avec c deux fichier php4wM et connect .php est ça marche trés bien...

    RépondreSupprimer
    Réponses
    1. Bonjour

      J'ai fait quelques tests avec votre classe PHP4WM, ça a l'air super mais je rencontre un problème. J'espère que vous pourrez m'aider.

      Voici les informations :
      J'utilise Windev Mobile 18, EasyPhp5.3.9, PHP4wd.php 5.0.0.5. et une base de donnée locale.
      Avez-vous un site sur lequel je pourrais faire un test ?
      ainsi je saurais si le problème vient du côté PHP ou où du côté Windev Mobile
      D'autre part, je vous sur SqlManagerX que PHP4wd et en version 7.0.0.1 ? savez-vous ou je peux télécharger
      cette version ?

      Merci d'avance pour votre aide.
      Can


      CLIC SUR BOUTON CONNECTION
      ==========================

      HTTPDonneRésultat(1)
      -----------------------------------------
      HTTP/1.1 200 OK
      Date: Mon, 11 Mar 2013 09:39:05 GMT
      Server: Apache/2.2.21 (Win32) PHP/5.3.9
      X-Powered-By: PHP/5.3.9
      Content-Length: 67
      Connection: close
      Content-Type: text/html
      <><0>

      HTTPDonneRésultat()
      ------------------------------------------

      --DEBUTSQL--PHP4WDSEP--BINDVARIABLE--PHP4WDSEP--FINSQL--PHP4WDSEP

      Requete envoyée
      ----------------
      non cryptée : "SHOW Tables from posthotel;"
      cryptée : requete=148137146154101153163164178171183100173185183181097177178182181169178183170177125&typeBase=MYSQL
      &bind=&bindLen=&bindVal=&bindType=&methode=NON&crypteretour=NON


      ===>>>>> La connexion se fait apparemment


      CLIC SUR BOUTON AFFICHER
      ========================

      HTTPDonneRésultat(1)
      -----------------------------------------
      HTTP/1.1 200 OK
      Date: Mon, 11 Mar 2013 09:46:12 GMT
      Server: Apache/2.2.21 (Win32) PHP/5.3.9
      X-Powered-By: PHP/5.3.9
      Content-Length: 67
      Connection: close
      Content-Type: text/html
      <><0>

      HTTPDonneRésultat()
      ------------------------------------------

      --DEBUTSQL--PHP4WDSEP--BINDVARIABLE--PHP4WDSEP--FINSQL--PHP4WDSEP

      Requete envoyée
      ----------------
      non cryptée : "SELECT * FROM utilisat;"
      cryptée : requete=148134143136136153098108102140150147148103189188170173172182162181099126&typeBase=MYSQL
      &bind=&bindLen=&bindVal=&bindType=&methode=NON&crypteretour=NON

      ====>>>>> Je n'ai aucun résultat en retour càd mysqlendehors est à Vrai (j'ai essayé en faisant une erreur de synthaxe dans la commande SQL et j'otiens un message d'erreur, je suppose que je communique bien)




      Supprimer
  13. Ok! Je suis toujours en train d'essayer je vous tiens informer

    RépondreSupprimer
  14. Bonsoir en fait je me suis rendu compte que le programme boucle sur cette instruction:
    CAS 2 : Dimension(:Resultat2,Dimension(:Resultat2)+1);:Resultat2[:colonne[myRequestNumber]+:ligne[myRequestNumber]] = v_ligne
    de la fonction mySQLExec
    Avez vous une idee de ce qui pourrait causer cela?

    RépondreSupprimer
  15. Bonsoir

    Tuto très appréciable !
    Cependant, j'ai fais toutes les manipulations cités dans le tuto.
    J'ai une erreur de fichier non trouvé (malgrès la bonne adresse)

    Serais-ce à cause du fichier phpzip.php non inclus ?

    Merci

    Tyto

    RépondreSupprimer
    Réponses
    1. Bonsoir

      Autant pour moi,
      j'ai déposé les deux fichiers PHP directement à la racine de mon site et j'ai bien le message connexion établie !
      Pour info, je suis chez 1AND1 ... j'attends avec impatience le tuto sur les requetes !
      1and1 bloque les connexion externes a MySQL, donc cette astuce sera très apréciable !
      Merci à vous

      Tyto

      Supprimer
  16. j'ai consulte pas mal de post et il semblerai kil ya un probleme entre WM17 et PHP4WM, ca bloque au niveau de la boucle en traitant le resultat de la requete, la connecxion se passe bien mais c'est au niveau de traitement de du resultat que ca bloque!!

    un bon developeur php pourait nous fixer ca sans probleme!!

    RépondreSupprimer
    Réponses
    1. il faut changer dans mySQLExec la ligne ci-dessous :

      ResLancement=HTTPRequête(:URL,"SQLManagerX","",vPost)

      par

      ResLancement=HTTPRequête(:URL,"SQLManagerX","",UnicodeVersAnsi(vPost))


      J'utilise Windev mobile 18, mais je pense que c'est le meme problème en WM17

      Supprimer
    2. bonjour,

      la boucle infinie vient du fait que la requete a echouée en fait on recoit en resultat du script php du vide et suivant le charset on a pas eot ou "" dans windev et comme la condition d'arret est une des 2 valeurs elle boucle

      intercepter dans mysqlExec la chaine retour pour voir ce qu'elle contient

      le script php lui existe depuis 10 ans et j'ai a peu pres 20 application qui tourne sur des serveur oracle, mysql, et sqlserver avec le script

      Firetox

      Supprimer
  17. Bonjour,

    je rencontre le problème suivant lors du lancement du fichier php4wd.php :

    j'ai le message d'erreur suivant :

    --DEBUTSQL--PHP4WDSEP Fatal error: Function name must be a string in /volume1/web/php4wd.php on line 121

    Emplacement du fichier :

    http://95.138.4.24/php4wd.php


    J'essaye de faire une application qui fait appel a une BDD mysql sur un serveur synology , je développe l'applications sous Webdevmobil 17.


    merci de votre aide^^


    RépondreSupprimer
  18. Le problème ne s'arrange pas avec la manipe de Can yilmaz, toujours cette boucle sour WM 17.

    RépondreSupprimer
  19. Je viens de tester avec la ligne
    v_retCode = gclMon_acces:mySQLConnecte("http://helouardi.hebergratuit.com/php4wd.php","rober_10131991","pass","rober_10131991_db1")

    et elle boucle sur elle-même sans me donner de résultat.

    Je suis sous WM18

    RépondreSupprimer
  20. moi je voudrai savoir si cette php class peu aussi functionne pour lenvironement IOS

    RépondreSupprimer
  21. bonjour,

    normalement oui puisque si windev mobile peut generer un programme ios alors comme on passe par du http cela ne devrait pas poser de probleme

    Firetox (Emidev)

    RépondreSupprimer
  22. Bonjour,

    J'ai suivi vos instruction de téléchargement et de mise en place mais il manque le fichier phpzip.php
    Pouvez-vous me dire ou je peux le trouver

    Merci de votre aide.

    Philippe

    RépondreSupprimer
  23. Fatal error: Function name must be a string in C:\xampp\htdocs\windev\php4wd.php on line 121


    ya pas de solution pour ça j'ai essayé toute les version xampp , wamp , Appserv , EasyPhp , rien a faire toujours la méme chose :(

    RépondreSupprimer
  24. Bonjour,

    étant donné que personne ne semble avoir poster la solution au problème, voici ce que j'ai fait pour corriger la situation avec Windev Mobile 17 version xxx78n, parce qu'avec des versions 17 précédentes le problème ne se présente pas.

    Il faut dans la fonction mySQLExec changer d'abord ce bout de code

    SI :PocketPC ALORS
    v_chaineResult = UTF8VersChaîne(HTTPDonneRésultat())
    SINON
    v_chaineResult = HTTPDonneRésultat()
    FIN

    pour simplement mettre

    v_chaineResult = UTF8VersChaîne(HTTPDonneRésultat())

    Suite à ce changement, l'appli ne boucle plus indéfiniment lors de la connexion, mais renvoie l'erreur suivante:

    --DEBUTSQL--PHP4WDSEP Fatal error: Function name must be a string in votre serveur/php4wd.php on line 121

    Pour corriger cela, il faut faire comme can yilmaz l'a dit, changer toutes ces instructions

    HTTPRequête(:URL,"SQLManagerX","",vPost)

    pour

    HTTPRequête(:URL,"SQLManagerX","",UnicodeVersAnsi(vPost))

    Voilà, le problème devrait être réglé. J'ignore pourquoi, mais entre la première version 17 et la dernière mise à jour, l'encodage des chaîne pour android est passé a l'unicode.

    RépondreSupprimer
  25. Salut
    Je commence avec WM Express dans la version 17 et J’acquière de plus en plus d'expérience.
    Mais je reste limité par la version express (pour l'importation de la classe c_Php4WM.wdc dans mon projet).

    Je souhaiterais SVP avoir accès à la source de cette classe "c_Php4WM.wdc" afin de la créer manuellement et d'expérimenter ce mode de connexion : Tout est déjà pret ! Il me manque juste cette classe à ajouter.


    RépondreSupprimer
  26. Re-bonjour,

    Je vois que personne ne veut etre généreux avec moi depuis mon message du 13 juin 2013 ("c_Php4WM.wdc").
    Mais j'ai trouvé une solution à mon problème en programmant une Collection de procédures qui exploitent une Base de données distante HyperFileSQL Client/Serveur depuis une Appli Android.
    Suis encore avec WM Express ... et j’emboîterai le pas vers une version commerciale une fois satisfait. Pour avoir une configuration IOS.

    Cordialement...
    DESTHIN

    RépondreSupprimer
  27. Bonjour,

    Quelqu'un pourrait-il me dire quel est le code à mettre pour se déconnecter de la base car le code indiqué dans le bouton "Déconnecté" ne sert à rien si ce n'est mettre à jour le libellé...

    Merci`;

    RépondreSupprimer
  28. Bonjour
    j ai bien appliqué les tp et en test local cela fonctionne bien, mais avec base et fichiers connect.php et php4wd.php installés sur hebergratuit.com cela ne donne rien. pourriez vous m aider. merci

    RépondreSupprimer
  29. Bonjour j'ai le même probleme pour me connecter à une base de donnée locale mais quand je tente d'affiche l'URL
    http://localhost/php4wm.php

    il m'affiche une serie d'erreur en plus la connection ne reussie pas car, je pense que le fichier phpzip.php est manquant.

    include('phpzip.php');

    Warning: include(phpzip.php) [function.include]: failed to open stream: No such file or directory in D:\EasyPHP-5.3.8.1\www\php4wd.php on line 11

    Merci d'avance pour l'aide

    RépondreSupprimer
  30. salut , je veut bien utiliser votre méthode pour ce connecter a une base mssql server 2000 mais j'arrive pas je ne développe pas en web donc je suis null en php !!! si sa possible merci de m'aider a fin d'établir la connexion vers mssql server 2000

    RépondreSupprimer
    Réponses
    1. je répond a moi même , il faut vérifier la config , sa marche mnt 5/5

      Supprimer
  31. Bonjour,

    J'ai appliqué le correctif de Frank ci-dessus (du 13/06) et ça marche enfin... en tout cas pour l'instant en local.

    Donc merci !

    Petite note au passage, le safe mode php était activé sur mon wamp, j'ai dû le couper pour que ça fonctionne sinon j'avais des erreurs d'authentification pour accéder à la base. Si ça peut en aider certains...

    RépondreSupprimer
    Réponses
    1. Puis je avoir un exemple de PHP4MW qui fonctionne vraiment?
      ma config:
      WM18
      WampServer 5.3.5

      Supprimer
  32. Quel version de wamp server utiliser vous?
    Moi j'ai la 5.3.5, mais j'ai plein d'erreur sur le fichier php4wd.php.
    Quand je lis ces erreurs, je vois que ce sont des erreurs d'incompatibilité et de fonctions php qui ont changer.
    Aidez moi

    RépondreSupprimer
  33. J'ai le meme probleme que vous
    PHP 5.3.5, j'ai plein d'erreurs PHP, et en note certaines fonctions php ont changés ou sont obsoltetes....
    Quelqu'un aurit il rencontrer ce probleme?

    RépondreSupprimer
  34. Ce commentaire a été supprimé par l'auteur.

    RépondreSupprimer
  35. salut les amis!
    j'ai passé toute la journée à déboguer mon application android avec i=une base MYSQL.
    J'ai réussi à la faire tourner avec PHP4W; les test marchent très bien dans windev mobile mais dès que je l'installe sur un vrai téléphone android htc, elle me balance une erreur : Impossible de se connecter à la base de donnée. Erreur N° 0, une erreur s'est produite pendant le traitement de la requete HTTP par le serveur. Detail de l'erreur système: internat server error (code 500)
    J'ai besoin que vous me donniez un coup de main

    RépondreSupprimer
    Réponses
    1. Bonjour a tous , Manotexte pour moi c pareil que toi

      Supprimer
    2. Pareil pour moi.
      Ca marche très bien sur le simulateur, et dès que je passe sur le mobile (galaxy note 3), la boucle recommence (je suppose), et je n'accède pas à la base.

      Merci si quelqu'un à une solution.

      Supprimer
  36. Idem à mon niveau qui peut nous aider à resoudre ce problème

    RépondreSupprimer
  37. Bojour, j'ai suivi le tuto, tout fonctionne bien aprèq quelques modifs en mode test et sur des appareil iOS mais sur des appareils Android, ca bug. Quelqu'un peut-il nous aider ?

    RépondreSupprimer
  38. Ce commentaire a été supprimé par l'auteur.

    RépondreSupprimer
    Réponses
    1. voici ce qu'il faut faire pour corriger la situation avec Windev Mobile 17 version xxx78n, parce qu'avec des versions 17 précédentes le problème ne se présente pas.

      Il faut dans la fonction mySQLExec changer d'abord ce bout de code

      SI :PocketPC ALORS
      v_chaineResult = UTF8VersChaîne(HTTPDonneRésultat())
      SINON
      v_chaineResult = HTTPDonneRésultat()
      FIN

      pour simplement mettre

      v_chaineResult = UTF8VersChaîne(HTTPDonneRésultat())

      Suite à ce changement, l'appli ne boucle plus indéfiniment lors de la connexion, mais renvoie l'erreur suivante:

      --DEBUTSQL--PHP4WDSEP Fatal error: Function name must be a string in votre serveur/php4wd.php on line 121

      Pour corriger cela, il faut faire comme can yilmaz l'a dit, changer toutes ces instructions

      HTTPRequête(:URL,"SQLManagerX","",vPost)

      pour

      HTTPRequête(:URL,"SQLManagerX","",UnicodeVersAnsi(vPost))

      Voilà, le problème devrait être réglé. J'ignore pourquoi, mais entre la première version 17 et la dernière mise à jour, l'encodage des chaîne pour android est passé a l'unicode.

      Supprimer
  39. Bonjour,

    étant donné que personne ne semble avoir poster la solution au problème, voici ce que j'ai fait pour corriger la situation avec Windev Mobile 17 version xxx78n, parce qu'avec des versions 17 précédentes le problème ne se présente pas.

    Il faut dans la fonction mySQLExec changer d'abord ce bout de code

    SI :PocketPC ALORS
    v_chaineResult = UTF8VersChaîne(HTTPDonneRésultat())
    SINON
    v_chaineResult = HTTPDonneRésultat()
    FIN

    pour simplement mettre

    v_chaineResult = UTF8VersChaîne(HTTPDonneRésultat())

    Suite à ce changement, l'appli ne boucle plus indéfiniment lors de la connexion, mais renvoie l'erreur suivante:

    --DEBUTSQL--PHP4WDSEP Fatal error: Function name must be a string in votre serveur/php4wd.php on line 121

    Pour corriger cela, il faut faire comme can yilmaz l'a dit, changer toutes ces instructions

    HTTPRequête(:URL,"SQLManagerX","",vPost)

    pour

    HTTPRequête(:URL,"SQLManagerX","",UnicodeVersAnsi(vPost))

    Voilà, le problème devrait être réglé. J'ignore pourquoi, mais entre la première version 17 et la dernière mise à jour, l'encodage des chaîne pour android est passé a l'unicode.

    RépondreSupprimer
    Réponses
    1. Bonjour,

      Après avoir résolu tous les pbs de boucle infini etc grace à ce forum très bien documenté (MERCI), et malgré de nombreux Iinfo() de debug dans la classe c_php4wm, je me trouve avec le message d'eerreur suivant :
      Php_Network_Getaddresses: Getaddrinfo Failed: Name Or Service Not Known.
      L'URL est correcte (d'alleurs des appels a Info(monAccess:mySQLGetHostInfo())
      Info(monAccess:mySQLGetServerInfo())
      me donnent bien les bonnes version de php et apache.

      Quelqu'un peut-il m'aider ?
      Il est difficile de tester php4wd.php, car il attend un POST et non un REQUEST si on essaye de l'attaquer directement. Et des echo php ne peuvent se voir car il n'a pas de fenetre d'appel.

      Merci de votre aide.
      JF Vibert

      Supprimer
    2. Désolé, mais j'ai résolu le pb. Le nom du serveur avait une faute de frappe difficile à voir.

      Avec mes excuses pour ce post inutile.
      JFV

      Supprimer
  40. Les requêtes sur base de donnée en local sont aussi fluide que par un acces ODBC par exemple ?
    Merci

    RépondreSupprimer
  41. Salam,

    Merci pour cette merveilleuse solution, je veux savoir est que c'est fonctionnel pour une application ios crée par windev mobile ?

    RépondreSupprimer
  42. bonsoir,
    je suis débutant en langage Windev ,et j'aimerais travailler une application android qui fait la connexion à une base de données MySQL .je respecte tous les étapes demandées mais j'ai un erreur au niveau serveur et la base de données .impossible de se connecter à la base erreur 100072 .

    RépondreSupprimer
  43. Merci beaucoup pour ce tuto et les commentaires de QUALITE ! Vous avez surement sauvé mon projet bac

    RépondreSupprimer
  44. salut merci beaucoup pour le tuto c'est bien expliqué! J'ai suivi à la lettre mais lorsque j'exécute l'appli tourne sans me retourner de résultat.

    RépondreSupprimer
  45. J'ai le meme probleme :( L'appli commence a boucler qnd j'essaie de connecter. Ce qui est étrange c'est que dans l'émulateur windev ça fonctionne comme une merveille. Qqn qui peut aider?

    RépondreSupprimer
  46. Bonjour !

    Je souhaiterai me connecter à une base de donnée SQLServer. est que C possible avec cette exemple ?
    Si oui, svp indiquez moi la manière.

    Merci les amis ;)

    RépondreSupprimer
  47. Bonjour Hassan El ouardi,

    merci pour les modifications, ça fonctionne parfaitement...sur l'émulateur Android.

    En effet, tout fonctionne bien sur mon Windev 17 mais dès que je passe sur ma tablette ou mon téléphone Android pour tester l'application, j'ai à nouveau le message d'erreur "Fatal error: Function name must be a string in votre serveur/php4wd.php on line 121" au moment d'executer la requête.

    Savez-vous comment peut-on corriger le pb ? J'ai cherché un peu sur la toile sans trouver de réponse.
    Merci par avance !

    RépondreSupprimer
  48. Bonjour

    Merci pour votre tuto, qui m'a permis d'avancer.

    Mais on peut regretter qu'il n'y ait aucune description des l'API de php4wm, à part regarder dans la source de la classe. On y perd pas mal de temps, alors qu'une page avec toutes les fonctions et un bref commentaire des parametres et de ce que ca fait (encore que c'est assez explicite avec le nom de la fonction, ce serait pas mal. Mais je suis d'accord pour dire que ce devrait être sqlxmanager qui devrait le faire.

    Merci encore.
    JFV

    RépondreSupprimer
    Réponses
    1. Je me réponds à moi même car j'ai trouvé la réponse sur une discussion du forum de PCSoft.

      Pour que cela fonctionne sous Android, il faut ajouter dans la fonction mySQLExec de la classe c_php4wm la ligne

      v_chaineResult = UnicodeVersAnsi(v_chaineResult)

      Juste avant la premiere instruction BOUCLE de cette fonction :
      ...
      :ligne[myRequestNumber] = 0
      :colonne[myRequestNumber] = 0

      retCode = Vrai

      v_indCar est un entier = 1
      v_indCour est un entier = 1

      // Cette ligne la :
      v_chaineResult = UnicodeVersAnsi(v_chaineResult)
      //
      BOUCLE

      // extraction de la valeur des colonnes
      v_indCar = Position(v_chaineResult,"PHP4WDSEP",v_indCour)
      v_ligne = v_chaineResult[[ v_indCour A v_indCar-1]]
      ...


      J’espère que cela en aidera certains, car cette classe est beaucoup plus facile a utiliser que la mise en place d'webservice, car écrire un fichier wsdl est assez galère !

      Je ne comprends pas gtrop pourquoi PCSoft n'en parle pas, puisque l'on peut produire du PHP avec les W*Dev, c'est qu'on a accès à des serveurs en PHP.

      JFV

      Supprimer
  49. Hassane, Comment afficher des images provenant d'une base de donnée sur cette application android, par exemple les photos des produits. merci

    RépondreSupprimer
  50. j'ai un probleme, lors je clic sur le bouton connextion un msg d'erreur est s'affiche
    "Impossible de se connecter à la base de donnees.
    Erreur n°100072
    Le serveur ne repond pas.Ya-t'ill
    un serveur HTTP sur la machine
    cible ?
    Un probleme a ete detecte pendant
    l'envoi d'informations sur la socket."

    SVP j'ais besoin d'aide urgent

    RépondreSupprimer
  51. Bonjour, Tout me semble OK (installation, paramétrage), mais PHP répond qu'il y a une erreur de syntaxe SQL. L'instruction qui ne fonctionne pas est "SHOW Tables fromw[gtefor" etc. Or le nom de ma base commence par "platefor". Iy a 3 caractères "w[g" qui prennent la place de " pla" ???

    RépondreSupprimer
  52. Ce commentaire a été supprimé par l'auteur.

    RépondreSupprimer
  53. Je viens de passer ... 2 mois bloqué ! Il faut bien spécifier à tout le monde que la clé de chiffrage doit être suffisamment longue (c'était mon souci). Je crois au moins 20 caractères d'après ce que j'ai déchiffré dans la classe. Résolu pour moi. Merci à JeAn-PhI pour son aide précieuse et sa patience.

    RépondreSupprimer
  54. moi tout va bien, mais j aimerais avoir un code qui vas nous permettre d afficher les images de chaque produit d un table produit de ma BD

    RépondreSupprimer
  55. Bonjour,

    Depuis Php5.5, la fonction mysql_connect est deprecated. Y a t-il une évolution des fichiers?

    D'avance merci

    RépondreSupprimer
  56. Isaac Neewton

    impossible de connecter a mon serveur mysql il dit qu'il ne trouve pas le fichier PHP4wd.php alors qu'il est bien la dans WWW de mon wamp. que faire

    RépondreSupprimer
  57. Bj a tous aider moi a me connecter a ma BDD localhost avec WM18; apres certes ecrit tous les codes a la lettre, j'ai le msg suivant apres avoirs mis tous les fichiers connect.php , php4wd.php et phpzip.php dans WWW de wamp : impossible de se connecter a la BDD.
    Error n°1 connexion impossible. script PHP4WM.php non trouvé

    RépondreSupprimer
  58. Moh-srt Mohh28 novembre 2014 à 15:13

    j'ai un probleme, lors je clic sur le bouton connextion un msg d'erreur est s'affiche
    "Impossible de se connecter à la base de donnees.
    Erreur n°100072
    Le serveur ne repond pas.Ya-t'ill
    un serveur HTTP sur la machine
    cible ?
    Un probleme a ete detecte pendant
    l'envoi d'informations sur la socket."

    SVP j'ais besoin d'aide urgent

    RépondreSupprimer
  59. sur windev mobile 20 ; boucle infinie lors de la connction :(

    RépondreSupprimer
  60. svp dans le cas de mon base postgresql ou je met le ficher .php
    pas de reperatoire de wwww

    RépondreSupprimer
  61. svp comment connecte une base de donnée postgresql avec terminal mobile

    RépondreSupprimer
  62. etant le createur de php4WM j'ai mis en ligne une chaine youtube qui contient les videos de php4WD et php4WM

    pour la connexion postgreSQL il faut que php accede a postGreSQL une fois cela fait (installation des modules php correctement) vous pourrez dans typeBase du fichier php4WD.php changer le type d'acces pour postGreSQL et bien sur mettre les obn element dans connect.php

    pour les autre base on peut avoir SQLserver, Oracle, Firebird, MySQL (en PDO,mysqli, et mysql), SQLite etc ...

    pour les video https://www.youtube.com/dashboard?o=U

    RépondreSupprimer
    Réponses
    1. ET CE QUE TU PEUT DONNER UN TUTO ET CE QUOI ON ECHANGE POUR CONNECTER A UNE BASE POSTGRE SQL

      Supprimer
    2. Bonjour,
      en fait c'est simplement le type base de la classe et des scripts. voir la video pour SQLserver on y voit le changement de base par rapport a la video de mySQL

      Supprimer
  63. Bonjour jour, j'ai essayer le code mais à l'exécution je reçois le message suivant "...sript php4wd.php non trouvé".
    comment résoudre ce problème svp!

    RépondreSupprimer
    Réponses
    1. regardez bien la video youtube
      je fais mes tests directement sous le navigateur ensuite je passe a windev
      et j'explique le message que vous avez .
      il ne peut pas joindre le script dans ce cas votre navigateur non plus normalement

      Supprimer
  64. Bonjour,

    merci pour ce très bau travail !

    Est-il possible d'avoir une démo sous WD, comment faire un select ?

    Je cherche des exemple, mais il y en a pas :-(

    Merci,

    Christophe

    RépondreSupprimer
    Réponses
    1. Bonjour,
      il faut prendre la video de la chaine youtube avec php4WD qui est la partie windev
      dans cette video on voit comment je fais un select pour rempir une table donc vous avez tout pour voir et modifier le code pour ne pas remplir la table mais faire autre chose
      je prepare une video pour l'utilisation des differentes fonctions

      Supprimer
  65. Bonsoir mes mais;
    merci bkk sur l'effort que vous presenter pour resoudre les problèmes proposé.
    pour j'ai meme proble que Mr. anynome concerne( Connexion impossible : script php4wd.php non trouvé). j'ai consulter presque tous les vidéo qui traite php4wd.php.
    merci de m'aide
    si possible d em'aide

    RépondreSupprimer
    Réponses
    1. envoi le script de connexion a ton serveur stp. A tu mis le fichier php4wd.php dans un répertoire sous ton serveur ?
      si oui spécifie le repertoire avant ex: "http://127.0.0.1:8000/collecte_web/php4wd.php";

      Supprimer
  66. Bonjour,

    Je suis en WDM 22 j'ai un souci dans la Méthode mySQLExec la ligne

    V_chaineResult = HTTPDonneRésultat()

    Message erreur de WDM 22 "Lors de la conversion d'un buffer vers une chaine Unicode, le nombre d'octets du buffer ne correspond pas..." donc la chaine (V_chaineResult = "")

    RépondreSupprimer
  67. extrait du buffer:

    ( ! ) Deprecated: Function set_magic_quotes_runtime() is deprecated in D:\wamp64\www\php4wd.php on line 21
    Call Stack
    #
    Time
    Memory
    Function
    Location
    1
    0.0004
    290848
    {main}( )
    ...\php4wd.php:0
    --DEBUTSQL--PHP4WDSEP
    ( ! ) Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in D:\wamp64\www\connect.php on line 169
    Call Stack
    #
    Time
    Memory
    Function
    Location
    1
    0.0004
    290848
    {main}( )
    ...\php4wd.php:0
    2
    0.0245
    357752
    func_connect_mysql( )
    ...\php4wd.php:121
    3
    0.0245
    357800
    mysql_connect ( )
    ...\connect.php:169
    ·Failed - err Connect: The server requested authentication method unknown to the client

    RépondreSupprimer
  68. bonjour ,j utilise WDM17, je me demande pourquoi il y a une sorte de boucle infinie et ca ne répond pas lors du test ,j'ai copier tout de votre code j'ai suivi les instruction ..mes pourquoi

    RépondreSupprimer
  69. enfin j'ai accès a mon base de donne 1000 merci pour votre aide

    RépondreSupprimer
  70. Merci, et pour les gens qui ont un probleme avec Android Support Library V4 voici la solution:
    https://www.youtube.com/watch?v=JCftY7WywU4

    RépondreSupprimer
  71. bonjour
    j'utilise windev mobile 18 et je suis en local
    mais ça ne marche pas

    merci

    RépondreSupprimer
  72. Pour le SQLServeur, la procédure est toujours pareil?

    RépondreSupprimer
  73. merci pour l'explication ci-dessous sa bien marché avec moi, je voudrais éventuellement savoir comment inserer les données ?

    RépondreSupprimer
  74. Ton lien pour utiliser la base de donnée n'est plus valide ou n'est pas liée

    RépondreSupprimer