December 9, 201015 yr 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
December 9, 201015 yr 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 !
December 9, 201015 yr Author 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 !
December 9, 201015 yr 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.
December 9, 201015 yr Author 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.
Archived
This topic is now archived and is closed to further replies.