[Aide] Variable C++
Bonsoir à tous,
Je poste parce que je suis à deux doigts de casser mon écran, je ne comprends tout simplement par pourquoi le code suivant ne fonctionne pas correctement...

Le sLog.outString affiche la bonne valeur, mais dans la requête, c'est une autre histoire, tout ce que j'ai pu essayet n'a pas fonctionné : ca me sort 0 ...

[code=cpp]time_t t;
uint32 countplayer = GetActiveSessionCount();
sLog.outString("%d",countplayer);
CustomDatabase.PExecute( "INSERT INTO `online_players` (`timestamp`,`count`) VALUE (%d, %d)", time(&t), countplayer );
return;[/code]

EDIT :
Le code suivant fonctionne :
[code=cpp]time_t t;
uint32 countplayer = GetActiveSessionCount();
sLog.outString("%d",countplayer);
CustomDatabase.PExecute( "INSERT INTO `online_players` (`count`,`timestamp`) VALUE (%d, %d)", countplayer , time(&t) );
return;[/code]
C'est à rien y comprendre ...

Merci d'avance,
Cordialement,
MacWarrior.
Sa me rappelle certain bug de dev "bizard" de l'époque Hihi
Juste pour tester:
Code :
sLog.outString("%d, %d",time(&t), countplayer);
Qu'est ce que sa te retourne ?
Et le %d pour le time est t-il vraiment adapter ? Dans certains de mes vieux codes j'ai retrouvé ceci:

Code :
        time_t time_present_A2 = time(NULL);
        tm* aTm_present_A2 = localtime(&time_present_A2);
        CharacterDatabase.PExecute("UPDATE `morphau_gestions_all` SET `date_tp`= '%u' WHERE `id` = '1'",time_present_A2);
        sLog.outString("DEBUG tp debut H2 DATE %u", time_present_A2);
Citation :CustomDatabase.PExecute( "INSERT INTO `online_players` (`timestamp`,`count`) VALUE (%d, %d)", time(&t), countplayer );
Citation :CustomDatabase.PExecute( "INSERT INTO `online_players` (`count`,`timestamp`) VALUE (%d, %d)", countplayer , time(&t) );
Dans ta DB ,
la collone `count` est peut-être devant ta collone `timestamp`

C'est peut-être pourquoi quand tu mets count devant ca fonctionne tendis que si tu mets timestamp devant ca fonctionne pas :\
Dans une requête sql si tu met les nom des champs comme ici avant le VALUE l'ordre n'a aucune importance Clin
SI il a une importance quand même... il faut que entre les données de VALUES dans le même ordre que tu as définit tes champs...

réfléchis un peu si tu fais INSERT INTO matable (champ1, champ2) VALUES ('toto', tatat)
Faut bien savoir quelle valeur va dans champ1 et champ2 ...
Oui merci ... mais je parlais pas de çà, je parlais que l'ordre des champs données dans la requêtes est indépendants de celle de la structure même de la base Smile
Tu met ton counplayer dans un uint32, mais tu le traites comme un int.
Met un %u à la place du %d. Tu auras des résultats corrects.
Ah ok j'avais mal compris lol !!
(13-06-2011 18:26)Atikae a écrit :  Tu met ton counplayer dans un uint32, mais tu le traites comme un int.
Met un %u à la place du %d. Tu auras des résultats corrects.

Voir mon post précédent ...
Par un peu de manque de temps et aussi par oublie du topic, je n'avais pas encore répondu... toutes mes excuses Clin

Je testerai les diverses solutions fournies très prochainement.

P.S : Pour le %d, %u, je sais bien que cela ne correspond pas à un même type de variable, mais dans les faits, utiliser un %d au lieu d'un %u peut-il me causes des problèmes/ralentissements/etc...

Jusqu'ici je ne m'étais jamais cassé la tête à chercher quel type de variable j'utilisais, j'ai toujours mis %d pour un entier :/
Je pense devoir repasser sur toutes mes modifs très prochainement ... Clin

Cordialement,
MacWarrior.

Retourner en haut Accueil