IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windev Mobile Discussion :

Connexion à une base de données distante


Sujet :

Windev Mobile

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 37
    Points : 37
    Points
    37
    Par défaut Connexion à une base de données distante
    Salut, j'ai crée mon appli Android avec WindevMobile 20, elle utilise des fichiers compris dans l'analyse qui peuvent être mis à jour via une base de données (car j'ai aussi un site web héberger chez free qui utilise les même données).
    Pour la connexion à la base de données depuis l'appli j'utilise la classe c_Php4WM.wdc.

    En local :
    J'ai copier les fichiers connect.php, php4wd.php et phpzip.php dans le dossier C:\wamp\www avec le fichier connect.php correctement rempli.
    Et ça fonctionne très bien

    En ligne
    J'ai d'abord tenter de me connecter à ma base de données chez free, mais free n'autorise l’accès à ses bases qu'aux sites héberger chez free, donc pas aux appli mobile, sauf erreur de ma part !
    J'ai donc créer une base chez hebergratuit.com, mais hebergratuit.com n'autorise l’accès à ses bases qu'aux sites héberger chez eux, sauf erreur de ma part !
    Après moulte lecture j'ai crée un compte chez db4free.net mais déjà la navigation sur leur phpMyAdmin est très lente et de plus impossible d'établir la connexion avec cette fichue base de données depuis un site web, alors depuis depuis une appli !!!

    Mes questions :
    Existe t'il un service (gratuit ou vraiment pas chère) qui propose des bases de données accessible en ligne depuis un site free et un appli mobile ?
    Si oui, où doit on mettre les fichiers connect.php, php4wd.php et phpzip.php, il est dit à la racine du serveur. Selon moi en se connectant au serveur de la base de données via FTP, (exemple pour free si c'était possible : HOST = "sql.free.fr", USER = "mon_site_sans_extansion", PASS = "motdepasse", BASE = "mon_site_sans_extansion") et plaçant les fichiers à la racine, c'est bien ça ?

    Merci pour votre aide, ce forum est une mine d'or

  2. #2
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 961
    Points
    961
    Par défaut
    Citation Envoyé par eljeronimooo Voir le message

    Mes questions :
    Existe t'il un service (gratuit ou vraiment pas chère) qui propose des bases de données accessible en ligne depuis un site free et un appli mobile ?
    Si oui, où doit on mettre les fichiers connect.php, php4wd.php et phpzip.php, il est dit à la racine du serveur. Selon moi en se connectant au serveur de la base de données via FTP, (exemple pour free si c'était possible : HOST = "sql.free.fr", USER = "mon_site_sans_extansion", PASS = "motdepasse", BASE = "mon_site_sans_extansion") et plaçant les fichiers à la racine, c'est bien ça ?

    Merci pour votre aide, ce forum est une mine d'or
    Bonjour,
    je vous propose alwaysdata. l'accès distant à la base est toléré.
    J'ai déjà testé la classe php4wm sur android pour l'accès à une base mysql hébérgée chez eux, cela a bien fonctionné.
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 37
    Points : 37
    Points
    37
    Par défaut
    Merci pour l'info b_reda31, effectivement alwaysdata permet de faire gratuitement des base de données avec un accès distant (depuis d'autres site) par contre de son côté free bloque l'échange d'informations.

    Qu'à cela ne tienne j'ai fait migré mon site chez alwaysdata mais par contre impossible de récupérer les infos de la base de données sur mon appli.

    J'arrive à me connecter mais lorsque je souhaite afficher une ligne d'une de mes tables j'obtient soit 0 si c'est un entier soit une chaîne vide si c'est une chaîne. Alors que sur localhost mon code fonctionner à la perfection.

    Le fichier connect.php
    $serv = 'mysql1.paris1.alwaysdata.com';
    $user = 'mon_nom_utilisateur';
    $pass = 'mon_mdp';
    $base = 'ma_base';

    Le FTP
    J'ai placé les fichiers connect.php, php4wd.php et phpzip.php dans le dossier www (là où se trouve ma page index.html)

    Dans mon projet Windev
    serv = "http://adresse_de_mon_site/php4wd.php"
    user = "mon_nom_utilisateur"
    pass = "mon_mdp"
    base = "ma_base"

    J'ai entre autre essayer de mettre l'adresse ftp-mon_nom_utilisateur.alwaysdata.net (adresse du serveur pour la connexion FTP) dans la variable serv dans Windev et dans connect.php mais j'avais une erreur fatale

    Ai-je bien fait les choses ? Si non comment y remédier ? Si oui de quoi peut venir le problème ?

    Merci, encore

  4. #4
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 961
    Points
    961
    Par défaut
    Bonjour,
    je procède globalement de la même manière que vous, à quelques exceptions près :
    1. - En WM : Dans la declaration de la classe, je renseigne la valeur de la variable "K_PUBLIC_KEY"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    K_PUBLIC_KEY = "UNE_CLE";
    2. - Puis dans le fichier connect.php (en ligne) je renseigne tous les paramètres du serveur :
    en veillant à mettre la même valeur de clé (entre celle de la variable de la classe et la variable $PublicKey de php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $serv = 'mysql-monUser.alwaysdata.net';
    $user = 'monUser';
    $pass = 'MonMdP';
    $base = 'Nom_De_La_Base';
     
    $PublicKey = 'UNE_CLE';

    3. - Le code de connexion :
    Au niveau de WM voici le code que j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    n est un entier;
    MonAcces:TypeBase="MYSQL";
     
    n = MonAcces:mySQLConnecte("http://MonCompte.alwaysdata.net/php4wd.php","","","Nom_De_La_Base");
    Dans la fonction mySQLConnecte, je précise uniquement le nom du host ainsi que celui de la base, par contre je laisse "user" et "mot de passe" à vide (""). Ces paramètres sont déjà renseignés dans le fichier connect.php.

    4. - Exécution et parcours d'une requête : Dans le code suivant, j’exécute une requête de sélection sur la table "Table" (En assignant la requete par la valeur 1)
    ensuite un parcours est fait, sur toutes les lignes la requete, en ajoutant les 2 premières colonnes dans une table windev (Table_SansNom1)
    Il faut s'assurer de donner le même identifiant entre les procédure MySQLExec, MySQLPremier et mySQLSuivant qui est ici 1.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    n est un entier;
    n = MonAcces:mySQLExec("Select * from Table",1); // Execution de la requete en l'identifiant par la valeur 1.
     
    SI n = 1 ALORS
    	MonAcces:mySQLPremier(1); // Se position sur le premier enregistrement de la requete 1
    	TANTQUE PAS MonAcces:mySQLEnDehors
    		TableAjouteLigne(TABLE_SansNom1,MonAcces:mySQLCol(1,1),MonAcces:mySQLCol(1,2));
    		MonAcces:mySQLSuivant(1);
    	FIN
    FIN
    TableAffiche(TABLE_SansNom1);
    Ce bout de code fonctionne très bien chez moi. J'espère que cela pourra vous orienter.
    Bon courage

    PS/ Ce code a fonctionné sous WM 20 en configuration Android.
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»

  5. #5
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 961
    Points
    961
    Par défaut
    j'allais oublié!
    en déclaration globale du projet on a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MonAcces est c_PHP4WM;
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 37
    Points : 37
    Points
    37
    Par défaut
    Je vous remercie pour le temps passé et les explications fournies mais j'obtient toujours le même résultat...
    Même en faisant un copier/coller de votre code (en changeant les infos de connexion et le nom de la table)

    Selon moi, le problème viens de la connexion à la base de données online !

    J'ai remarqué que même si j'indique dans le fichier connect.php :
    $serv = toto;

    Lorsque je fais le test de connexion depuis Windev il me dit que je suis connecter
    Et lorsque j'affiche dans un Info() une des lignes j'obtient 0 pour un entier et "" pour une chaîne...
    En fait le test de connexion vérifie seulement la validité du liens vers : http://MonCompte.alwaysdata.net/php4wd.php

    Donc il est fort probable que je ne soit pas vraiment connecter à la base et que le code ne soit pas en question car en local tout fonctionnait très bien.

    Par contre la variable K_PUBLIC_KEY dans la déclaration de la classe avait une valeur différente du fichier connect.php. En voyant ça j'ai bien cru que vous aviez trouver la solution mais rien n'y fait. Par contre en local la différence entre les deux clé n'avait pas posé de problème, savez vous pourquoi ?

    Peut-être que c'est ma classe c_Php4WM.wdc qui est corrompue ou obsolète... Si quelqu'un peut fournir un lien, un lien testé et approuvé sur WindevMobile 20 avec le fichier c_Php4WM.wdc et les fichiers connect.php, php4wd.php et phpzip.php ce serait vraiment sympa.

    Sinon si vous avez d'autre idées ou des piste... je suis preneur.

    Encore un grand merci à ceux et celle qui prennent le temps de nous aidé, vous êtes des dieux

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 37
    Points : 37
    Points
    37
    Par défaut
    Voilà mes versions

    connect.php : PHP4WD 5.0.0.5

    phpzip.php : PHP4WD 5.0.0.2

    php4wd.php : PHP4WD 5.0.0.5

    c_Php4WM.wdc : 7.0.0.1 du 20/09/2014

  8. #8
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juin 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 57
    Points : 102
    Points
    102
    Par défaut
    bonjour ,

    il y a des tuto video
    vous seriez pourquoi le mySQLconnect renvoie vrai (c'est expliquer dans le tuto) en fait mySQL connecte ne verifie que l'acces au script ou son existance pas la connexion a la base puisque c'est le script php lui meme qui le fait)

    chez free si vous avez une base mySSQL alors il y a un espace web. quel interet de proposer une base mySQL fermée a l'exterieur si il n'y a pas un endroit pour poser du php et lire la base ?
    c vous devez avoir un espace ou vous pourrez poser vos script et la connexion sera en localhost ou 127.0.0.1 dans ce ceci.

    mais je vous invite a looker les tuto video :

  9. #9
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 961
    Points
    961
    Par défaut
    Toujours rien?
    Laisser moi votre adresse mail, j'essaierai,dès que j'ai un moment, de vous préparer un projet wm avec une base test chez always data.
    Vous pourrez par la suite nous faire part de ce qui clochait à votre niveau.
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»

  10. #10
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 961
    Points
    961
    Par défaut
    Toujours rien?
    Laisser moi votre adresse mail, j'essaierai,dès que j'ai un moment, de vous préparer un projet wm avec une base test chez always data.
    Vous pourrez par la suite nous faire part de ce qui clochait à votre niveau.
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 37
    Points : 37
    Points
    37
    Par défaut
    Ben en fait après plusieurs jours sur des forum, tuto et autres j'en suis arrivé à la conclusion que la classe PHP4WM n'était pas bien adapté à WinDevMobile 20 (celle que j'ai en tout cas), sur le site "officiel" http://www.sqlmanagerx.com/ on peut trouvé la classe pour les version 17,18,19 et 21 mais pas la 20. Heureusement en suivant un lien trouvé sur un tuto j'avais réussi à m'en décoté une qui marche mais uniquement en local.

    Donc au lieux de galérer pendant une semaine j'ai créer un substitue à classe.

    Mais si quelqu'un possède une version POUR WINDEV MOBILE 20 qui fonctionne (testée et approuvée) en ligne avec les trois fichiers (.php) je suis preneur.

    En attendant voici mon PHP4WM perso :

    Installation
    - On entre les infos de connexion dans le fichier bddconnect.php (fourni) ainsi qu'un code pour sécurisé le transfert et on le place dans notre site web
    - On déclare quelques variables globale (fournie dans BDD-online.txt)
    - On crée une procédure dans WinDev (fournie dans BDD-online.txt)
    - On appel la procédure pour faire les requêtes souhaitée (fournie dans BDD-online.txt)

    Le principe est simple : à l’exécution d'une requête
    - Windev envoi la requête sous forme d'URL ainsi qu'un code au fichier bddconnect.php
    - Si le code reçu est le même que celui contenu dans le fichier bddconnect.php alors ce dernier exécute la requête
    - Puis il afficher la réponse de la requête dans une page web classique
    - Windev récupère la réponse, la convertie en texte et la place dans une variable

    Les plus par rapport à PHP4WM :
    - Les accents sont compris automatiquement si votre base est en UTF8_general_ci.
    - L'installation est très très simple : copier le code fourni à l'endroit indiquer et copier et remplir le fichier php sur votre site.
    - Le code est bien commenter et très simple donc facile à modifier même pour un novice ( patient le novice )
    - OpenSource, vous êtes totalement libre de modifier ce code et de le distribué à votre guise. Merci de partager votre travail avec les utilisateurs de http://www.developpez.net .

    Les moins par rapport à PHP4WM :
    - La sécurité !!! Je ne suis pas hacker pour un sous, donc je ne peut pas sécurisé le processus au delà d'un simple code vérifié par correspondance (pas de cryptage !).
    - La rapidité !!! Les allez retour (invisible pour l'utilisateur) prennent du temps, pour une requêtes ou deux aucun soucis, mais pour le chargement d'une base de données de 73Ko compté 10 minutes. ( C'est 20-30 fois plus long que PHP4WM )
    - L'absence de certaines requêtes ! Celle qui fonctionne sont détaillée dans le fichier BDD - online et dans bddconnect.php. Je n'ai pas eu le temps de tester plus en profondeur mais il est possible que certaines requêtes fonctionne même si elle ne sont pas indiquée. Par exemple le "select * from table" ne marche pas, chaque requête renvoie une réponse il faut donc utiliser des boucle et des select count(*) pour parcourir une table entière

    Conclusion :
    J'espère que ce code pourra être utile à certains d'entre vous qui ont du mal à utilisé la classe PHP4WM.
    Le travail de Frédéric Emprin (PHP4WM) est beaucoup plus évolué et plus pro et je vous invite donc à envisager de choisir sa classe plutôt que ce code bidouillé en 4 heures, mais si vous ne parvenez pas à utiliser la classe il vous reste cette option.
    Bref... c'est un PHP4WM fait par un amateur, pour des amateurs Mais ça marche

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 37
    Points : 37
    Points
    37
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    /**************************************************************************************************************************
    ***************************************************************************************************************************
    Fichier : BDD - online // Auteur : Jérémy Deschamps // Version : 1.0
    ***************************************************************************************************************************
    **************************************************************************************************************************/
     
     
    /***********************************
    Copier dans l'initialisation du projet et remplir les variables : AdresseFichier, MonCode
    ************************************/
     
    GLOBAL
    //Connexion avec la base de données pour MAJ des bases de données
    SQLAdresseFichier, SQLCodeSecurité, SQLRequette sont des chaînes
    SQLAdresseFichier = "monsite.com" //Indiquer l'emplacement où se trouve le fichier bddconnect.php
    SQLCodeSecurité = "MonCode"  //Doit correspondre au fichier bddconnect.php
     
     
     
    /***********************************
    Créer une procedure pro_SQL et copier/coller ce code
    ************************************/
     
    PROCEDURE pro_SQL(SQLRequette)
    Requette_URL, TransitionURL, URL_codee, Resultat sont des chaînes
     
    //Contruit une requette au format URL
    Requette_URL = Remplace(SQLRequette," ","@")
     
    //Contruit l'URL à envoyer au fichier
    TransitionURL = "@_@"
    URL_codee = "http\\"+SQLAdresseFichier+"/bddconnect.php?infos="+SQLCodeSecurité+TransitionURL+Requette_URL
     
    //Connexion à la page Web
    ResLancement est un booléen = HTTPRequête(URL_codee)
    SI ResLancement = Vrai ALORS
    	//Récupère le contenu de la page Web
    	ResCode est une chaîne = AnsiVersUnicode(HTTPDonneRésultat())
     
    	//Extrait les balises <body> et </body>
    	ResCode_2 est une chaîne = Remplace(ResCode,"<body>","")
    	ResCode_3 est une chaîne = Remplace(ResCode_2,"</body>","")
     
    	//Enregistre le résultat dans une variable
    	Resultat = HTMLVersTexte(ResCode_3)
    FIN
    RENVOYER Resultat
     
     
    /***********************************
    Pour appeler la requette (exemples à modifier selon les besoin)
    ************************************/
     
    ////////////////////////////Récupere un élément
    SQLRequette = "select col_date from tab_version where col_id=1"
    VersionBdd est un entier = pro_SQL(SQLRequette)
     
    ////////////////////////////Récupere tous les éléments d'une table
    //Récupere le nombres de lignes dans une table
    SQLRequette = "select count(*) from tab_cartes"
    CompteCartes est un entier = pro_SQL(SQLRequette)
    //Faire une boucle de 1 à nombre de ligne
    POUR i = 1 A CompteCartes
    	//Récupere un élément
    	SQLRequette = "select col_id from tab_cartes where col_id="+i
    	id est une chaîne = pro_SQL(SQLRequette)
    	//Récupere le deuxième
    	SQLRequette = "select col_sexe from tab_cartes where col_id="+i			
    	sexe est une chaîne  = pro_SQL(SQLRequette)	
    	//Récupere le troisième...
    	SQLRequette = "select col_taille from tab_cartes where col_id="+i				
    	taille est une chaîne  = pro_SQL(SQLRequette)
    FIN	
     
    ////////////////////////////Efface un élément
    SQLRequette = "DELETE FROM tab_cartes WHERE col_id=1"
    pro_SQL(SQLRequette)
     
    ////////////////////////////Insere un élément
    SQLRequette = 'INSERT INTO tab_cartes VALUES("","bob","homme","1.75")'
    pro_SQL(SQLRequette)
     
    ///////////////////////////Met à jour un élément
    SQLRequette = "UPDATE table SET col_id='valeur 1', col_nom='valeur 2' WHERE col_id=1)"
    pro_SQL(SQLRequette)
     
    ///////////////////////////Vide une table
    SQLRequette = "TRUNCATE tab_cartes"
    pro_SQL(SQLRequette)
     
    ///////////////////////////Supprime une table
    SQLRequette = "DROP tab_cartes"
    pro_SQL(SQLRequette)

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 37
    Points : 37
    Points
    37
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    <?php
    /**************************************************************************************************************************
    ***************************************************************************************************************************
    Fichier : bddconnect.php // Auteur : Jérémy Deschamps // Version : 1.0
    ***************************************************************************************************************************
    **************************************************************************************************************************/
    ?>
    <body>
    <?php
    //Indiquer ici les informations de connexion à la base de données
    $DB_HOST = 'mysql-user.alwaysdata.net';
    $DB_USER = 'user';
    $DB_PASSWORD = 'mdp';
    $DB_NAME = 'ma_base';
    $CodeSecu = "MonCode"; //Indiquer un code qui doit être identique à celui indiquer dans WinDev
     
    //Désactive les messages d'erreur pour que l'utilisateur de l'appli voit uniquement les message indiquer ici
    ini_set("display_errors",0);error_reporting(0); //A activer pour débugger
     
    if(!isset($_GET['infos'])){
    	die("Erreur critique : la requête est dans un format inconnu !");
    } else {
    	//Ré-écrit les variables
    	$Variables_array = explode("@_@", $_GET['infos']);
    	$recup_code = $Variables_array[0];
    	$requette_brut = $Variables_array[1];
     
    	//Écrit un message d'erreur si il manque des éléments
    	if(!isset($Variables_array[0]) OR !isset($Variables_array[1])){
    		die("Erreur critique : il manque des éléments pour effectuer une requête SQL !");
    	}
     
    	//Bloque les requete si le code n'est pas le bon
    	if($recup_code <> $CodeSecu){die("Erreur critique : code de sécurité incorrect !");}	
     
    	//Contruit la requette au format SQL
    	$requette = str_replace("@"," ",$requette_brut);
     
    	//Connexion à la base de données
    	try {
    		$bdd = new PDO("mysql:host=".$DB_HOST.";dbname=".$DB_NAME, $DB_USER, $DB_PASSWORD);
    	} catch(PDOException $e) {
    		die("Erreur critique : impossible de joindre la base de données !");
    	}
     
    	//Fonction SQL INSERT (exemple : INSERT INTO tab_cartes VALUES("","bob","homme","1.75"))
    	//Fonction SQL UPDATE (exemple : UPDATE table SET col_id='valeur 1', col_nom='valeur 2' WHERE col_id=1)
    	//Fonction SQL DELETE (exemple : DELETE FROM tab_cartes WHERE col_id=1)
    	//Fonction SQL TRUNCATE (exemple : TRUNCATE tab_cartes)
    	//Fonction SQL DROP (exemple : DROP tab_cartes)
    	$requette_sql = $bdd->query($requette);
    	$requette_array = $requette_sql->fetch();	
     
    	//Fonction SQL SELECT COUNT(*) (exemple : SELECT COUNT(*) FROM tab_cartes)
    	//Fonction SQL SELECT (exemple : select col_id from tab_cartes where col_id=1)	
    	if(strstr($requette, "SELECT") OR strstr($requette, "select")) { 
    		echo $requette_array[0];
    	}
    }
    ?>
    </body>

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 37
    Points : 37
    Points
    37
    Par défaut
    Si vous avez des questions je tacherais d'y répondre, si vous souhaiter améliorer le truc et en faire partagé les autre c'est vraiment sympas aussi

    Par contre les remarques (notamment sur l'orthographe) si elle ne sont pas constructive n'apporte rien, c'est mal optimisé je sais mais je suis vraiment pas un pro ni en PHP ni en WLanguage...

    Du coup je met le sujet en RÉSOLU mais je suis toujours à la recherche de la vrai classe PHP4WM pour WinDev Mobile 20, à votre bon cœur

  15. #15
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 961
    Points
    961
    Par défaut
    Bravo et Merci de votre retour!
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»

  16. #16
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juin 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 57
    Points : 102
    Points
    102
    Par défaut
    pour la classe php4WM en version 20 (qui fonctionne parfaitement sauf pour les langue arabe , chinois et japonais)
    car windev mobile et windev 20 ne renvoie pas ce que ie ou firefox renvoie (voir les message sur la chaine youtube)

    donc comme ce n'est qu'une classe il faut prendre la version windev 19 o mobile 19
    windev va convertir la classe en windev 20 (les script php eux sont les meme en 17,18,19,20,21 voir bientot 22)

    pour ma part je l'utilise depuis 4 ou 5ans et j'ai pose mes question sur le forum du site officiel
    les reponses sont hyper rapide et Fred est tres reactif : pour les accents je n'ai jamais eu de soucis et depuis qu'il a rajouter dans le fichier php4WD.php la partie test (on peut changer la requete mis a part les seprateur on voit ce que windev va recevoir et donc tant que c'est pas bon c'est dans le script qu'il y a un souci (exemple pour ceux qui croyent qu'on est connecté alors que non) bref depuis cette partie on peut lorsqu'on passe sous windev etre sur que l'acces en php fonctionne

    et gros avantage c'est qu'il utilise differentes bases ou drivers de php (PDO, mySQLLi etc .....)
    il suffit de poser la question sur le forum = je suis sur que fred vous repondra rapidement en plus je sais pour lui avoir poser la question qu'il dispose des versionsz 14 a 21 en windev et mobile d'installer sur son ordinateur donc il peut voir exactement ce que ca donne dans toutes les version. sachant quand meme que comme c'est une classe on peut la mettre dans toutes les version superieur a la version de la classe. (j'imagine pas s'il devait maintenir chaque versions

    voila le mieux demandez au createur (moi c'est ce que j'ai fait et je le regrette pas)

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 37
    Points : 37
    Points
    37
    Par défaut
    kool-Paladin à la lecture de votre message j'ai entrepris une x eme tentative en reprennant tout depuis le debut.

    Mais malheureusement toujours le même résultat, avec les classes téléchargés sur le site officiel rien ne marche (ni en local, ni en ligne) par contre j'ai trouvé une classe en suivant un tuto qui fonctionne mais seulement en local.

    Quant je dis que ça marche pas, je veux dire que la connexion à la base depuis le fichier php4wd.php marche, la connexion depuis Windev à php4wd.php marche mais les requêtes renvois soit des chaînes vide soit 0.

    Je re-demande votre aide car ma solution (voir les messages précédent) convient pour le projet actuel mais pas pour des projets futurs, merci par avance. J'ai également créer un compte pour poster sur le site du créateur, je vous tient au courant... (cela prend quelque jour pour être inscrit)

    Le détail est expliqué plus bas (j'ai suivi à la lettre ce tuto :
    )
    La copie de la base de données, les fichiers php, la classe et mon projet sont ici (lien valable 1 mois) :

    http://78.210.104.213:14694/share/eS...e%20PHP4WM.rar

    Détails :

    J'ai créer une base de données nomée : base_test contenant une table (tab_test) qui contient 2 colonne col_id (int, auto incrémente) et col_texte (varchar, max 250)

    J'entre deux ligne dans ma table : (col_id = 1 ; col_texte = test 1) et (col_id = 2 ; col_texte = test 2)

    J'ai télécharger PHP4WD 7.0.0.6 pour Windev 18 ici : http://www.sqlmanagerx.com/websqlx/h...ex.php?page=17

    J'ai ouvert le fichier connect.php et indiquer :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $serv = 'localhost';
    $user = 'root';
    $pass = '';
    $base = 'base_test';
     
    $PublicKey = 'macle';

    J'ai ouvert le fichier php4wd.php et indiquer :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    /***********************************************************************************************/
    /* pour test du fichier en ligne de commande a mettre en commentaire avant passage a windev    */
    /***********************************************************************************************/
    if($_GET['test']=='OUI'){ 
    	$typeBase	='PDOMySQL';
     	$base		='base_test';
     	$cmds[] 	= 'SHOW TABLES FROM '.$base;
    	echo "version script : 8.0.0.0 du 27/11/2016";
    }

    J'ai copier les fichiers connect.php, php4wd.php et phpzip.php dans C:\wamp\www

    J'ai fait le test proposé dans le tuto en tapant http://localhost/php4wd.php?test=OUI et j'obtient :
    version script : 8.0.0.0 du 27/11/2016--DEBUTSQL--PHP4WDSEPTables_in_base_testPHP4WDSEPtab_testPHP4WDSEP--FINSQL--PHP4WDSEP

    J'ai créer un nouveau projet WindevMobile (sans analyse, nommé PHP4) dans lequel j'importe la classe c_Php4WM.wdc que je convertie en Windev 20

    Dans la Déclaration de PHP4WM j'ai mis :
    Dans l'Initialisation de mon projet j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    MonAccess est un c_Php4WM
    SI PAS MonAccess:mySQLConnecte("http://localhost/php4wd.php","","","base_test") ALORS
    	Erreur("Script non trouvé")
    SINON
    	Info("Script trouvé")
    FIN
    Puis je créer une fenêtre avec un bouton (nommé BTN_BOUTON) et une zone répétée (nommée ZR_SansNom1, rempie par programmation, 1 colonne)

    Je créer 2 libellé dans la zone répétée LIB_id et LIB_texte

    Dans le champs Clic de BTN_BOUTON j'indique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    vrequete est une chaîne = "select col_id,col_texte from tab_test"
    vindice est un entier
     
    SI MonAccess:mySQLExec(vrequete,1) ALORS
    	TANTQUE MonAccess:mySQLFetch(1)
    		vindice = ZoneRépétéeAjouteLigne(ZR_SansNom1)
    		SI vindice>0 ALORS
    			ZR_SansNom1[vindice].LIB_id = MonAccess:mySQLLitColParNom(1,"col_id")
    			ZR_SansNom1[vindice].LIB_texte = MonAccess:mySQLLitColParNom(1,"col_texte")
    		FIN
    	FIN
    SINON
    	Erreur("Erreur de co")
    FIN

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 37
    Points : 37
    Points
    37
    Par défaut
    Problème enfin réglé, une version pour Windev 20 est maintenant disponible sur le site http://www.sqlmanagerx.com/

    Et pour les problèmes d'accents :
    1 - Metre le Fichier de données en : Chaîne unicode

    2 - Dans la classe dans mySQLExec
    Remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	//On récupère un fichier zip crypté
    	SI :PocketPC ALORS
    		V_chaineResult = AnsiVersUnicode(HTTPDonneRésultat())
    	SINON
    		SI PAS :UTF8Mode 	ALORS V_chaineResult = AnsiVersUnicode(HTTPDonneRésultat(httpRésultat))
    		SI :UTF8Mode 		ALORS v_chaineResult =  HTTPDonneRésultat(httpRésultat)
    	FIN
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	//On récupère un fichier zip crypté
    	SI :PocketPC ALORS
    		V_chaineResult = AnsiVersUnicode(HTTPDonneRésultat())
    	SINON
    		SI PAS :UTF8Mode 	ALORS V_chaineResult = AnsiVersUnicode(HTTPDonneRésultat(),alphabetAnsi)
    		SI :UTF8Mode 		ALORS V_chaineResult =  HTTPDonneRésultat(httpRésultat)
    	FIN

  19. #19
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juin 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 57
    Points : 102
    Points
    102
    Par défaut
    Bonjour,

    comme quoi il a fait vite pour faire les modif.
    je viens de recevoir les message de maj (il a mis effectivement les classes et script a jour pour avoir 19,20,et21 en windev et windev mobile
    mais il a aussi repondu a ton message sur le forum

    bonjour,

    je viens d'ajouter le membre alphabet pour gerer cela au niveau de la classe sans changer le code

    [8.5.0.0]
    Ajout du membre globale :alphabet pour pouvoir le changer a lavolée et pour la classe et surtout la methode mySQLExec il suffit de position le membre par
    MonAcces:alphabet = AlphabetAnsi
    par exemple
    cette modif est aussi dans la version 9.0.0.0 pour windev 21


    essayer en en mettant dans votre code au niveau de la connexion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    MonAcces est un c_Php4WM
     
    MonAcces:TypeBase = "PDOMySQL"
    MonAcces:CryptRetour = Faux
    MonAcces:alphabet = alphabetAnsi
     
    SI PAS MonAcces:mySQLConnecte("http://127.0.0.1/php4wd.php","","","tests") ALORS
        Erreur(MonAcces:ErreurText)
        FinProgramme()
    FIN
    vous devriez avoir ainsi une classe qui correspond a votre demande avec le meme code pour tout le monde
    duc coup j'ai telecharger les version recompiler et hop tout fonctionne.
    j'ai vu aussi qu'il a rajouter les methode mySQLtable dans la version mobile qui n'etaait pas possible avant sur les anciennes version de windev mobile. coule plus pratique pour remplir les table avec 1 seule ligne

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Connexion à une base de données distante
    Par fabpeden dans le forum Outils
    Réponses: 2
    Dernier message: 27/06/2007, 09h04
  2. Connexion à une base de donnée distante
    Par loicbar dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/04/2007, 20h57
  3. [ODBC] Connexion à une base de données distante
    Par jenga dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 21/04/2006, 15h42
  4. [VB6]connexion à une base de données distant via ADO
    Par alaminabil1 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 03/02/2006, 12h11
  5. Delphi Connexion à une base de donnée distante par TCP/IP
    Par viecel dans le forum Bases de données
    Réponses: 1
    Dernier message: 12/01/2005, 19h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo