GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Dark4ng3L le 02 Décembre 2009, 13:08:23

Titre: [PAWN-SQL] Galère...
Posté par: Dark4ng3L le 02 Décembre 2009, 13:08:23
Hellow !
j'essaye de passé mon système de compte en SQL (en me basant sur Radmin)
donc voili voilou ca marche pas

Code :
<?php // pour metre les couleurs

public OnPlayerRegister(playeridpassword[])
{
if(IsPlayerNPC(playerid)){ return 1; }
if(IsPlayerConnected(playerid))
{
    new PlayerName[256];
new RPassword[60];
new string[256];
GetPlayerName(playeridPlayerNamesizeof(PlayerName));
samp_mysql_real_escape_string(password[], RPassword);
if(MySQLCheckUserExistance(playerid))
{
    format(stringsizeof(string), "ERREUR: le compte %s existe déjà. faites /login [password]"PlayerName);
    SendClientMessage(playeridCOLOR_REDstring);
    return 1;
}
format(querysizeof(query), "INSERT INTO `users` (reg_id, Nom, Key, Level, AdminLevel, DonateRank, UpgradePoints, ConnectedTime, Registered, Sex, Age, Origin, CK, Muted, Respect, Money, Bank, Crimes, Kills, Deaths, Arrested, WantedDeaths, Phonebook, LottoNr, Fishes, BiggestFish, Job, Paycheck, HeadValue, Jailed, JailTime, Materials, Drugs, Leader, Member, FMember, Rank, Char, ContractTime, DetSkill, SexSkill, LawSkill, MechSkill, JackSkill, CarSkill, DrugsSkill, CookSkill, FishSkill, pSHealth) VALUES(0, \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", 750, 10000, \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", 50.0)",
 PlayerNameRPassword,PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pAdmin],PlayerInfo[playerid][pDonateRank],PlayerInfo[playerid][gPupgrade],PlayerInfo[playerid][pConnectTime],
 PlayerInfo[playerid][pReg],PlayerInfo[playerid][pSex],PlayerInfo[playerid][pAge],PlayerInfo[playerid][pOrigin],PlayerInfo[playerid][pCK],PlayerInfo[playerid][pMuted],PlayerInfo[playerid][pExp],
 PlayerInfo[playerid][pCrimes],PlayerInfo[playerid][pKills],PlayerInfo[playerid][pDeaths],PlayerInfo[playerid][pArrested],PlayerInfo[playerid][pWantedDeaths],PlayerInfo[playerid][pPhoneBook],
 PlayerInfo[playerid][pLottoNr],PlayerInfo[playerid][pFishes],PlayerInfo[playerid][pBiggestFish],PlayerInfo[playerid][pJob],PlayerInfo[playerid][pPayCheck],PlayerInfo[playerid][pHeadValue],
 PlayerInfo[playerid][pJailed],PlayerInfo[playerid][pJailTime],PlayerInfo[playerid][pMats],PlayerInfo[playerid][pDrugs],PlayerInfo[playerid][pLeader],PlayerInfo[playerid][pMember],
 PlayerInfo[playerid][pFMember],PlayerInfo[playerid][pRank],PlayerInfo[playerid][pChar],PlayerInfo[playerid][pContractTime],PlayerInfo[playerid][pDetSkill],PlayerInfo[playerid][pSexSkill],
 PlayerInfo[playerid][pBoxSkill],PlayerInfo[playerid][pLawSkill],PlayerInfo[playerid][pMechSkill],PlayerInfo[playerid][pJackSkill],PlayerInfo[playerid][pCarSkill],PlayerInfo[playerid][pDrugsSkill],
 PlayerInfo[playerid][pCookSkill],PlayerInfo[playerid][pFishSkill]
);
samp_mysql_query(query);
format(querysizeof(query), "SELECT `reg_id` FROM `users` WHERE `name` = '%s'"PlayerName);
samp_mysql_query(query);
samp_mysql_store_result();
SendClientMessage(playeridCOLOR_YELLOW"Compte crée , merci à vous, vous pouvez désormais vous loggué (/login [password]).");
}
return 1;
}
Erreurs:
C:\Atlanta-RP\SAMP\samp0.3a\gamemodes\larp.pwn(10823) : error 029: invalid expression, assumed zero
C:\Atlanta-RP\SAMP\samp0.3a\gamemodes\larp.pwn(10829) : error 075: input line too long (after substitutions)
C:\Atlanta-RP\SAMP\samp0.3a\gamemodes\larp.pwn(10830) : error 037: invalid string (possibly non-terminated string)
C:\Atlanta-RP\SAMP\samp0.3a\gamemodes\larp.pwn(10830) : error 017: undefined symbol "INSERT"
C:\Atlanta-RP\SAMP\samp0.3a\gamemodes\larp.pwn(10830) : error 029: invalid expression, assumed zero
C:\Atlanta-RP\SAMP\samp0.3a\gamemodes\larp.pwn(10830) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


