Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] Autocomplétion alimenté par une BDD MySQL

    16 juillet 2012 à 23:00:38

    Bonjour à tous,

    je vous explique mon problème, pour le moment j'ai une autocomplétion qui fonctionne de la sorte:


    //On récupère le tableau de String crée dans le fichier string.xml
            listeAutoCompletion = getResources().getStringArray(R.array.tableau);
            
            //On récupère l'AutoCompleteTextView que l'on a crée dans le fichier main.xml
            autoComplete = (AutoCompleteTextView)findViewById(R.id.autocompletion);
            
            //On crée la liste d'autocomplétion à partir de notre tableau de string appelé tutoVideo
            //android.R.layout.simple_dropdown_item_1line permet de définir le style d'affichage de la liste
            ArrayAdapter adapter = new ArrayAdapter (this, android.R.layout.simple_dropdown_item_1line, listeAutoCompletion);
            
            //On affecte cette liste d'autocomplétion à notre objet d'autocomplétion
            autoComplete.setAdapter(adapter);
    



    Voici le code XML de strings.xml associé:


    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    
    	<string-array name="tableau">
    		<item>Trucs</item>
    		<item>Salut</item>
    		<item>Voila</item>
    		<item>bonjour</item>
    		<item>chute</item>
    		//etc...
    	</string-array>
    
    </resources>
    



    Le problème c'est qu'à chaque fois que je voudrais alimenter mon autocomplétion avec d'autre terme je vais devoir proposer à l'utilisateur une mise à jour de l'application, ce qui n'est pas vraiment souhaitable.

    Donc voilà je ne sais pas trop comment m'y prendre.
    • Partager sur Facebook
    • Partager sur Twitter
      18 juillet 2012 à 18:51:02

      Salut,

      tu n'utilises pas une base de données SQLite dans ton application? Tu peux sauvegarder toutes tes données dans la base de données et ensuite les utiliser pour ton composant d'auto complétion. C'est plus simple.
      • Partager sur Facebook
      • Partager sur Twitter
        18 juillet 2012 à 23:38:32

        Non je n'utilise pas SQL Lite comme c'est une application qui est basé sur une base de données d'un site Web sous Prestashop.

        Mais tous comme tu me conseille de le faire en stockant les informations dans une BDD SQL Lite, pourquoi je pourrais pas le faire avec MySQL ? Car en faite le but est d'utiliser la base de données du site internet, sinon ça fait deux bases de données à mettre à jour.

        Qu'en penses tu ?

        Tu utilises quoi pour gérer tes bases de données SQL Lite ?
        • Partager sur Facebook
        • Partager sur Twitter
          19 juillet 2012 à 10:45:26

          Si tu as déjà une base de données MySQL pour ton site web, tu peux la réutiliser dans ton application Android. Mais est-ce que tu as besoin de stocker ces données sur la base de données de ton site web? Sachant que SQLite est le seul SGBD que tu peux utilises sur Android en tant que base de données interne. L'avantage de SQLite, c'est que c'est léger et performant pour un petit smartphone car tu dois le savoir un smartphone n'a pas la puissance d'un serveur pour exécuter des requêtes SQL. Ensuite si tu utilises la base de données de ton site web, tu vas être dépendant d'une connexion internet sur ton smartphone ou tablette alors qu'avec une base de données SQLite non. Un autre avantage si tu n'as pas besoin de stocker tes données sur ton site web, c'est que faire des deux base de données bien distinctes : une pour ton appli et l'autre pour ton site web, ça évite de tout mélanger.

          Après tout dépend de ce que tu as à stocker dans la base de données si tu peux nous en dire un peu plus.

          J'espère que je me suis fait comprendre. :)
          • Partager sur Facebook
          • Partager sur Twitter
            19 juillet 2012 à 11:06:01

            Le site web est semblable à des sites comme lafourchette.com etc... ça gère des restaurants .

            Je ne vois donc pas comment je pourrais ne pas utiliser une BDD MySQL pour récupérer les mêmes informations sur l'application mobile que sur le site internet.

            Que me conseilles tu ? (C'est des applications ou il faut quand même une connexion internet obligatoire... Détection de localisation etc...)

            • Partager sur Facebook
            • Partager sur Twitter
              19 juillet 2012 à 11:20:35

              Si les informations que tu veux sur ton application sont exactement les mêmes que sur ton site web, il vaut mieux utiliser la base de données de ton site web. Après si tu veux ajouter des données spécifiques à ton application Android, je pense qu'il vaut mieux faire deux bases de données différentes : la base de données de ton site web que tu as surement déjà créée et une base de données interne SQLite utilisable que sur ton téléphone Android. Après comme je ne sais pas exactement ce que fais ton application et ton site web, je ne peux pas mieux te conseiller. Je t'ai dit les deux possibilités en tout cas.

              Attends d'autres avis, je ne suis pas un professionnel :)
              • Partager sur Facebook
              • Partager sur Twitter
                19 juillet 2012 à 11:29:23

                Bonjour,

                Citation

                Le problème c'est qu'à chaque fois que je voudrais alimenter mon autocomplétion avec d'autre terme je vais devoir proposer à l'utilisateur une mise à jour de l'application, ce qui n'est pas vraiment souhaitable.



                Pourquoi ?

                PS : J'ai rajouté le tag (encore) dans le titre de ton topic. Merci de faire attention, ce n'est pas la première fois.
                • Partager sur Facebook
                • Partager sur Twitter
                Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.
                  19 juillet 2012 à 11:40:23

                  Quand tu dis tag dans le titre c'est le "[Android]" ? Si oui je l'avais mis.

                  Ben de la manière dont je gère actuellement l'autocomplétion (fichier xml) je met les valeurs en dur, il n'y a aucune intéraction avec une BDD, donc quand je vais devoir ajouter quelques mots dans l'autocomplétion je vais devoir proposer une mise à jour à l'utilisateur s'il souhaite avoir les nouveaux mots dans l'autocomplétion.

                  Riomika j'ai compris ce que tu as voulu dire, je t'en remercie. Cependant SQL Lite est une BDD interne, quand je l'actualise ça l'actualise également chez les utilisateurs sans devoir mettre l'application à jour ? Tu utilises quel SGBD pour SQL Lite ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    19 juillet 2012 à 11:44:14

                    Citation : italia57

                    Quand tu dis tag dans le titre c'est le "[Android]" ? Si oui je l'avais mis.


                    Nop, je l'ai rajouté moi.

                    Citation : italia57

                    Ben de la manière dont je gère actuellement l'autocomplétion (fichier xml) je met les valeurs en dur, il n'y a aucune intéraction avec une BDD, donc quand je vais devoir ajouter quelques mots dans l'autocomplétion je vais devoir proposer une mise à jour à l'utilisateur s'il souhaite avoir les nouveaux mots dans l'autocomplétion.


                    Pourquoi ne pas chercher les informations sur ta base de données distantes ? Quitte à faire un système de cache par la suite dans ta base de données SQLite.
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.
                      19 juillet 2012 à 12:44:19

                      Ou alors simplement comment puis-je faire pour créer une BDD SQL Lite contenant une table ou je gère les infos de l'autocomplétion. Une fois les infos récupérés comment puis je les ajouter dans le fichier xml.

                      Je ne connais vraiment très mal SQL Lite, vous utilisez quel SGBD ?
                      • Partager sur Facebook
                      • Partager sur Twitter
                        19 juillet 2012 à 13:56:23

                        L'idée n'est pas de les ajouter dans ton fichier XML mais de retirer de ta base de données SQLite une liste de String pour alimenter ton autocompletation. Cependant, il faut remplir ta base de données interne avec des informations que tu trouveras, si j'ai bien compris, sur ta base de données distantes.

                        Mais là, ce n'est que si tu veux faire un système de cache. Tu peux simplement interroger ta base de données distantes qui te renvoi un json que tu parse pour récupérer une liste de String que tu affiches. Le "seul" défaut c'est que tu es dépendant d'une connexion internet.

                        Une autre solution c'est d'utiliser ton fichier XML si ton utilisateur n'a pas de connexion et faire des requêtes au serveur s'il en a une.
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.
                          19 juillet 2012 à 14:13:19

                          Je récupère le tableau avec les String de la BDD, mais comment je peux faire pour ce que je récupère alimente l'autocomplétion ?

                          Les applications comme lequipe, eurosport etc.. font bien des connexions à MySQL non ?
                          • Partager sur Facebook
                          • Partager sur Twitter
                            19 juillet 2012 à 15:20:39

                            Pour reprendre ce que préconisait AndroWiiid, vu que tu as un serveur qui héberge une base de données MySQL, c'est de passer par une API (un script PHP par exemple) que tu appelleras via une requête HTTP contenant du JSON qui servira à passer certains paramètres.

                            Le script PHP fera la requête SQL appropriée et te renverras les données en format JSON que tu traiteras alors dans ton application.
                            Deux exemples (je ne sais pas s'ils sont bien fait mais ils ont le mérite de poser les bases): http://stackoverflow.com/questions/383 [...] mysql-results et http://eosrei.net/articles/2011/12/bas [...] tresponse-php.

                            Un dernier en Français avec Android: http://mobilerie.blogspot.fr/2012/02/t [...] json-php.html
                            • Partager sur Facebook
                            • Partager sur Twitter
                              19 juillet 2012 à 15:50:42

                              On a du mal se faire comprendre, car tous ça j'ai su faire.

                              Une fois que j'ai les infos dans mon Java (c'est à dire que j'ai récupéré les infos de la BDD par une requête PHP et que j'ai codé les infos en JSON). Mais comment je fais pour alimenter l'autocomplétion avec ces infos ?
                              • Partager sur Facebook
                              • Partager sur Twitter
                                19 juillet 2012 à 16:05:15

                                Citation : italia57

                                On a du mal se faire comprendre, car tous ça j'ai su faire.

                                Une fois que j'ai les infos dans mon Java (c'est à dire que j'ai récupéré les infos de la BDD par une requête PHP et que j'ai codé les infos en JSON). Mais comment je fais pour alimenter l'autocomplétion avec ces infos ?



                                Tu fais un array de String par exemple.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  19 juillet 2012 à 16:13:36

                                  Citation : italia57

                                  On a du mal se faire comprendre, car tous ça j'ai su faire.


                                  Ouais, ça doit être ça. Désolé.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    19 juillet 2012 à 21:46:37

                                    Je vais tester ça, si ca fonctionne je passerai le topic en résolu
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    [Android] Autocomplétion alimenté par une BDD MySQL

                                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                    • Editeur
                                    • Markdown