Comment Connecter une application Android avec une base de donnée Distante sous WM
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 ;) .
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.
Enfin la solution est là
RépondreSupprimerj'essaye cette solution ça marche
merciiiiiiiiiiiiiii :)))))
Génial... Et sur la version WM18, c'est pareil ? Merci pour ton savoir et ton partage ! On en veut encore ....pc
RépondreSupprimerMerci pour ce tutoriel.
RépondreSupprimerIl 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
Salam,
Supprimerpour 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
Bonjour
SupprimerMerci 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
Salam,
SupprimerEn 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.
Bonjour :)
SupprimerMê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 :( ..
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 :( ..
Supprimerd'ou peut venir le problème ?
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 !
RépondreSupprimerLes 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
Salam,
RépondreSupprimerJ'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...
salam,
RépondreSupprimertester ton adresse Http pour moi :
http://helouardi.hebergratuit.com/php4wd.php
il affiche normalement:
--DEBUTSQL--PHP4WDSEP
Je viens de me créer un compte sur hebergratuit
SupprimerIl 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.
Je viens de tester mon adresse d'hébergement pour le fichier http://webdev.free.fr/php4wd.php
RépondreSupprimeret j'obtiens exactement le même résultat que toi !
Salam sam,
RépondreSupprimerd'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..." ;)
Bonjour El Ouardi,
RépondreSupprimerEffectivement, 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.
Salam sam,
RépondreSupprimerest ce que tu as mis ça directement?:
v_retCode=monAccess:mySQLConnecte("http://helouardi.hebergratuit.com/php4wd.php","rober_10131991","pass","rober_10131991_db1")
cordialement...
salam,
RépondreSupprimerSi 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
Je vous ai envoyé les informations.
SupprimerBonjour, 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.
SupprimerBonjour.
Supprimerj'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)
salam Fad,
RépondreSupprimerPour information je travaille seulement avec c deux fichier php4wM et connect .php est ça marche trés bien...
Bonjour
SupprimerJ'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)
Ok! Je suis toujours en train d'essayer je vous tiens informer
RépondreSupprimerBonsoir en fait je me suis rendu compte que le programme boucle sur cette instruction:
RépondreSupprimerCAS 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?
Bonsoir
RépondreSupprimerTuto 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
Bonsoir
SupprimerAutant 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
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!!
RépondreSupprimerun bon developeur php pourait nous fixer ca sans probleme!!
il faut changer dans mySQLExec la ligne ci-dessous :
SupprimerResLancement=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
bonjour,
Supprimerla 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
Bonjour,
RépondreSupprimerje 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^^
Le problème ne s'arrange pas avec la manipe de Can yilmaz, toujours cette boucle sour WM 17.
RépondreSupprimerJe viens de tester avec la ligne
RépondreSupprimerv_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
moi je voudrai savoir si cette php class peu aussi functionne pour lenvironement IOS
RépondreSupprimerbonjour,
RépondreSupprimernormalement 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)
Bonjour,
RépondreSupprimerJ'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
Fatal error: Function name must be a string in C:\xampp\htdocs\windev\php4wd.php on line 121
RépondreSupprimerya pas de solution pour ça j'ai essayé toute les version xampp , wamp , Appserv , EasyPhp , rien a faire toujours la méme chose :(
Bonjour,
RépondreSupprimeré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.
Ca fonctionne ;) Merci Bcp
SupprimerMouad
Salut
RépondreSupprimerJe 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.
Re-bonjour,
RépondreSupprimerJe 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
Bonjour,
RépondreSupprimerQuelqu'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`;
Bonjour
RépondreSupprimerj 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
Bonjour j'ai le même probleme pour me connecter à une base de donnée locale mais quand je tente d'affiche l'URL
RépondreSupprimerhttp://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
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épondreSupprimerje répond a moi même , il faut vérifier la config , sa marche mnt 5/5
SupprimerBonjour,
RépondreSupprimerJ'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...
Puis je avoir un exemple de PHP4MW qui fonctionne vraiment?
Supprimerma config:
WM18
WampServer 5.3.5
Quel version de wamp server utiliser vous?
RépondreSupprimerMoi 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
J'ai le meme probleme que vous
RépondreSupprimerPHP 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?
Ce commentaire a été supprimé par l'auteur.
RépondreSupprimersalut les amis!
RépondreSupprimerj'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
Bonjour a tous , Manotexte pour moi c pareil que toi
SupprimerPareil pour moi.
SupprimerCa 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.
Idem à mon niveau qui peut nous aider à resoudre ce problème
RépondreSupprimerBojour, 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épondreSupprimerCe commentaire a été supprimé par l'auteur.
RépondreSupprimervoici 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.
SupprimerIl 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.
Bonjour,
RépondreSupprimeré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.
Bonjour,
SupprimerAprè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
Désolé, mais j'ai résolu le pb. Le nom du serveur avait une faute de frappe difficile à voir.
SupprimerAvec mes excuses pour ce post inutile.
JFV
Les requêtes sur base de donnée en local sont aussi fluide que par un acces ODBC par exemple ?
RépondreSupprimerMerci
Salam,
RépondreSupprimerMerci pour cette merveilleuse solution, je veux savoir est que c'est fonctionnel pour une application ios crée par windev mobile ?
bonsoir,
RépondreSupprimerje 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 .
Merci beaucoup pour ce tuto et les commentaires de QUALITE ! Vous avez surement sauvé mon projet bac
RépondreSupprimersalut 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épondreSupprimerJ'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épondreSupprimerBonjour !
RépondreSupprimerJe 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 ;)
Bonjour Hassan El ouardi,
RépondreSupprimermerci 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 !
Bonjour
RépondreSupprimerMerci 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
Je me réponds à moi même car j'ai trouvé la réponse sur une discussion du forum de PCSoft.
SupprimerPour 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
Hassane, Comment afficher des images provenant d'une base de donnée sur cette application android, par exemple les photos des produits. merci
RépondreSupprimerj'ai un probleme, lors je clic sur le bouton connextion un msg d'erreur est s'affiche
RépondreSupprimer"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
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épondreSupprimerCe commentaire a été supprimé par l'auteur.
RépondreSupprimerJe 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épondreSupprimermoi 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épondreSupprimerBonjour,
RépondreSupprimerDepuis Php5.5, la fonction mysql_connect est deprecated. Y a t-il une évolution des fichiers?
D'avance merci
Isaac Neewton
RépondreSupprimerimpossible 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
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.
RépondreSupprimerError n°1 connexion impossible. script PHP4WM.php non trouvé
Moh-srt Mohh28 novembre 2014 à 15:13
RépondreSupprimerj'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
sur windev mobile 20 ; boucle infinie lors de la connction :(
RépondreSupprimersvp dans le cas de mon base postgresql ou je met le ficher .php
RépondreSupprimerpas de reperatoire de wwww
svp comment connecte une base de donnée postgresql avec terminal mobile
RépondreSupprimeretant le createur de php4WM j'ai mis en ligne une chaine youtube qui contient les videos de php4WD et php4WM
RépondreSupprimerpour 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
ET CE QUE TU PEUT DONNER UN TUTO ET CE QUOI ON ECHANGE POUR CONNECTER A UNE BASE POSTGRE SQL
SupprimerBonjour,
Supprimeren 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
Bonjour jour, j'ai essayer le code mais à l'exécution je reçois le message suivant "...sript php4wd.php non trouvé".
RépondreSupprimercomment résoudre ce problème svp!
regardez bien la video youtube
Supprimerje 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
Bonjour,
RépondreSupprimermerci 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
Bonjour,
Supprimeril 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
Bonsoir mes mais;
RépondreSupprimermerci 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
envoi le script de connexion a ton serveur stp. A tu mis le fichier php4wd.php dans un répertoire sous ton serveur ?
Supprimersi oui spécifie le repertoire avant ex: "http://127.0.0.1:8000/collecte_web/php4wd.php";
merci bcp
RépondreSupprimerBonjour,
RépondreSupprimerJe 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 = "")
extrait du buffer:
RépondreSupprimer( ! ) 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
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épondreSupprimerenfin j'ai accès a mon base de donne 1000 merci pour votre aide
RépondreSupprimerMerci, et pour les gens qui ont un probleme avec Android Support Library V4 voici la solution:
RépondreSupprimerhttps://www.youtube.com/watch?v=JCftY7WywU4
bonjour
RépondreSupprimerj'utilise windev mobile 18 et je suis en local
mais ça ne marche pas
merci
Pour le SQLServeur, la procédure est toujours pareil?
RépondreSupprimermerci pour l'explication ci-dessous sa bien marché avec moi, je voudrais éventuellement savoir comment inserer les données ?
RépondreSupprimerTon lien pour utiliser la base de donnée n'est plus valide ou n'est pas liée
RépondreSupprimer