6 Errors.
voila j'espert qu'on pourra m'aider !
++D4++
Titre: Re : [PAWN-SQL] Galère...
Posté par: FuSion le 02 Décembre 2009, 13:15:14
Je te conseille de te baser du Modern Tropia ( Un truc du genre ) C'est aussi un RPG donc tu devrais pas avoir beaucoup de probleme de verifier ce qui louche  ;)
Titre: Re : [PAWN-SQL] Galère...
Posté par: Dark4ng3L le 02 Décembre 2009, 13:18:01
Sauf que j'les pas xD
j'vais essayer
Titre: Re : [PAWN-SQL] Galère...
Posté par: FuSion le 02 Décembre 2009, 13:20:12
Il es en libre téléchargement sur le forum SA-MP c'est pas 1.7 mo qui va te causer un probleme je pense  :closedeyes
Titre: Re : [PAWN-SQL] Galère...
Posté par: Alan le 02 Décembre 2009, 13:33:20
C:Atlanta-RPSAMPsamp0.3agamemodeslarp.pwn(10823) : error 029: invalid expression, assumed zero
C:Atlanta-RPSAMPsamp0.3agamemodeslarp.pwn(10829) : error 075: input line too long (after substitutions)
C:Atlanta-RPSAMPsamp0.3agamemodeslarp.pwn(10830) : error 037: invalid string (possibly non-terminated string)
C:Atlanta-RPSAMPsamp0.3agamemodeslarp.pwn(10830) : error 017: undefined symbol "INSERT"
C:Atlanta-RPSAMPsamp0.3agamemodeslarp.pwn(10830) : error 029: invalid expression, assumed zero
C:Atlanta-RPSAMPsamp0.3agamemodeslarp.pwn(10830) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


6 Errors.

Petite Aide. Regarde ici : C:Atlanta-RPSAMPsamp0.3agamemodeslarp.pwn(10830)

Va sur Ton GM. Et regarde cette ligne la 10830 Regarde la Ligne et dit le texte qu'il y a.

Double post
Modern Topia: http://forum.sa-mp.com/index.php?topic=40077.0 (http://forum.sa-mp.com/index.php?topic=40077.0)
Titre: Re : Re : [PAWN-SQL] Galère...
Posté par: » Lukubi™ le 02 Décembre 2009, 13:43:32
C:Atlanta-RPSAMPsamp0.3agamemodeslarp.pwn(10823) : error 029: invalid expression, assumed zero
C:Atlanta-RPSAMPsamp0.3agamemodeslarp.pwn(10829) : error 075: input line too long (after substitutions)
C:Atlanta-RPSAMPsamp0.3agamemodeslarp.pwn(10830) : error 037: invalid string (possibly non-terminated string)
C:Atlanta-RPSAMPsamp0.3agamemodeslarp.pwn(10830) : error 017: undefined symbol "INSERT"
C:Atlanta-RPSAMPsamp0.3agamemodeslarp.pwn(10830) : error 029: invalid expression, assumed zero
C:Atlanta-RPSAMPsamp0.3agamemodeslarp.pwn(10830) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


