• 16 Avril 2024, 21:31:26


Auteur Sujet: Problème mysql  (Lu 4066 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne maxya

  • *
  • Tueur en série
  • Messages: 158
    • Voir le profil
Problème mysql
« le: 29 Juillet 2014, 06:11:52 »
Salutation,

Je viens d'installé a_samp depuis ce lien: http://forum.sa-mp.com/showthread.php?t=56564
J'ai bien mit tous ce qui faut à sa place, ensuite je commence a scripter, je me connecte avec mysql_connect tous va bien mais quand je fais ca:

public OnPlayerConnect(playerid)
{
    new nom[MAX_PLAYER_NAME+1];
    new Query[256];
   
    GetPlayerName(playerid, nom, sizeof(nom));
    format(Query, sizeof(Query), "SELECT `Pseudo` FROM jinfo WHERE `Pseudo` = '%s'", nom);
    mysql_query(Query);
    mysql_store_result();

return 1;
}

J'ai 2 erreurs:

error 035: argument type mismatch (argument 1)
error 017: undefined symbol "mysql_store_result"

Je comprends pas j'ai bien lu la doc: http://wiki.sa-mp.com/wiki/MySQL#Plugin_functions

Merci d'avance,
Cordialement,
« Modifié: 02 Août 2014, 05:26:16 par maxya »

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Problème mysql
« Réponse #1 le: 29 Juillet 2014, 08:07:32 »
Salut, si tu veux utiliser ce plugin MySQL sans multithreading.

C'est à dire, faire comme tu le fais actuellement.

Faire un mysql_query, ensuite un mysql_store_result, puis traiter les données il faut que tu utilises la version R6 du plugin.

Sinon, tu es obligé de créer une callback qui traite les requêtes.



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne maxya

  • *
  • Tueur en série
  • Messages: 158
    • Voir le profil
Re : Problème mysql
« Réponse #2 le: 29 Juillet 2014, 08:26:59 »
D'accord et c'est quoi la meilleur solution des 2 ?

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Problème mysql
« Réponse #3 le: 29 Juillet 2014, 10:03:42 »
Tout dépend de la taille de tes requêtes, personnellement sur mon gamemode j'utilise la version R6 du plugin car les requêtes sont assez minces et n'arrêtent pas le serveur très longtemps.

Tout dépend de la configuration de ton serveur, ton MySQL est il sur la même machine que ton serveur sa-mp ?



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne maxya

  • *
  • Tueur en série
  • Messages: 158
    • Voir le profil
Re : Problème mysql
« Réponse #4 le: 30 Juillet 2014, 00:49:05 »
D'accord merci, donc je vais utilisé la R6 .

Hors ligne maxya

  • *
  • Tueur en série
  • Messages: 158
    • Voir le profil
Re : Problème mysql
« Réponse #5 le: 30 Juillet 2014, 16:10:23 »
Désolé du double post, mais j'ai encore un petit problème .

Je me suis connecté à la DB et j'ai crée un système d'inscription /connexion, seulement voila, je ne sais pas comment récupéré les informations qui sont dans ma DB comme l'argent du joueurs pour le mettre dans une variable .

Merci d'avance,

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3550
    • Voir le profil
Re : Problème mysql
« Réponse #6 le: 31 Juillet 2014, 21:33:42 »
Salut !

Tu auras besoin de ça:

- la fonction SELECT du SQL.
- Récupérer à l'aide de mysql_fetch_int(); (pour un integer, évidement)

Après tu stock dans ta variable (généralement PlayerInfo[playerid][mavariable])
Bonne soirée !


Adju ♥
(-_-)



Hors ligne maxya

  • *
  • Tueur en série
  • Messages: 158
    • Voir le profil
Re : Problème mysql
« Réponse #7 le: 31 Juillet 2014, 22:00:46 »
J'utilise la R6, dont j'ai fais:

if(mysql_fetch_row_format(message,"|"))
  {
      sscanf(message, "p<|>ds[32]s[32]iii", a, joueurinfo[playerid][jPseudo], joueurinfo[playerid][jPass], joueurinfo[playerid][jArgent], joueurinfo[playerid][jAdmin], joueurinfo[playerid][jMort]);
    }

et ça marche très bien, si vous trouvez que cette méthode n'est pas bien dîtes le moi svp .

Merci .

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Problème mysql
« Réponse #8 le: 01 Août 2014, 09:09:21 »
L'utilisation du sscanf a l'air bonne, par contre peut tu nous montrer ta requête SQL, ainsi que les colonnes de ta tables d'où tu sors ces informations ?



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne maxya

  • *
  • Tueur en série
  • Messages: 158
    • Voir le profil
Re : Problème mysql
« Réponse #9 le: 01 Août 2014, 18:17:53 »
la requête sql:

format(query, sizeof(query), "SELECT * FROM jinfo WHERE Pseudo = '%s' ", nom);

et:



Je viens de rajouté job et bombes donc, je les prends pas en considération pour l'instant .

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Problème mysql
« Réponse #10 le: 01 Août 2014, 19:55:53 »
Salut, vu que tu ne récupère pas toutes les colonnes, autant récupérer seulement ce dont tu as besoin.

Code: (pawn) [Sélectionner]
format(query, sizeof(query), "SELECT pass, argent, admin, mort FROM jinfo WHERE Pseudo = '%s'", nom);

Ensuite, tu as du voir que je ne récupère pas Pseudo, c'est logique car tu le connais déjà.

Donc tu as juste à changer, ça :

Code: (pawn) [Sélectionner]
if(mysql_fetch_row_format(message,"|"))
  {
      sscanf(message, "p<|>ds[32]s[32]iii", a, joueurinfo[playerid][jPseudo], joueurinfo[playerid][jPass], joueurinfo[playerid][jArgent], joueurinfo[playerid][jAdmin], joueurinfo[playerid][jMort]);
    }

en ça :


Code: (pawn) [Sélectionner]
if(mysql_fetch_row_format(message,"|"))
  {
format(joueurinfo[playerid][jPseudo, MAX_PLAYER_NAME, nom);
      sscanf(message, "p<|>s[32]ddd", joueurinfo[playerid][jPass], joueurinfo[playerid][jArgent], joueurinfo[playerid][jAdmin], joueurinfo[playerid][jMort]);
    }

et voilà tout.



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne maxya

  • *
  • Tueur en série
  • Messages: 158
    • Voir le profil
Re : Problème mysql
« Réponse #11 le: 01 Août 2014, 20:58:37 »
Merci Ssk, j'avait pas pensé à faire ça:

format(joueurinfo[playerid][jPseudo], MAX_PLAYER_NAME, nom);
Mais au début je fais TOUJOURS un code qui marche, ensuite je l'optimise  :wink: .