• 04 Juin 2026, 04:09:04


Auteur Sujet: [Résolu] Requêtes SQL  (Lu 1619 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
[Résolu] Requêtes SQL
« le: 17 Novembre 2011, 21:53:33 »
Bonsoir, j'aimerais actualiser les clés des joueurs qui se connecte, car si l'id de leurs véhicule change, ils perdraient leurs clés. Pour cela, j'ai fait un petit script, qui ne marche pas. ( héhé (a) ) Je ne connais pas du tout le SQL, et j'essaie de me dépatouiller pour pouvoir apprendre, mais j'ai pas de quoi m'appuyer pour faire ce système.
Voila mon code :

function UpdatePlayerCarKeys(playerid)
{
    new sql[100], row[256], val[3][64];
format(sql, sizeof(sql), "SELECT * FROM players_cars WHERE owner='%s'", GetName(playerid));
// SELECT * FROM log_casier WHERE player='%s' AND type='Suspicion' ORDER BY id DESC LIMIT 1
mysql_query(sql);
mysql_store_result();
mysql_fetch_row(row);
rapport_sendMsg(COLOR_SERVER, row);
if(mysql_num_rows() > 0)
{
        split(row, val, '|');
        if(strval(val[0]) != 0)
        {
       PlayerInfo[playerid][pPcarkey] = strval(val[0]);
}
else { PlayerInfo[playerid][pCarKey3] = 9999; }
if(strval(val[1]) != 0)
        {
  PlayerInfo[playerid][pCarKey2] = strval(val[1]);
}
else { PlayerInfo[playerid][pCarKey3] = 9999; }
if(strval(val[2]) != 0)
        {
       PlayerInfo[playerid][pCarKey3] = strval(val[2]);
}
else { PlayerInfo[playerid][pCarKey3] = 9999; }
}
mysql_free_result();
}

Comme vous pouvez, le voir et ces logiques, je l'ai vu qu'après, il ne charge qu'une ID et les autres passe à 0, car le split ressort forcement rien, sauf pour la première qu'il trouve. Merci de votre aide. :)
« Modifié: 21 Novembre 2011, 21:06:55 par chneubeul »

Hors ligne Winklevows

  • *
  • Tueur
  • Messages: 64
    • Voir le profil
Re : [Demande Aide] Requêtes SQL
« Réponse #1 le: 18 Novembre 2011, 19:47:06 »
il ne charge qu'une ID [...]
J'ai pas trop compris ce que tu voulais, mais là il faut faire un while, par exemple:
mysql_query(sql);
mysql_store_result();
if(mysql_num_rows() != 0)
{
new Date[25], Pseudo[MAX_PLAYER_NAME], Raison[128];

while(mysql_retrieve_row())
{
mysql_fetch_field_row(Pseudo,"Pseudo");
mysql_fetch_field_row(Raison,"Raison");
mysql_fetch_field_row(Date,"Date");
}
}
mysql_free_result();
(J'utilise le plugin de BlueG, donc remplace les fonctions par les fonctions équivalente de ton plugin si tu n'utilises le même plugin)

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : [Demande Aide] Requêtes SQL
« Réponse #2 le: 19 Novembre 2011, 23:27:51 »
Quel plugin utilise-tu ?

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : [Demande Aide] Requêtes SQL
« Réponse #3 le: 21 Novembre 2011, 21:06:21 »
Bonsoir,

désolé je pouvais pas répondre avant :p

j'ai finis mon code et je l'ai tester il marche à merveilles. Merci Winklevows, buvons à ta santé !  :cheers

Voila le code pour les p'tits curieux en soif de connaissance :)

function UpdatePlayerCarKeys(playerid)
{
    new sql[100], count = 0;
format(sql, sizeof(sql), "SELECT id FROM players_cars WHERE owner='%s'", GetName(playerid));
mysql_query(sql); // on execute la fonction
mysql_store_result(); // on expose les résultats
if(mysql_num_rows() > 0)
{
    while(mysql_retrieve_row()) // ici on cherche à savoir si il existe d'autre entrée
    {
        new result[50];
        if(!count) // le count sert à save variable par variable
        { mysql_fetch_field_row(result, "id"); PlayerInfo[playerid][pPcarkey] = strval(result); }
else if(count)
{ mysql_fetch_field_row(result, "id"); PlayerInfo[playerid][pCarKey2] = strval(result); }
else if(count == 2)
{ mysql_fetch_field_row(result, "id"); PlayerInfo[playerid][pCarKey3] = strval(result); }
count++;
}
}
mysql_free_result(); // on vide la mémoire
// on ajuste la valeur des variables, pour les véhicules n'ont trouver 9999 étant la valeur par défaut
if(!PlayerInfo[playerid][pPcarkey]) { PlayerInfo[playerid][pPcarkey] = 9999; }
if(!PlayerInfo[playerid][pCarKey2]) { PlayerInfo[playerid][pCarKey2] = 9999; }
if(!PlayerInfo[playerid][pCarKey3]) { PlayerInfo[playerid][pCarKey3] = 9999; }
}

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : [Résolu] Requêtes SQL
« Réponse #4 le: 21 Novembre 2011, 21:40:28 »
Ton code peut être résumé à ceci.

function UpdatePlayerCarKeys(playerid)
{
    new sql[100],
        count;
   
    format(sql, sizeof(sql), "SELECT `id` FROM `players_cars` WHERE `owner` = '%s'", GetName(playerid));
    mysql_query(sql);
    mysql_store_result();
   
    if (mysql_num_rows() > 0)
        while (mysql_retrieve_row())
        {
            new result[50];
           
            mysql_fetch_field_row(result, "id");
           
            if (!(count))
                PlayerInfo[playerid][pPcarkey] = strval(result);
            else
                PlayerInfo[playerid][pCarKey2] = strval(result);
           
            count++;
        }
   
    mysql_free_result();
   
    if (!(PlayerInfo[playerid][pPcarkey]))
        PlayerInfo[playerid][pPcarkey] = 9999;
   
    if (!(PlayerInfo[playerid][pCarKey2]))
        PlayerInfo[playerid][pCarKey2] = 9999;
   
    if (!(PlayerInfo[playerid][pCarKey3]))
        PlayerInfo[playerid][pCarKey3] = 9999;
}