6 Errors.

Petite Aide. Regarde ici : C:Atlanta-RPSAMPsamp0.3agamemodeslarp.pwn(10830)

Va sur Ton GM. Et regarde cette ligne la 10830 Regarde la Ligne et dit le texte qu'il y a.

Il a mit son code sur son post, ton post ne sert pas a grand chose, mais tu a la volonté d'aider les autre c'est déjà sa (:
Titre: Re : [PAWN-SQL] Galère...
Posté par: Dark4ng3L le 02 Décembre 2009, 13:55:58
yop merci de vôtre aide (en espérant que r@f passera par la )

voila la ligne 10823
      
format(query, sizeof(query), "INSERT INTO `users` (reg_id, Nom, Key, Level, AdminLevel, DonateRank, UpgradePoints, ConnectedTime, Registered, Sex, Age, Origin, CK, Muted, Respect, Money, Bank, Crimes, Kills, Deaths, Arrested, WantedDeaths, Phonebook, LottoNr, Fishes, BiggestFish, Job, Paycheck, HeadValue, Jailed, JailTime, Materials, Drugs, Leader, Member, FMember, Rank, Char, ContractTime, DetSkill, SexSkill, LawSkill, MechSkill, JackSkill, CarSkill, DrugsSkill, CookSkill, FishSkill, pSHealth) VALUES(0, \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", 750, 10000, \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", 50.0)",
++ D4 ++
Titre: Re : [PAWN-SQL] Galère...
Posté par: FuSion le 02 Décembre 2009, 13:57:09
Une question un peu bête: Tu as le plugin MySQL ?
Titre: Re : [PAWN-SQL] Galère...
Posté par: Dark4ng3L le 02 Décembre 2009, 14:01:37
oui xD
mais quand on compile on a pas besoin du plugin juste de l'inc :-\
Titre: Re : [PAWN-SQL] Galère...
Posté par: MrFredo le 02 Décembre 2009, 14:09:08
Question conne mais bon avec la taille de ta requete t'est sur que ton new query est sufisament gros pour acceuilir une si longue chaine ::)
Titre: Re : [PAWN-SQL] Galère...
Posté par: Dark4ng3L le 02 Décembre 2009, 14:15:35
oui XD

new query[10000];
j'pense que c'es assé  :lmfao
Titre: Re : [PAWN-SQL] Galère...
Posté par: Syg le 03 Décembre 2009, 17:11:43
Bon, il faudrait que je fasse un tuto SQL mais je n'ai pas trop le temps.

Premièrement, ton erreur "input line too long (after substitutions)" indique qu'une de tes lignes de code est trop longue.
Çà n'a rien à voir avec la taille des variables, juste la ligne elle même (qui fait quand même 896 caractères de long !!) que le compilateur n'arrive pas a traiter en une fois. Je pense qu'une ligne de code ne doit pas excéder 512 caractères (mais je n'en suis pas sur, juste que j'ai une ligne de 498 caractères dans le mode Lalu's Stunt et le compilo ne dit rien)

La solution, c'est de réduire la taille de ta ligne en enlevant des caractère ou en coupant la ligne en morceau pour la répartir sur plusieurs lignes.

Tout d'abord, tu peux sauter une ligne après chaque , (virgule) séparant les paramètres (Attention, tu ne peux pas faire ça dans le chaîne qui contient la requête SQL, c'est une chaîne de caractères).
Ensuite, il faut revoir la ta chaîne de requête.
Il est possible de découper une chaîne pour la faire tenir sur plusieurs ligne en utilisant le caractère \ mais je ne suis pas sur que ça marche.
Concernant la requête elle-même, tu peux très avantageusement remplacer tous les \" par des ' car SQL est très permissif.
Ce qui donnerais (je ne mets qu'un morceau de ta requête) :
VALUES(0, '%s', '%s', '%s', '%s', '%s', '%%s', .......De plus, tous ces \" sont source d'erreur, si tu en oublies un, tu auras des erreurs de compilation et elles risquent d'être difficile à trouver.

Sinon, là où tu pourrais gagner beaucoup, c'est en supprimant les noms des champs de la table. Mais pour faire ça, il est impératif que tous les champs de la table soit présent dans VALUE.
J'explique :
Si on prend la table Toto contentant les champs suivants :
Champ1
Champ2
Champ3
Champ4.

Si je veux insérer une ligne dans cette table en fixant la valeur de tous les champs, je peux exécuter la requête
Syntaxe 1 :
INSERT INTO Toto VALUES (1, 2, 3, 4);
Par contre, si je ne veux initialiser que Champ2 et Champ3, il faut que je le dise.
Syntaxe 2 (c'est celle que tu utilise) :
INSERT INTO Toto (Champ2, Champ3) VALUES (2, 3);
Donc si ton INSERT porte sur tous les champs de ta table, tu peux utiliser la syntaxe 1. Ceci diminuera grandement la taille de la ligne de code.

Voici ce que ça donne en appliquant toutes les réductions dont je parle.
format(query, sizeof(query),
"INSERT INTO users VALUES(0, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', 750, 10000, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', 50.0)",
PlayerName, RPassword,PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pAdmin],PlayerInfo[playerid][pDonateRank],PlayerInfo[playerid][gPupgrade],PlayerInfo[playerid][pConnectTime],
PlayerInfo[playerid][pReg],PlayerInfo[playerid][pSex],PlayerInfo[playerid][pAge],PlayerInfo[playerid][pOrigin],PlayerInfo[playerid][pCK],PlayerInfo[playerid][pMuted],PlayerInfo[playerid][pExp],
PlayerInfo[playerid][pCrimes],PlayerInfo[playerid][pKills],PlayerInfo[playerid][pDeaths],PlayerInfo[playerid][pArrested],PlayerInfo[playerid][pWantedDeaths],PlayerInfo[playerid][pPhoneBook],
PlayerInfo[playerid][pLottoNr],PlayerInfo[playerid][pFishes],PlayerInfo[playerid][pBiggestFish],PlayerInfo[playerid][pJob],PlayerInfo[playerid][pPayCheck],PlayerInfo[playerid][pHeadValue],
PlayerInfo[playerid][pJailed],PlayerInfo[playerid][pJailTime],PlayerInfo[playerid][pMats],PlayerInfo[playerid][pDrugs],PlayerInfo[playerid][pLeader],PlayerInfo[playerid][pMember],
PlayerInfo[playerid][pFMember],PlayerInfo[playerid][pRank],PlayerInfo[playerid][pChar],PlayerInfo[playerid][pContractTime],PlayerInfo[playerid][pDetSkill],PlayerInfo[playerid][pSexSkill],
PlayerInfo[playerid][pBoxSkill],PlayerInfo[playerid][pLawSkill],PlayerInfo[playerid][pMechSkill],PlayerInfo[playerid][pJackSkill],PlayerInfo[playerid][pCarSkill],PlayerInfo[playerid][pDrugsSkill],
PlayerInfo[playerid][pCookSkill],PlayerInfo[playerid][pFishSkill]);
Cette ligne devrait compiler sans problème à condition que TOUS les champs de la table soient présents dans la requête. Si ce n'est pas le cas, tu auras une erreur SQL lors de l'exécution de la requête.

++
Syg
Titre: Re : [PAWN-SQL] Galère...
Posté par: Ssk le 03 Décembre 2009, 17:12:14
OMG c' est trop meme baisse un petit peu la taille a environ 256 ou encore 512


EDIT: Arg syg a poster avant moi ^^
Titre: Re : [PAWN-SQL] Galère...
Posté par: Dark4ng3L le 03 Décembre 2009, 21:23:27
merci beaucoup syg de ta grande aide !
je vais essayer ca Dessuite j'vous redit des nouvelles !!
merci encore
++ D4 ++