-
Sziasztok, nem tudom mi lehet a baja a kiválasztásomnak, megcsináltam a felhasználót, de azt írja, hogy nincs ilyen felhasználó.
Kód:
format(Query, sizeof(Query), \"SELECT * from `felhasznalok` WHERE felhasznalonev = \'%s\'\", FInfo[playerid][Felhasznalonev]);
mysql_query(Query);
mysql_store_result();
if(mysql_num_rows() != 0)
{
format(Query, sizeof(Query), \"SELECT * from `felhasznalok` WHERE jelszo = \'%s\'\", FInfo[playerid][Jelszo]);
mysql_query(Query);
mysql_store_result();
if(mysql_num_rows() != 0)
{
SendClientMessage(playerid, -1, \"Sikeresen bejelentkeztél!\");
}
else
{
SendClientMessage(playerid, -1, \"Hibás jelszó!\");
}
}
else
{
SendClientMessage(playerid, -1, \"Nem létezõ felhasználó!\");
}
mysql_free_result();
Enum:
enum FelhasznaloInfo
{
Felhasznalonev,
Jelszo,
};
new FInfo[MAX_PLAYERS][FelhasznaloInfo];
Ahogy beállítom a változókat:
FInfo[playerid][Felhasznalonev] = strval(inputtext);
FInfo[playerid][Jelszo] = strval(inputtext);
-
Próbáld meg ezzel:
format(Query, sizeof(Query), \"SELECT felhasznalonev from `felhasznalok` WHERE felhasznalonev = \'%s\'\", FInfo[playerid][Felhasznalonev]);//felhasznalonev, * helyett -> biztonság
mysql_query(Query);
mysql_store_result();
if(mysql_num_rows() != 0)
{
format(Query, sizeof(Query), \"SELECT felhasznalonev from `felhasznalok` WHERE felhasznalonev = \'%s\' AND jelszo = \'%s\'\", FInfo[playerid][Felhasznalonev], FInfo[playerid][Jelszo]);//felhasznalonev, * helyett -> biztonság
mysql_query(Query);
mysql_store_result();
if(mysql_num_rows() != 0)
{
SendClientMessage(playerid, -1, \"Sikeresen bejelentkeztél!\");
}
else
{
SendClientMessage(playerid, -1, \"Hibás jelszó!\");
}
}
else
{
SendClientMessage(playerid, -1, \"Nem létezõ felhasználó!\");
}
mysql_free_result();
Ez ugyanaz, csak egybevettem a két lekérdezést.
format(Query, sizeof(Query), \"SELECT felhasznalonev from `felhasznalok` WHERE felhasznalonev = \'%s\' AND jelszo = \'%s\'\", FInfo[playerid][Felhasznalonev], FInfo[playerid][Jelszo]);//felhasznalonev, * helyett -> biztonság
mysql_query(Query);
mysql_store_result();
if(mysql_num_rows() != 0)
{
SendClientMessage(playerid, -1, \"Sikeresen bejelentkeztél!\");
}
else
{
SendClientMessage(playerid, -1, \"Hibás felhasználónév vagy jelszó!\");
}
mysql_free_result();
-
Néhány észrevétel: a FROM-ot mysql utasításban csupa nagy betûvel szokás írni. (Ki tudja, még lehet ez is a hiba oka, bár nem hiszem. De azért használd csak nagy betûkkel!) Az enumban a felhasználónév változója integer. Vagyis egész szám. Oda mégis hogy a jó életbe akarsz stringet menteni? Ehhez kapcsolódik a következõ probléma: a felhasználónevet strval függvénnyel mi a fenéért alakítod át számmá? Vagy talán azt a szót, hogy \"Nevem\" számként akarod tárolni? Sok sikert hozzá... Ugyanezek vannak a jelszóval is. És ezzel rá is jöttünk a hiba okára: a feltételben valamilyen szám szerepel, pl. a felhasznalonev = 74749264, pedig te ne ezt szeretnéd. De ez szerepel, mert a forráskódban ezt adtad meg, szóval gyakorlatilag a kód nem hibás, csupán azt csinálja, amit megadtál neki. Ráadásul jelenleg az a változó integer, azaz egész szám típusú, de te a lekérdezésnél stringként, azaz karakterláncként, %s jellel adod meg. De ez tök mindegy, ha egyszer a változó értéke nem a szükséges felhasználónév és nem is a szükséges jelszó. Arról nem is beszélve, hogy a lekérdezés sem megfelelõ, még ha az értékek jók is lennének benne. Aztán ha ezen felül még van probléma, az már a te dolgod, ugyanis én már nem igazán vágom az elavult R6-ot, csak a legújabb R38-at, bocsi. Megírtam neked jól (format helyett trükköztem és egy másik függvényt használtam, remélem, nem nagy baj):
format(Query, sizeof(Query), \"SELECT * FROM felhasznalok WHERE felhasznalonev = \'%s\'\", FInfo[playerid][Felhasznalonev]);
mysql_query(Query);
mysql_store_result();
if(mysql_num_rows() != 0)
{
format(Query, sizeof(Query), \"SELECT * FROM felhasznalok WHERE felhasznalonev = \'%s\' AND jelszo = \'%s\'\", FInfo[playerid][Felhasznalonev], FInfo[playerid][Jelszo]);
mysql_query(Query);
mysql_store_result();
if(mysql_num_rows() != 0)
{
SendClientMessage(playerid, -1, \"Sikeresen bejelentkeztél!\");
}
else
{
SendClientMessage(playerid, -1, \"Hibás jelszó!\");
}
}
else
{
SendClientMessage(playerid, -1, \"Nem létezõ felhasználó!\");
}
mysql_free_result();
Enum:
enum FelhasznaloInfo
{
Felhasznalonev[32], // Nem tudom, hoy hány karakter lehet nálad, de most lesz 32
Jelszo[32] // Nem tudom, hoy hány karakter lehet nálad, de most lesz 32 - amúgy ide már nem kell vesszõ, ha ez a legutolsó \'tagja\' az enumnak.
};
new FInfo[MAX_PLAYERS][FelhasznaloInfo];
A karakterláncoo enumos változókba való eltárolása:
strins([code=pawn]FInfo[playerid][Felhasznalonev, inputtext, 0)
strins(FInfo[playerid][Jelszo], inputtext, 0);
Amúgy lehet, hogy alapból a stringnek üresnek kell lennie, de sztem az egész stringet felülírja a függvény. Nem tudom, nem nagyon használtam. Ha s*@r, még üres alap stringgel is, akkor használj simán formatot!
Huh! Tabletrõl írtam, többet is, mint amennyit akartam. De finish. Ha még ezen felül is találok hibákat, leírom rájuk a megoldást, vagy ha még így sem mükszik a dolog, szólj róla, hátha tudok még segíteni.
:)
-
Köszi ez mûködik, csak annyi a problémám, hogy ha nem relogolok akkor nem átalakítja a stringet, ha beírok valami msát hanem hozzáadja
Példa: beírom felhasználónévhez elõször, hogy: teszt, akkor jó, de ha átváltoztatom teszt2-re, akkor tesztteszt2 lesz a változó értéke. Hogyan tudnám ezt megcsinálni?
Dupla hozzászólás automatikusan összefûzve. ( 2014. április 21. - 13:38:57 )
Megoldottam úgy, hogy elötte kitörölje a string-et, majd utána írja csak be. Köszönöm a segítséget, megy a +
-
Az azért egy kicsit nagyon zavaró volt, hogy a kisebb kérdések témában leírtam, hogy ne hallgass mások hülyeségére, hanem csináld így (vagy formattal), ennek ellenére te számmá alakítottad az inputtextet és csodálkoztál, hogy nem mûködik.
[mod]A dupla hozzászólásokra pedig figyelj oda! Nem egyszer szóltam már rád emiatt. Használd a szerkesztés funkciót![/mod]
-
Sziasztok, nem tudom mi lehet a baja a kiválasztásomnak, megcsináltam a felhasználót, de azt írja, hogy nincs ilyen felhasználó.
Kód:
format(Query, sizeof(Query), \"SELECT * from `felhasznalok` WHERE felhasznalonev = \'%s\'\", FInfo[playerid][Felhasznalonev]);
mysql_query(Query);
mysql_store_result();
if(mysql_num_rows() != 0)
{
format(Query, sizeof(Query), \"SELECT * from `felhasznalok` WHERE jelszo = \'%s\'\", FInfo[playerid][Jelszo]);
mysql_query(Query);
mysql_store_result();
if(mysql_num_rows() != 0)
{
SendClientMessage(playerid, -1, \"Sikeresen bejelentkeztél!\");
}
else
{
SendClientMessage(playerid, -1, \"Hibás jelszó!\");
}
}
else
{
SendClientMessage(playerid, -1, \"Nem létezõ felhasználó!\");
}
mysql_free_result();
Enum:
enum FelhasznaloInfo
{
Felhasznalonev,
Jelszo,
};
new FInfo[MAX_PLAYERS][FelhasznaloInfo];
Ahogy beállítom a változókat:
FInfo[playerid][Felhasznalonev] = strval(inputtext);
FInfo[playerid][Jelszo] = strval(inputtext);
-
Próbáld meg ezzel:
format(Query, sizeof(Query), \"SELECT felhasznalonev from `felhasznalok` WHERE felhasznalonev = \'%s\'\", FInfo[playerid][Felhasznalonev]);//felhasznalonev, * helyett -> biztonság
mysql_query(Query);
mysql_store_result();
if(mysql_num_rows() != 0)
{
format(Query, sizeof(Query), \"SELECT felhasznalonev from `felhasznalok` WHERE felhasznalonev = \'%s\' AND jelszo = \'%s\'\", FInfo[playerid][Felhasznalonev], FInfo[playerid][Jelszo]);//felhasznalonev, * helyett -> biztonság
mysql_query(Query);
mysql_store_result();
if(mysql_num_rows() != 0)
{
SendClientMessage(playerid, -1, \"Sikeresen bejelentkeztél!\");
}
else
{
SendClientMessage(playerid, -1, \"Hibás jelszó!\");
}
}
else
{
SendClientMessage(playerid, -1, \"Nem létezõ felhasználó!\");
}
mysql_free_result();
Ez ugyanaz, csak egybevettem a két lekérdezést.
format(Query, sizeof(Query), \"SELECT felhasznalonev from `felhasznalok` WHERE felhasznalonev = \'%s\' AND jelszo = \'%s\'\", FInfo[playerid][Felhasznalonev], FInfo[playerid][Jelszo]);//felhasznalonev, * helyett -> biztonság
mysql_query(Query);
mysql_store_result();
if(mysql_num_rows() != 0)
{
SendClientMessage(playerid, -1, \"Sikeresen bejelentkeztél!\");
}
else
{
SendClientMessage(playerid, -1, \"Hibás felhasználónév vagy jelszó!\");
}
mysql_free_result();
-
Néhány észrevétel: a FROM-ot mysql utasításban csupa nagy betûvel szokás írni. (Ki tudja, még lehet ez is a hiba oka, bár nem hiszem. De azért használd csak nagy betûkkel!) Az enumban a felhasználónév változója integer. Vagyis egész szám. Oda mégis hogy a jó életbe akarsz stringet menteni? Ehhez kapcsolódik a következõ probléma: a felhasználónevet strval függvénnyel mi a fenéért alakítod át számmá? Vagy talán azt a szót, hogy \"Nevem\" számként akarod tárolni? Sok sikert hozzá... Ugyanezek vannak a jelszóval is. És ezzel rá is jöttünk a hiba okára: a feltételben valamilyen szám szerepel, pl. a felhasznalonev = 74749264, pedig te ne ezt szeretnéd. De ez szerepel, mert a forráskódban ezt adtad meg, szóval gyakorlatilag a kód nem hibás, csupán azt csinálja, amit megadtál neki. Ráadásul jelenleg az a változó integer, azaz egész szám típusú, de te a lekérdezésnél stringként, azaz karakterláncként, %s jellel adod meg. De ez tök mindegy, ha egyszer a változó értéke nem a szükséges felhasználónév és nem is a szükséges jelszó. Arról nem is beszélve, hogy a lekérdezés sem megfelelõ, még ha az értékek jók is lennének benne. Aztán ha ezen felül még van probléma, az már a te dolgod, ugyanis én már nem igazán vágom az elavult R6-ot, csak a legújabb R38-at, bocsi. Megírtam neked jól (format helyett trükköztem és egy másik függvényt használtam, remélem, nem nagy baj):
format(Query, sizeof(Query), \"SELECT * FROM felhasznalok WHERE felhasznalonev = \'%s\'\", FInfo[playerid][Felhasznalonev]);
mysql_query(Query);
mysql_store_result();
if(mysql_num_rows() != 0)
{
format(Query, sizeof(Query), \"SELECT * FROM felhasznalok WHERE felhasznalonev = \'%s\' AND jelszo = \'%s\'\", FInfo[playerid][Felhasznalonev], FInfo[playerid][Jelszo]);
mysql_query(Query);
mysql_store_result();
if(mysql_num_rows() != 0)
{
SendClientMessage(playerid, -1, \"Sikeresen bejelentkeztél!\");
}
else
{
SendClientMessage(playerid, -1, \"Hibás jelszó!\");
}
}
else
{
SendClientMessage(playerid, -1, \"Nem létezõ felhasználó!\");
}
mysql_free_result();
Enum:
enum FelhasznaloInfo
{
Felhasznalonev[32], // Nem tudom, hoy hány karakter lehet nálad, de most lesz 32
Jelszo[32] // Nem tudom, hoy hány karakter lehet nálad, de most lesz 32 - amúgy ide már nem kell vesszõ, ha ez a legutolsó \'tagja\' az enumnak.
};
new FInfo[MAX_PLAYERS][FelhasznaloInfo];
A karakterláncoo enumos változókba való eltárolása:
strins([code=pawn]FInfo[playerid][Felhasznalonev, inputtext, 0)
strins(FInfo[playerid][Jelszo], inputtext, 0);
Amúgy lehet, hogy alapból a stringnek üresnek kell lennie, de sztem az egész stringet felülírja a függvény. Nem tudom, nem nagyon használtam. Ha s*@r, még üres alap stringgel is, akkor használj simán formatot!
Huh! Tabletrõl írtam, többet is, mint amennyit akartam. De finish. Ha még ezen felül is találok hibákat, leírom rájuk a megoldást, vagy ha még így sem mükszik a dolog, szólj róla, hátha tudok még segíteni.
:)
-
Köszi ez mûködik, csak annyi a problémám, hogy ha nem relogolok akkor nem átalakítja a stringet, ha beírok valami msát hanem hozzáadja
Példa: beírom felhasználónévhez elõször, hogy: teszt, akkor jó, de ha átváltoztatom teszt2-re, akkor tesztteszt2 lesz a változó értéke. Hogyan tudnám ezt megcsinálni?
Dupla hozzászólás automatikusan összefûzve. ( 2014. április 21. - 13:38:57 )
Megoldottam úgy, hogy elötte kitörölje a string-et, majd utána írja csak be. Köszönöm a segítséget, megy a +
-
Az azért egy kicsit nagyon zavaró volt, hogy a kisebb kérdések témában leírtam, hogy ne hallgass mások hülyeségére, hanem csináld így (vagy formattal), ennek ellenére te számmá alakítottad az inputtextet és csodálkoztál, hogy nem mûködik.
[mod]A dupla hozzászólásokra pedig figyelj oda! Nem egyszer szóltam már rád emiatt. Használd a szerkesztés funkciót![/mod]