lordv Posté(e) le 9 décembre 2010 Partager Posté(e) le 9 décembre 2010 salut tout le monde ! merci de m'aider :) j'ai cette classe var db_users = new function () { this.table = "users"; /**this.count**/ this.count = function (param) { var db = db_connect(); if (db) { var qry = "SELECT COUNT(*) FROM " + this.table + " "; if (param) qry += param; var nbr; db.query(qry, function (res, errorNo) { if (errorNo) Ape.log('Request error : ' + errorNo + ' : ' + this.errorString()); else { //Ape.log('Fetching ' + res.length + " Users : " + res); //renvoyer res a celui qui a appele db_users.count(); //nbr = res; } }); //Affichage de nbr } else Ape.log("no connect"); } /**this.get**/ this.get = function () { } /**this.getAll**/ this.getAll = function () { } } et j'aimerais pouvoir compter le nombre d'utilisateur de la table users ainsi var nbr_u = db_users.count(); j'aimerais pouvoir récupérer le contenu de la variable res mais le code n'est pas synchrone après avoir appelé db.query le code continu sans pour autant attendre le callback . existe t'il un moyen de renvoyer res a nbr_u ? merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Yangzebul Posté(e) le 9 décembre 2010 Partager Posté(e) le 9 décembre 2010 Ca devrait donner quelque chose du genre : var db_users = new function () { this.table = "users"; this.count = function (param, cb) { var db = db_connect(); if (db) { var qry = "SELECT COUNT(*) FROM " + this.table + " "; if (param) qry += param; var nbr; db.query(qry, function (res, errorNo) { if (errorNo) Ape.log('Request error : ' + errorNo + ' : ' + this.errorString()); else { cb(res); } }); } else Ape.log("no connect"); } this.get = function () {} this.getAll = function () {} }; var inst = new inst = new db_users(), nbr_u; inst.count("WHERE PROP='VALUE'", function(res){ nbr_u = res; }); PS : Bordel il fait chier le nouveau forum à faire de la merde avec les espaces !! Pas moyen de faire quelque chose de correct il retire et rajoute des espaces un peu partout ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
lordv Posté(e) le 9 décembre 2010 Auteur Partager Posté(e) le 9 décembre 2010 Cela marche merci ! PS : pas la peine de mettre cette ligne : var inst = new inst = new db_users(), nbr_u; une instance de db_users est automatiquement cree au chargement de la classe. encore merci ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Yangzebul Posté(e) le 9 décembre 2010 Partager Posté(e) le 9 décembre 2010 Derien. Effectivement, je n'avais pas vu le new à la déclaration. Et sinon la j'ai fait une belle boulette var inst = new inst = new db_users(), nbr_u; Il fallait bien sûr lire var inst = new db_users(), nbr_u; Sinon je pense que le mieux c'est que tu passe un callback en cas de succès et en cas d'erreur. Ou alors que tu remplace directement le callback que tu passe à la méthode query : mais dans ce cas tu ne peux pas forcément encapsuler ta logique de log, donc les deux se défendent. Lien vers le commentaire Partager sur d’autres sites More sharing options...
lordv Posté(e) le 9 décembre 2010 Auteur Partager Posté(e) le 9 décembre 2010 Salut !! oui j'avais compris pour l'instant j'essaye de maitriser le serveur comet . j'essaye de faire un exemple concret avant de tout nettoyer et mettre en place une architecture plus propre. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.