Szerző Téma: Mentés és betöltés MySQL  (Megtekintve 760 alkalommal)

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
Mentés és betöltés MySQL
« Dátum: 2014. április 13. - 00:42:59 »
0 Show voters
Sziasztok! Írtam egy regisztráció rendszert a szerveremhez.. házi szerveren tökéletes mûködik.. mindent betöltésre kerül. Feltöltöttem hostra és nem mikor megyek a szerverre regisztrálni akkor egybõl kifagy a szerver és az egész regisztráció újrakezdõdik. Nos a kérdésem az lenne miért nem jó a betöltés ? Komolyan már nagyon elegem van ebbõl.. próbáltam sscanf bontással.. azzal házi szerveren betölti.. de hoston nem.. most ezzel is .. nem tudok mit csinálni tényleg.. elõre köszönöm a válaszokat!
 
#include a_samp
#include a_mysql
#include sscanf2
#include zcmd
#define  MYSQL_HOST \"-\"
#define  MYSQL_USER \"-\"
#define  MYSQL_DATA \"-\"
#define  MYSQL_PASS \"-\"
#define  DIALOG_LOGIN    1
#define  DIALOG_REGISTER 2
enum     PlayerInfo
{
 RegID,
 Name[ 24 ],
 password[ 128 ],
 IP[ 16 ],
 Admin,
 Money,
 Score,
 Logged
}
new      pInfo[ MAX_PLAYERS ][ PlayerInfo ];
new      MySQL[ 1024 ];
public   OnFilterScriptInit( )
{
         mysql_debug( true );
         mysql_connect( MYSQL_HOST, MYSQL_USER, MYSQL_DATA, MYSQL_PASS );
         
 mysql_query( \"CREATE TABLE IF NOT EXISTS `accounts` (\" \\
             \"`RegID` int(10) NOT NULL AUTO_INCREMENT,\" \\
             \"`Name` varchar(24) NOT NULL,\" \\
             \"`password` varchar(64) NOT NULL,\" \\
             \"`IP` varchar(16) NULL,\" \\
             \"`Admin` int(15) NULL,\" \\
             \"`Money` int(15) NULL,\" \\
             \"`Score` int(15) NULL,\" \\
             \"PRIMARY KEY (`RegID`)\" \\
             \") ENGINE=InnoDB DEFAULT CHARSET=latin1;\" );
 if( mysql_ping( ) > -1 ) return printf( \":: MySQL :: Sikeresen csatlakoztál \'%s\' nevû adatbázishoz!\", MYSQL_DATA );
         else printf( \":: MySQL :: Sikertelen csatlakozás \'%s\' nevû adatbázishoz!\", MYSQL_DATA );
         return 1;
}
         
public   OnFilterScriptExit( ) {
         mysql_close( );
         return 1;
}
public   OnPlayerConnect( playerid )
{
         new karakterlanc[ 228 + 1 ];
 format( MySQL, sizeof( MySQL ), \"SELECT `Name` FROM `accounts` WHERE `Name` = \'%s\'\", pName( playerid ) );
 mysql_query( MySQL );
     mysql_store_result( );
     if( mysql_num_rows( ) != 0 ) {
 format( karakterlanc, sizeof( karakterlanc ), \"» Üdvözöllek %s!\\n» A karaktered neve már szerepel az adatbázisunban!\\n» Kérlek írd be a lenti ablakba a jelszód, majd klikkelj tovább a \'BELÉPÉS\' gombjára!\\n» Bejeletkezés után minden adat betöltésre kerül!\", pName( playerid ), pIP( playerid ) );
 ShowPlayerDialog( playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, \"{ffffff}Bejelentkezés\", karakterlanc, \"Belépés\", \"Mégsem\" );
 } else {
 format( karakterlanc, sizeof( karakterlanc ), \"» Üdvözöllek %s!\\n» A karaktered neve még nem szerepel az adatbázisunban!\\n» Kérlek írj be a lenti ablakba egy jelszót, majd klikkelj tovább a \'REGISZTRÁL\' gombjára!\\n» Regisztráció után minden adat mentésre kerül!\", pName( playerid ), pIP( playerid ) );
 ShowPlayerDialog( playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, \"{ffffff}Regisztráció\", karakterlanc, \"Regisztrál\", \"Mégsem\" ); }
         mysql_free_result( );
 return 1;
}
public   OnPlayerDisconnect( playerid, reason )
{
 SavePlayerStats( playerid );
 return 1;
}
public   OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
{
 if( dialogid == DIALOG_REGISTER ) {
 if( !response ) return Kick( playerid );
 if( response ) {
         if( strlen( inputtext ) == 0 ) {
         SendClientMessage( playerid, -1, \"Hiba: 3\" );
 } else {
 new pass[ 128 ]; MySQL[ 0 ] = EOS;
 mysql_real_escape_string( inputtext, pass );
 format( MySQL, sizeof( MySQL ), \"INSERT INTO `accounts` ( Name, password, IP, Money, Score, Admin ) VALUES( \'%s\', \'%s\', \'%s\', \'5000\', \'0\', \'0\' )\", pName( playerid ), pass, pIP( playerid ) );
 mysql_query( MySQL );
         new karakterlanc[ 328 + 1 ];
 //format( karakterlanc, sizeof( karakterlanc ), \":: {51ff00}REGISZTRÁCIÓ {ffffff}:: {%06x}%s {949494}regisztrált a szerverre, összesen {ff0000}%i {949494}játékos található az adatbázisban!\", GetPlayerColor( playerid ) >>> 8, pName( playerid ), mysql_insert_id( ) );
         format( karakterlanc, sizeof( karakterlanc ), \":: REGISZTRÁCIÓ :: %s regisztrált a szerverre, összesen %i játékos található az adatbázisban!\", pName( playerid ), mysql_insert_id( ) );
 SendClientMessageToAll( -1, karakterlanc );
 pInfo[ playerid ][ Logged ] = 1;
 LoadPlayerStats( playerid );
 SendClientMessage( playerid, -1, \"» {1eff00}Sikeresen regisztráltál{ffffff}!\" ); } } }
 if( dialogid == DIALOG_LOGIN ) {
 if( !response ) return Kick( playerid );
 if( response ) {
 if( strlen( inputtext ) == 0 ) {
 SendClientMessage( playerid, -1, \"Hiba: 2\" );
 } else {
 MySQL[ 0 ] = EOS;
 format( MySQL, sizeof( MySQL ), \"SELECT `password` FROM `accounts` WHERE `Name` = \'%s\' AND `password` = \'%s\'\", pName( playerid ), inputtext );
 mysql_query( MySQL );
 mysql_store_result( );
 if( mysql_num_rows( ) != 0 ) {
 SendClientMessage( playerid, -1, \"» {1eff00}Sikeresen bejelentkeztél{ffffff}!\" );
 pInfo[ playerid ][ Logged ] = 1;
 LoadPlayerStats( playerid );
 } else {
 SendClientMessage( playerid, -1, \"Hiba: 1\" );
 } } } }
 return 1;
}
stock    LoadPlayerStats( playerid )
{
         format( MySQL, sizeof( MySQL ), \"SELECT `Money`, `Score`, `Admin` FROM `accounts` WHERE `Name` = \'%s\'\", pName( playerid ) );
         mysql_query( MySQL );
         mysql_store_result( );
         
         if( mysql_fetch_row_format( MySQL ) ) { sscanf( MySQL, \"p<|>iii\", pInfo[ playerid ][ Money ], pInfo[ playerid ][ Score ], pInfo[ playerid ][ Admin ] ); }
         mysql_free_result( );
         
         GivePlayerMoney( playerid, pInfo[ playerid ][ Money ] );
         SetPlayerScore( playerid, pInfo[ playerid ][ Score ] );
 return 1;
}
stock    SavePlayerStats( playerid )
{
         if( pInfo[ playerid ][ Logged ] == 1 ) {
 format( MySQL, sizeof( MySQL ), \"UPDATE `accounts` SET `Money` = \'%i\', `Score` = \'%i\', `Admin` = \'%i\' WHERE `Name` = \'%s\'\", GetPlayerMoney( playerid), GetPlayerScore( playerid ), GetPVarInt( playerid, \"Admin\" ), pName( playerid ) );
 mysql_query( MySQL );
 mysql_free_result( ); }
 return 1;
}
stock    pName( playerid )
{
     new name[ MAX_PLAYER_NAME ];
           GetPlayerName( playerid, name, sizeof name );
     return name;
}
stock    pIP( playerid )
{
     new ip[ MAX_PLAYER_NAME ];
     GetPlayerIp( playerid, ip, sizeof ip );
     return ip;
}

Nem elérhető KovaNovik

  • 1121
  • KovaNovik
    • Profil megtekintése
Mentés és betöltés MySQL
« Válasz #1 Dátum: 2014. április 13. - 07:38:52 »
0 Show voters
Nem akarok akadékoskodni, meg offolni, de miért nem az új MySQL plugint használod, amivel pár(száz) sorból tudsz menteni, és késõbb sokkal egyszerûbb menteni? Tudom, az R6 könnyebb az R7-nél, de az R38-nál nem.
Ezzel én is egyetértek, de kérlek ne hozzátok fel, mert ez valóban nem egy szükséges hozzászólás. Na meg ZyZu. már ezerszer elmondta (legalábbis nekem biztosan), hogy õ úgyis marad az R6-nál, mert még az is neki. (Hiába könnyebb és újabb nála az R38.) Szóval ezt senki se hozza fel többet!
Bocsi, nem ismerek itt mindenkit! Legközelebb nem hozom fel.  :rolleyes:
« Utoljára szerkesztve: 2014. április 13. - 15:10:57 írta KovaNovik »

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
Mentés és betöltés MySQL
« Válasz #2 Dátum: 2014. április 13. - 18:54:22 »
0 Show voters
Idézetet írta: KovaNovik date=1397367532\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"47684\" data-ipsquote-contentclass=\"forums_Topic
Nem akarok akadékoskodni, meg offolni, de miért nem az új MySQL plugint használod, amivel pár(száz) sorból tudsz menteni, és késõbb sokkal egyszerûbb menteni? Tudom, az R6 könnyebb az R7-nél, de az R38-nál nem.
Ezzel én is egyetértek, de kérlek ne hozzátok fel, mert ez valóban nem egy szükséges hozzászólás. Na meg ZyZu. már ezerszer elmondta (legalábbis nekem biztosan), hogy õ úgyis marad az R6-nál, mert még az is neki. (Hiába könnyebb és újabb nála az R38.) Szóval ezt senki se hozza fel többet!
Bocsi, nem ismerek itt mindenkit! Legközelebb nem hozom fel.  :rolleyes:
 
Semmi gond.. :D Gondolkoztam én is csak számomra elég nehéz még az új verzió mivel nem értem az egész logikáját. De ha tudsz esetleg egy jó kezdõ regisztráció és bejelentkezõ szkriptet az új pluginnal akkor szívesen fogadom. :D mivel tanulom.

Nem elérhető KovaNovik

  • 1121
  • KovaNovik
    • Profil megtekintése
Mentés és betöltés MySQL
« Válasz #3 Dátum: 2014. április 13. - 19:23:55 »
0 Show voters
Én ebbõl tanulnám az R38at: http://forum.sa-mp.com/showthread.php?t=496142
Az ORM-et meg innen, csak nekem valamiért nem akarja elmenteni: http://forum.sa-mp.com/showthread.php?t=461766
Plusz a wikirõl, ahonnan eddig senki nem értette meg: http://wiki.sa-mp.com/wiki/MySQL/R33
Ezen a wikin csak olyanok vannak, amik az R33 utáni verziókkal mennek.

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
Mentés és betöltés MySQL
« Válasz #4 Dátum: 2014. április 13. - 00:42:59 »
0 Show voters
Sziasztok! Írtam egy regisztráció rendszert a szerveremhez.. házi szerveren tökéletes mûködik.. mindent betöltésre kerül. Feltöltöttem hostra és nem mikor megyek a szerverre regisztrálni akkor egybõl kifagy a szerver és az egész regisztráció újrakezdõdik. Nos a kérdésem az lenne miért nem jó a betöltés ? Komolyan már nagyon elegem van ebbõl.. próbáltam sscanf bontással.. azzal házi szerveren betölti.. de hoston nem.. most ezzel is .. nem tudok mit csinálni tényleg.. elõre köszönöm a válaszokat!
 
#include a_samp
#include a_mysql
#include sscanf2
#include zcmd
#define  MYSQL_HOST \"-\"
#define  MYSQL_USER \"-\"
#define  MYSQL_DATA \"-\"
#define  MYSQL_PASS \"-\"
#define  DIALOG_LOGIN    1
#define  DIALOG_REGISTER 2
enum     PlayerInfo
{
 RegID,
 Name[ 24 ],
 password[ 128 ],
 IP[ 16 ],
 Admin,
 Money,
 Score,
 Logged
}
new      pInfo[ MAX_PLAYERS ][ PlayerInfo ];
new      MySQL[ 1024 ];
public   OnFilterScriptInit( )
{
         mysql_debug( true );
         mysql_connect( MYSQL_HOST, MYSQL_USER, MYSQL_DATA, MYSQL_PASS );
         
 mysql_query( \"CREATE TABLE IF NOT EXISTS `accounts` (\" \\
             \"`RegID` int(10) NOT NULL AUTO_INCREMENT,\" \\
             \"`Name` varchar(24) NOT NULL,\" \\
             \"`password` varchar(64) NOT NULL,\" \\
             \"`IP` varchar(16) NULL,\" \\
             \"`Admin` int(15) NULL,\" \\
             \"`Money` int(15) NULL,\" \\
             \"`Score` int(15) NULL,\" \\
             \"PRIMARY KEY (`RegID`)\" \\
             \") ENGINE=InnoDB DEFAULT CHARSET=latin1;\" );
 if( mysql_ping( ) > -1 ) return printf( \":: MySQL :: Sikeresen csatlakoztál \'%s\' nevû adatbázishoz!\", MYSQL_DATA );
         else printf( \":: MySQL :: Sikertelen csatlakozás \'%s\' nevû adatbázishoz!\", MYSQL_DATA );
         return 1;
}
         
public   OnFilterScriptExit( ) {
         mysql_close( );
         return 1;
}
public   OnPlayerConnect( playerid )
{
         new karakterlanc[ 228 + 1 ];
 format( MySQL, sizeof( MySQL ), \"SELECT `Name` FROM `accounts` WHERE `Name` = \'%s\'\", pName( playerid ) );
 mysql_query( MySQL );
     mysql_store_result( );
     if( mysql_num_rows( ) != 0 ) {
 format( karakterlanc, sizeof( karakterlanc ), \"» Üdvözöllek %s!\\n» A karaktered neve már szerepel az adatbázisunban!\\n» Kérlek írd be a lenti ablakba a jelszód, majd klikkelj tovább a \'BELÉPÉS\' gombjára!\\n» Bejeletkezés után minden adat betöltésre kerül!\", pName( playerid ), pIP( playerid ) );
 ShowPlayerDialog( playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, \"{ffffff}Bejelentkezés\", karakterlanc, \"Belépés\", \"Mégsem\" );
 } else {
 format( karakterlanc, sizeof( karakterlanc ), \"» Üdvözöllek %s!\\n» A karaktered neve még nem szerepel az adatbázisunban!\\n» Kérlek írj be a lenti ablakba egy jelszót, majd klikkelj tovább a \'REGISZTRÁL\' gombjára!\\n» Regisztráció után minden adat mentésre kerül!\", pName( playerid ), pIP( playerid ) );
 ShowPlayerDialog( playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, \"{ffffff}Regisztráció\", karakterlanc, \"Regisztrál\", \"Mégsem\" ); }
         mysql_free_result( );
 return 1;
}
public   OnPlayerDisconnect( playerid, reason )
{
 SavePlayerStats( playerid );
 return 1;
}
public   OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
{
 if( dialogid == DIALOG_REGISTER ) {
 if( !response ) return Kick( playerid );
 if( response ) {
         if( strlen( inputtext ) == 0 ) {
         SendClientMessage( playerid, -1, \"Hiba: 3\" );
 } else {
 new pass[ 128 ]; MySQL[ 0 ] = EOS;
 mysql_real_escape_string( inputtext, pass );
 format( MySQL, sizeof( MySQL ), \"INSERT INTO `accounts` ( Name, password, IP, Money, Score, Admin ) VALUES( \'%s\', \'%s\', \'%s\', \'5000\', \'0\', \'0\' )\", pName( playerid ), pass, pIP( playerid ) );
 mysql_query( MySQL );
         new karakterlanc[ 328 + 1 ];
 //format( karakterlanc, sizeof( karakterlanc ), \":: {51ff00}REGISZTRÁCIÓ {ffffff}:: {%06x}%s {949494}regisztrált a szerverre, összesen {ff0000}%i {949494}játékos található az adatbázisban!\", GetPlayerColor( playerid ) >>> 8, pName( playerid ), mysql_insert_id( ) );
         format( karakterlanc, sizeof( karakterlanc ), \":: REGISZTRÁCIÓ :: %s regisztrált a szerverre, összesen %i játékos található az adatbázisban!\", pName( playerid ), mysql_insert_id( ) );
 SendClientMessageToAll( -1, karakterlanc );
 pInfo[ playerid ][ Logged ] = 1;
 LoadPlayerStats( playerid );
 SendClientMessage( playerid, -1, \"» {1eff00}Sikeresen regisztráltál{ffffff}!\" ); } } }
 if( dialogid == DIALOG_LOGIN ) {
 if( !response ) return Kick( playerid );
 if( response ) {
 if( strlen( inputtext ) == 0 ) {
 SendClientMessage( playerid, -1, \"Hiba: 2\" );
 } else {
 MySQL[ 0 ] = EOS;
 format( MySQL, sizeof( MySQL ), \"SELECT `password` FROM `accounts` WHERE `Name` = \'%s\' AND `password` = \'%s\'\", pName( playerid ), inputtext );
 mysql_query( MySQL );
 mysql_store_result( );
 if( mysql_num_rows( ) != 0 ) {
 SendClientMessage( playerid, -1, \"» {1eff00}Sikeresen bejelentkeztél{ffffff}!\" );
 pInfo[ playerid ][ Logged ] = 1;
 LoadPlayerStats( playerid );
 } else {
 SendClientMessage( playerid, -1, \"Hiba: 1\" );
 } } } }
 return 1;
}
stock    LoadPlayerStats( playerid )
{
         format( MySQL, sizeof( MySQL ), \"SELECT `Money`, `Score`, `Admin` FROM `accounts` WHERE `Name` = \'%s\'\", pName( playerid ) );
         mysql_query( MySQL );
         mysql_store_result( );
         
         if( mysql_fetch_row_format( MySQL ) ) { sscanf( MySQL, \"p<|>iii\", pInfo[ playerid ][ Money ], pInfo[ playerid ][ Score ], pInfo[ playerid ][ Admin ] ); }
         mysql_free_result( );
         
         GivePlayerMoney( playerid, pInfo[ playerid ][ Money ] );
         SetPlayerScore( playerid, pInfo[ playerid ][ Score ] );
 return 1;
}
stock    SavePlayerStats( playerid )
{
         if( pInfo[ playerid ][ Logged ] == 1 ) {
 format( MySQL, sizeof( MySQL ), \"UPDATE `accounts` SET `Money` = \'%i\', `Score` = \'%i\', `Admin` = \'%i\' WHERE `Name` = \'%s\'\", GetPlayerMoney( playerid), GetPlayerScore( playerid ), GetPVarInt( playerid, \"Admin\" ), pName( playerid ) );
 mysql_query( MySQL );
 mysql_free_result( ); }
 return 1;
}
stock    pName( playerid )
{
     new name[ MAX_PLAYER_NAME ];
           GetPlayerName( playerid, name, sizeof name );
     return name;
}
stock    pIP( playerid )
{
     new ip[ MAX_PLAYER_NAME ];
     GetPlayerIp( playerid, ip, sizeof ip );
     return ip;
}

Nem elérhető KovaNovik

  • 1121
  • KovaNovik
    • Profil megtekintése
Mentés és betöltés MySQL
« Válasz #5 Dátum: 2014. április 13. - 07:38:52 »
0 Show voters
Nem akarok akadékoskodni, meg offolni, de miért nem az új MySQL plugint használod, amivel pár(száz) sorból tudsz menteni, és késõbb sokkal egyszerûbb menteni? Tudom, az R6 könnyebb az R7-nél, de az R38-nál nem.
Ezzel én is egyetértek, de kérlek ne hozzátok fel, mert ez valóban nem egy szükséges hozzászólás. Na meg ZyZu. már ezerszer elmondta (legalábbis nekem biztosan), hogy õ úgyis marad az R6-nál, mert még az is neki. (Hiába könnyebb és újabb nála az R38.) Szóval ezt senki se hozza fel többet!
Bocsi, nem ismerek itt mindenkit! Legközelebb nem hozom fel.  :rolleyes:
« Utoljára szerkesztve: 2014. április 13. - 15:10:57 írta KovaNovik »

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
Mentés és betöltés MySQL
« Válasz #6 Dátum: 2014. április 13. - 18:54:22 »
0 Show voters
Idézetet írta: KovaNovik date=1397367532\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"47684\" data-ipsquote-contentclass=\"forums_Topic
Nem akarok akadékoskodni, meg offolni, de miért nem az új MySQL plugint használod, amivel pár(száz) sorból tudsz menteni, és késõbb sokkal egyszerûbb menteni? Tudom, az R6 könnyebb az R7-nél, de az R38-nál nem.
Ezzel én is egyetértek, de kérlek ne hozzátok fel, mert ez valóban nem egy szükséges hozzászólás. Na meg ZyZu. már ezerszer elmondta (legalábbis nekem biztosan), hogy õ úgyis marad az R6-nál, mert még az is neki. (Hiába könnyebb és újabb nála az R38.) Szóval ezt senki se hozza fel többet!
Bocsi, nem ismerek itt mindenkit! Legközelebb nem hozom fel.  :rolleyes:
 
Semmi gond.. :D Gondolkoztam én is csak számomra elég nehéz még az új verzió mivel nem értem az egész logikáját. De ha tudsz esetleg egy jó kezdõ regisztráció és bejelentkezõ szkriptet az új pluginnal akkor szívesen fogadom. :D mivel tanulom.

Nem elérhető KovaNovik

  • 1121
  • KovaNovik
    • Profil megtekintése
Mentés és betöltés MySQL
« Válasz #7 Dátum: 2014. április 13. - 19:23:55 »
0 Show voters
Én ebbõl tanulnám az R38at: http://forum.sa-mp.com/showthread.php?t=496142
Az ORM-et meg innen, csak nekem valamiért nem akarja elmenteni: http://forum.sa-mp.com/showthread.php?t=461766
Plusz a wikirõl, ahonnan eddig senki nem értette meg: http://wiki.sa-mp.com/wiki/MySQL/R33
Ezen a wikin csak olyanok vannak, amik az R33 utáni verziókkal mennek.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal