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

JavaScript Discussion :

sqlite3-winrt js requ�te dans une boucle


Sujet :

JavaScript

  1. #1
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    Juin 2014
    Messages
    15
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 15
    Par d�faut sqlite3-winrt js requ�te dans une boucle
    Bonjour � tous,

    dans mon application je cherche � ex�cuter une requ�te dans une boucle comme ci:

    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
    function testbc(){
     
        allalim = document.getElementById('retour').value;
        var taille = allalim.length;
        var nb = 0;
     
        console.log('1 : debut testbc');
     
        var dbPath = Windows.Storage.ApplicationData.current.localFolder.path + '\\aliments.sqlite'
        SQLite3JS.openAsync(dbPath)
        .then(function (db) {
            while (nb < 1) {
                var alim = allalim.substring(0, (taille - 1));
                return db.eachAsync('SELECT Nom, ID, COUNT (*) as compteur FROM aliments WHERE Nom LIKE ?', [alim + '%'], function (row) {
                    var id = row.ID
                    var nom = row.Nom
                    nb = row.compteur
     
                    console.log('2 : id = ' + id + ' nom = ' + nom + ' et nb = ' + nb);
     
                    var retour = 'id = ' + id + ' nom = ' + nom + ' et nb = ' + nb;
     
                    console.log('3 : retour = ' + retour);
     
                    document.getElementById('retour').value = retour;
                    taille = taille - 1;
                })
            };
            //.then(function () {
            db.close()
            //})
        })
    }
    le but est de r�cup�rer la cha�ne qui se trouve dans le champ texte 'retour' et de trouver une correspondance dans ma bdd. Pour �a je regarde si la cha�ne compl�te s'y trouve. Si ce n'est pas le cas, je retire le dernier caract�re de la cha�ne et je recommence. et ainsi de suite.

    Le probl�me est que dans tout les cas la boucle n'est ex�cut�e qu'une fois. M�me si nb = 0.

    Quelqu�un a-t-il une id�e pour me sortir de cette impasse?
    Merci

    PS:

    Pour info...


    La console JavaScript est attach�e et accepte des commandes.
    HTML1300: Une navigation s�est produite.
    Fichier*: default.html
    copy file: aliments
    1 : debut testbc
    SQLite3 version: 3.8.2 (2013-12-06 14:53:30 27392118af4c38c5203a04b8013e1afdb1cebd0d)
    2 : id = null nom = null et nb = 0
    3 : retour = id = null nom = null et nb = 0

  2. #2
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par d�faut
    il faut cherche dans la doc ou les forum consacr� � winrt
    ce n'est pas propre � js mais � la lib que tu utilise

    A+JYT

  3. #3
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    Juin 2014
    Messages
    15
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 15
    Par d�faut
    D�j� fais mais aucune info � ce sujet

  4. #4
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par d�faut
    je ne sais pas comment fonctionne SQLite3JS mais si j'en crois les noms de m�thode les appel sont asynchrone (eachAsync)
    je pense donc que ta boucle se termine avant que nb soit mis a jour.

    je proc�derais comme suit

    soit f() une fonction qui fait l'appel � db.eachAsync
    le callback de cet appel v�rifie le r�sultat de la requete.
    si le r�sultat est ok on s'arr�te sinon on rappel la fonction f()

    quelque chose comme (�crit � vu de nez plus pour le principe)
    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
     
    function f() {
         var alim = allalim.substring(0, (taille - 1));
         var result = db.eachAsync('SELECT Nom, ID, COUNT (*) as compteur FROM aliments WHERE Nom LIKE ?', [alim + '%'], function (row) {
                    var id = row.ID
                    var nom = row.Nom
                    nb = row.compteur
     
                    console.log('2 : id = ' + id + ' nom = ' + nom + ' et nb = ' + nb);
     
                    var retour = 'id = ' + id + ' nom = ' + nom + ' et nb = ' + nb;
     
                    console.log('3 : retour = ' + retour);
     
                    document.getElementById('retour').value = retour;
                    taille = taille - 1;
                    //Si nb est inférieur à 1 on boucle.
                    if (nb < 1) {
                       f();
                    }
                })
        return result;
     }
    en fait on boucle par r�cursivit� indirecte. f() appelle eachAsync qui appelera la callback

    A+JYT

  5. #5
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    Juin 2014
    Messages
    15
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 15
    Par d�faut
    Ok merci je vais essayer �� mais � quel moment tu ferme la db? dans la fonction o� apr�s la boucle?

    EDIT: o� dois-je mettre
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    var dbPath = Windows.Storage.ApplicationData.current.localFolder.path + '\\aliments.sqlite'
            SQLite3JS.openAsync(dbPath)

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    D�tails du profil
    Informations personnelles :
    �ge : 53
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Par d�faut
    Bonjour,

    Je viens de regarde cette discission et ai not� un point important dans le script initial en ligne 14.

    M�me dans une boucle, d�s lors que tu fais return ... tu sors de ta fonction (donc la boucle est interrompue).

  7. #7
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    Juin 2014
    Messages
    15
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 15
    Par d�faut
    Ha ha �a explique bien des choses. Mais alors comment puis-je faire �tant donner que ce return est obligatoire car il fait partie de l'acc�s � la bdd?

Discussions similaires

  1. [MySQL] Deux requ�tes dans une boucle
    Par stefanelle dans le forum PHP & Base de donn�es
    R�ponses: 10
    Dernier message: 25/02/2009, 10h41
  2. [MySQL] R�sultat de requ�te dans une boucle
    Par pcboy dans le forum PHP & Base de donn�es
    R�ponses: 2
    Dernier message: 09/01/2009, 16h55
  3. Comment �viter des requ�tes dans une boucle
    Par dam28800 dans le forum Langage
    R�ponses: 43
    Dernier message: 04/12/2008, 16h53
  4. Requ�te dans une boucle.
    Par flamby6969 dans le forum VBA Access
    R�ponses: 11
    Dernier message: 27/11/2007, 15h49
  5. Probl�me de requ�te dans une boucle avec ADOQuery
    Par Ekik dans le forum Bases de donn�es
    R�ponses: 8
    Dernier message: 14/05/2007, 16h07

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