-
Sziasztok! Most tanulgatom a mysqlt-t és írom át a szerverem arra. Egy problémába ütköztem, nem tölt be rendesen. Konkrétan az a baj, hogy minden integer értéknek 48-as számot ír. Ezzel mit lehet tenni? Szerintem valahol itt lesz a baj.
stock LoginPlayer(playerid)
{
new query[128+1];
format(query, sizeof(query), \"SELECT * FROM karakterek WHERE username = \'%s\'\", playername(playerid));
mysql_query(query);
mysql_store_result();
while(mysql_fetch_row_format( query, \"|\"))
{
mysql_fetch_field_row(pInfo[playerid][admin], \"admin\");
mysql_fetch_field_row(pInfo[playerid][ora], \"ora\");
mysql_fetch_field_row(pInfo[playerid][mperc], \"mperc\");
mysql_fetch_field_row(pInfo[playerid][penz], \"penz\");
mysql_fetch_field_row(pInfo[playerid][firstreg], \"firstreg\");
mysql_fetch_field_row(pInfo[playerid][frakcio], \"frakcio\");
mysql_fetch_field_row(pInfo[playerid][rang], \"rang\");
mysql_fetch_field_row(pInfo[playerid][nem], \"nem\");
mysql_fetch_field_row(pInfo[playerid][kor], \"kor\");
mysql_fetch_field_row(pInfo[playerid][skin], \"skin\");
mysql_fetch_field_row(pInfo[playerid][telefonsz], \"telefonsz\");
}
}
-
Használj sscanf darabolást.. én is csak azt ismerem..
stock LoginPlayer( playerid )
{
new query[128+1];
format(query, sizeof(query), \"SELECT * FROM karakterek WHERE username = \'%s\'\", playername(playerid));
mysql_query(query);
mysql_store_result();
mysql_fetch_row_format(query, \"|\");
sscanf( query, \"darabolás..\", pInfo[ playerid ]... );
mysql_free_result( );
return 1;
}
Ha nem tudnád, hogy kéne darabolni akkor tessék egy leírás példával: http://forum.sa-mp.com/showthread.php?t=120356
-
Csak ezzel nincs egy olyan gond, hogy muszáj mindegyiket kikérjem? Mert a táblámban van egy olyan, hogy password és én azt nem akarom kikérni (nincs is enumom rá). És ha kihagyok egyet, akkor elcsúszik az egész.
-
Ne
SELECT * FROM
-ot írj, hanem sorold fel a lekérdezendõ oszlopok nevét. Pl.
SELECT admin, ora, stb. ... skin, telefonsz FROM
persze csak ha jól értettem, és ez a problémád az utolsó hsz-edben.
-
Enélkül is kéne mûködjön. Egy tutorialt néztem, ahol a mysql_fetch_row sorok így voltak leírva stringnél. Na de nekem ezek integer adatok és kérdés, hogy ugyanígy kell-e.
-
A beolvasott adat általában karakterláncként van tárolva, emiatt nem tudod közvetlen integer változóba helyezni.
A kód prototípusában is látható,
mysql_fetch_field_row(destination[], const fieldname[], connectionHandle = 1, max_len=sizeof(destination));[/quote]
szögletes zárójelek is erre utalnak.
Ha te továbbra is ezt a megoldást szeretnéd használni akkor létre kell hozni egy újabb karakterlánc tárolására szolgáló változót, amit egy másik eljárással (strval, floatstr, ..) átalakítva tudsz majd elhelyezni a létrehozott enum változóidba:
stock LoginPlayer(playerid)
{
new
query[128+1],
data[64];
format(query, sizeof(query), \"SELECT * FROM karakterek WHERE username = \'%s\'\", playername(playerid));
mysql_query(query);
mysql_store_result();
while(mysql_fetch_row_format( query, \"|\"))
{
mysql_fetch_field_row(data, \"admin\"); pInfo[playerid][admin] = strval(data);
mysql_fetch_field_row(data \"ora\"); pInfo[playerid][ora] = strval(data);
// Elõfordulhat olyan változó alkalmazás ami nem egész szám (float) azt floatsrt(data) használatával tudod elhelyezni szintén egy float típusú változóba.
// mysql_fetch_field_row(pInfo[playerid][mperc], \"mperc\");
// mysql_fetch_field_row(pInfo[playerid][penz], \"penz\");
// mysql_fetch_field_row(pInfo[playerid][firstreg], \"firstreg\");
// mysql_fetch_field_row(pInfo[playerid][frakcio], \"frakcio\");
// mysql_fetch_field_row(pInfo[playerid][rang], \"rang\");
// mysql_fetch_field_row(pInfo[playerid][nem], \"nem\");
// mysql_fetch_field_row(pInfo[playerid][kor], \"kor\");
// mysql_fetch_field_row(pInfo[playerid][skin], \"skin\");
// mysql_fetch_field_row(pInfo[playerid][telefonsz], \"telefonsz\");
}
}
-
A beolvasott adat általában karakterláncként van tárolva, emiatt nem tudod közvetlen integer változóba helyezni.
A kód prototípusában is látható,
mysql_fetch_field_row(destination[], const fieldname[], connectionHandle = 1, max_len=sizeof(destination));
szögletes zárójelek is erre utalnak.
Ha te továbbra is ezt a megoldást szeretnéd használni akkor létre kell hozni egy újabb karakterlánc tárolására szolgáló változót, amit egy másik eljárással (strval, floatstr, ..) átalakítva tudsz majd elhelyezni a létrehozott enum változóidba:
stock LoginPlayer(playerid)
{
new
query[128+1],
data[64];
format(query, sizeof(query), \"SELECT * FROM karakterek WHERE username = \'%s\'\", playername(playerid));
mysql_query(query);
mysql_store_result();
while(mysql_fetch_row_format( query, \"|\"))
{
mysql_fetch_field_row(data, \"admin\"); pInfo[playerid][admin] = strval(data);
mysql_fetch_field_row(data \"ora\"); pInfo[playerid][ora] = strval(data);
// Elõfordulhat olyan változó alkalmazás ami nem egész szám (float) azt floatsrt(data) használatával tudod elhelyezni szintén egy float típusú változóba.
// mysql_fetch_field_row(pInfo[playerid][mperc], \"mperc\");
// mysql_fetch_field_row(pInfo[playerid][penz], \"penz\");
// mysql_fetch_field_row(pInfo[playerid][firstreg], \"firstreg\");
// mysql_fetch_field_row(pInfo[playerid][frakcio], \"frakcio\");
// mysql_fetch_field_row(pInfo[playerid][rang], \"rang\");
// mysql_fetch_field_row(pInfo[playerid][nem], \"nem\");
// mysql_fetch_field_row(pInfo[playerid][kor], \"kor\");
// mysql_fetch_field_row(pInfo[playerid][skin], \"skin\");
// mysql_fetch_field_row(pInfo[playerid][telefonsz], \"telefonsz\");
}
}
[/quote]
A sscanf felbontás nem jobb? mivel sokkal egyszerûbb a lekérdezése és a betöltése, vagy talán tévedek? :D
-
Ezer köszönet! Este én is pont erre gondoltam :D . Köszi nagyon szépen Zsolesz!
-
Sziasztok! Most tanulgatom a mysqlt-t és írom át a szerverem arra. Egy problémába ütköztem, nem tölt be rendesen. Konkrétan az a baj, hogy minden integer értéknek 48-as számot ír. Ezzel mit lehet tenni? Szerintem valahol itt lesz a baj.
stock LoginPlayer(playerid)
{
new query[128+1];
format(query, sizeof(query), \"SELECT * FROM karakterek WHERE username = \'%s\'\", playername(playerid));
mysql_query(query);
mysql_store_result();
while(mysql_fetch_row_format( query, \"|\"))
{
mysql_fetch_field_row(pInfo[playerid][admin], \"admin\");
mysql_fetch_field_row(pInfo[playerid][ora], \"ora\");
mysql_fetch_field_row(pInfo[playerid][mperc], \"mperc\");
mysql_fetch_field_row(pInfo[playerid][penz], \"penz\");
mysql_fetch_field_row(pInfo[playerid][firstreg], \"firstreg\");
mysql_fetch_field_row(pInfo[playerid][frakcio], \"frakcio\");
mysql_fetch_field_row(pInfo[playerid][rang], \"rang\");
mysql_fetch_field_row(pInfo[playerid][nem], \"nem\");
mysql_fetch_field_row(pInfo[playerid][kor], \"kor\");
mysql_fetch_field_row(pInfo[playerid][skin], \"skin\");
mysql_fetch_field_row(pInfo[playerid][telefonsz], \"telefonsz\");
}
}
-
Használj sscanf darabolást.. én is csak azt ismerem..
stock LoginPlayer( playerid )
{
new query[128+1];
format(query, sizeof(query), \"SELECT * FROM karakterek WHERE username = \'%s\'\", playername(playerid));
mysql_query(query);
mysql_store_result();
mysql_fetch_row_format(query, \"|\");
sscanf( query, \"darabolás..\", pInfo[ playerid ]... );
mysql_free_result( );
return 1;
}
Ha nem tudnád, hogy kéne darabolni akkor tessék egy leírás példával: http://forum.sa-mp.com/showthread.php?t=120356
-
Csak ezzel nincs egy olyan gond, hogy muszáj mindegyiket kikérjem? Mert a táblámban van egy olyan, hogy password és én azt nem akarom kikérni (nincs is enumom rá). És ha kihagyok egyet, akkor elcsúszik az egész.
-
Ne
SELECT * FROM
-ot írj, hanem sorold fel a lekérdezendõ oszlopok nevét. Pl.
SELECT admin, ora, stb. ... skin, telefonsz FROM
persze csak ha jól értettem, és ez a problémád az utolsó hsz-edben.
-
Enélkül is kéne mûködjön. Egy tutorialt néztem, ahol a mysql_fetch_row sorok így voltak leírva stringnél. Na de nekem ezek integer adatok és kérdés, hogy ugyanígy kell-e.
-
A beolvasott adat általában karakterláncként van tárolva, emiatt nem tudod közvetlen integer változóba helyezni.
A kód prototípusában is látható,
mysql_fetch_field_row(destination[], const fieldname[], connectionHandle = 1, max_len=sizeof(destination));[/quote]
szögletes zárójelek is erre utalnak.
Ha te továbbra is ezt a megoldást szeretnéd használni akkor létre kell hozni egy újabb karakterlánc tárolására szolgáló változót, amit egy másik eljárással (strval, floatstr, ..) átalakítva tudsz majd elhelyezni a létrehozott enum változóidba:
stock LoginPlayer(playerid)
{
new
query[128+1],
data[64];
format(query, sizeof(query), \"SELECT * FROM karakterek WHERE username = \'%s\'\", playername(playerid));
mysql_query(query);
mysql_store_result();
while(mysql_fetch_row_format( query, \"|\"))
{
mysql_fetch_field_row(data, \"admin\"); pInfo[playerid][admin] = strval(data);
mysql_fetch_field_row(data \"ora\"); pInfo[playerid][ora] = strval(data);
// Elõfordulhat olyan változó alkalmazás ami nem egész szám (float) azt floatsrt(data) használatával tudod elhelyezni szintén egy float típusú változóba.
// mysql_fetch_field_row(pInfo[playerid][mperc], \"mperc\");
// mysql_fetch_field_row(pInfo[playerid][penz], \"penz\");
// mysql_fetch_field_row(pInfo[playerid][firstreg], \"firstreg\");
// mysql_fetch_field_row(pInfo[playerid][frakcio], \"frakcio\");
// mysql_fetch_field_row(pInfo[playerid][rang], \"rang\");
// mysql_fetch_field_row(pInfo[playerid][nem], \"nem\");
// mysql_fetch_field_row(pInfo[playerid][kor], \"kor\");
// mysql_fetch_field_row(pInfo[playerid][skin], \"skin\");
// mysql_fetch_field_row(pInfo[playerid][telefonsz], \"telefonsz\");
}
}
-
A beolvasott adat általában karakterláncként van tárolva, emiatt nem tudod közvetlen integer változóba helyezni.
A kód prototípusában is látható,
mysql_fetch_field_row(destination[], const fieldname[], connectionHandle = 1, max_len=sizeof(destination));
szögletes zárójelek is erre utalnak.
Ha te továbbra is ezt a megoldást szeretnéd használni akkor létre kell hozni egy újabb karakterlánc tárolására szolgáló változót, amit egy másik eljárással (strval, floatstr, ..) átalakítva tudsz majd elhelyezni a létrehozott enum változóidba:
stock LoginPlayer(playerid)
{
new
query[128+1],
data[64];
format(query, sizeof(query), \"SELECT * FROM karakterek WHERE username = \'%s\'\", playername(playerid));
mysql_query(query);
mysql_store_result();
while(mysql_fetch_row_format( query, \"|\"))
{
mysql_fetch_field_row(data, \"admin\"); pInfo[playerid][admin] = strval(data);
mysql_fetch_field_row(data \"ora\"); pInfo[playerid][ora] = strval(data);
// Elõfordulhat olyan változó alkalmazás ami nem egész szám (float) azt floatsrt(data) használatával tudod elhelyezni szintén egy float típusú változóba.
// mysql_fetch_field_row(pInfo[playerid][mperc], \"mperc\");
// mysql_fetch_field_row(pInfo[playerid][penz], \"penz\");
// mysql_fetch_field_row(pInfo[playerid][firstreg], \"firstreg\");
// mysql_fetch_field_row(pInfo[playerid][frakcio], \"frakcio\");
// mysql_fetch_field_row(pInfo[playerid][rang], \"rang\");
// mysql_fetch_field_row(pInfo[playerid][nem], \"nem\");
// mysql_fetch_field_row(pInfo[playerid][kor], \"kor\");
// mysql_fetch_field_row(pInfo[playerid][skin], \"skin\");
// mysql_fetch_field_row(pInfo[playerid][telefonsz], \"telefonsz\");
}
}
[/quote]
A sscanf felbontás nem jobb? mivel sokkal egyszerûbb a lekérdezése és a betöltése, vagy talán tévedek? :D
-
Ezer köszönet! Este én is pont erre gondoltam :D . Köszi nagyon szépen Zsolesz!