[Tutorial] Usando MySQL
#1

Bem, hoje irei lhes ensinar como utilizar o aclamado MySQL, para quem nгo sabe o que й irei explicar:
MySQL й usado para criar Tabelas, em uma DataBase ficando fбcil a interaзгo entre Variбveis de um CУDIGO (no caso, o PAWN) para outro, que seria, na maioria das vezes, o PHP, um exemplo sгo as UCP's...
Para mais informaзхes:
http://www.mysql.com/

Antes de tudo, vocк precisa do Pluing MySQL, segue o Link:
https://sampforum.blast.hk/showthread.php?tid=56564
Recomendo usar a versгo R5 .


Agora, devemos definir, qual sera nossa databse, senha, usuбrio e host, veja abaixo:
pawn Код:
#define host "localhost" //Host
#define user "root" //Usuario
#define senha "" //Senha do host
#define database "testebancodedados" //DataBase que voce criou de acordo com o Vнdeo

Vнdeo para criar a DataBase:
http://www.youtube.com/watch?v=9QxdZ...ature=*********


Feito isso, devemos conectar a database e depois jб podemos criar a Tabela, de acordo com os dados acima, a Tabela pode ser criada em varias ocasiхes, pode ser criada em comandos, callbacks etc, mas como iremos usar um Exemplo de salvamento de dados de um Player, usaremos a callback "OnGameModeInit", CODE:
pawn Код:
mysql_connect(host, user, database, senha);
if(mysql_ping() >= 1) print("=> Conectado ao Banco de Dados!");
else print("=> Incapaz de conectar ao banco de dados!");
mysql_query("CREATE TABLE IF NOT EXISTS suatabela(usuario VARCHAR(24), senha VARCHAR(24), score INT(20), dinheiro INT(20) )");
Explicaзгo:
mysql_connect: conecta a databese, de acordo com os dados definidos lб no inicio
mysql_ping: usamos aqui para verificar se a conexгo foi estabelecida com sucesso
mysql_query: uma das principais funзхes do MySQL, com ela podemos criar Tabelas, Deleta-las, Seta-las, Atualiza-las etc...
Explicando o uso do query neste casso:
CREATE TABLE IF NOT EXISTS (ou em Portuga: "Criar Tabela caso nгo exista...") faz com crie uma tabela caso tal nгo exista, e o que ela irб armazenar, que no caso serб "usuario, senha, score e dinheiro" (VARCHAR usa-se como se fosse o "%s" do format e INT para nъmeros [%d, %i etc...])


Inserindo uma Tabela:
pawn Код:
new query[200], playername[MAX_PLAYER_NAME]; //Criando vбriaveis necessarias
format(query, sizeof(query), "INSERT INTO `suatabela` (usuario, senha, score, dinheiro) VALUES ('%s', '%s', '%d', '%i')", GetPlayerName(playerid, playername, sizeof(playername)), Senha[playerid], GetPlayerScore(playerid), GetPlayerMoney(playerid));
mysql_query(query); //Irб dar o query de acordo com o que foi formatado acima
Explicaзгo:
INSERT INTO serve para inserir algo na tabela criada (uma linha para ficar mais fбcil), sendo:
"INSERT INTO `suatabela` (variavel1, variavel2) VALUES (valor1, valor2)"

Nгo confunda INSERT INTO com CREATE TABLE, veja:
CREATE TABLE serve para CRIAR a Tabela, sem nenhuma "linha", e sem valores definidos.
INSERT INTO server para Inserir algo na tabela, uma "linha" e definir seus valores, nгo se deve usar estб funзгo para atualizar dados, pois ela ira inseri-lуs, ou seja, criar um monte de "linha", ao invйs de modifica-lб.



Atualizado Tabelas/Dando novos Valores:
pawn Код:
new query[200], playername[MAX_PLAYER_NAME]; //Criando vбriaveis necessarias
format(query, sizeof(query), "UPDATE `suatabela` SET senha = '%s', score = '%d' AND dinheiro = '%i' WHERE usuario = '%s'", Senha[playerid], GetPlayerScore(playerid), GetPlayerMoney(playerid), GetPlayerName(playerid, playername, sizeof(playername)));
mysql_query(query); //Irб dar o query de acordo com o que foi formatado acima
Explicaзгo:
"ATUALIZAR `suatabela` SETAR variavel1 = valor1, variavel2 = valor2 NA LINHA QUE FOR usuario = nome1"
Resumindo, ele atualiza "suatabela" e seta as variбveis de acordo com o valor e nгo se esqueзa do "WHERE" (para verificar qual "linha" tem o "usuario = nomedoplayer") no final, se nгo todas as "linhas" serгo atualizadas...

Getando Valores:
pawn Код:
new query[200], playername[MAX_PLAYER_NAME], loadstr[26]; //Criando vбriaveis necessarias
    format(query, sizeof(query) , "SELECT * FROM `suatabela` WHERE usuario = '%s'" , GetPlayerName(playerid, playername, sizeof(playername)));
    mysql_query(query); //Irб dar o query de acordo com o que foi formatado acima
    mysql_store_result(); //Guarda o resultado (ava kk)
    if(mysql_num_rows()) //Retorna o numero de linhas do resultado (query) - Olhei na Wiki, nгo me lembro muito bem desta funзгo -q
    {
        while(mysql_retrieve_row()) //Retorna a linha que tem "usuario = nomedoplayer"
        {
            SetPlayerScore(playerid, mysql_get_field("score", loadstr)); //Seta o score de acordo com a "linha" que tem "usuario = nomedoplayer"
            GivePlayerMoney(playerid, mysql_get_field("dinheiro", loadstr)); //Mesma coisa
        }
    }
    mysql_free_result(); //Libera o resultado, nгo se esqueзa!
Explicaзгo:
"SELECIONAR TUDO DA suatabela NA LINHA QUE FOR usuario = nome1"
Preciso dizer mais nada disso nй kkk


Comparando dados da Tabela:
pawn Код:
new query[200], playername[MAX_PLAYER_NAME], loadstr[26]; //Criando vбriaveis necessarias
    format(query, sizeof(query), "SELECT * FROM suatabela WHERE usuario = '%s' AND senha = '%s'", GetPlayerName(playerid, playername, sizeof(playername)), inputtext);
    mysql_query(query); //Irб dar o query de acordo com o que foi formatado acima
    mysql_store_result(); //Guarda o resultado (ava kk)
    if(mysql_num_rows()) //Retorna o numero de linhas do resultado (query) - Olhei na Wiki, nгo me lembro muito bem desta funзгo -q
    {
        while(mysql_retrieve_row()) //Retorna a linha que tem "usuario = nomedoplayer e senha = variavel1"
        {
            SetPlayerScore(playerid, mysql_get_field("score", loadstr)); //Seta o score de acordo com a "linha" que tem "usuario = nomedoplayer e senha = variavel1"
            GivePlayerMoney(playerid, mysql_get_field("dinheiro", loadstr)); //Mesma coisa
        }
    }
    else
    {
        //Caso ele erre a senha
    }
    mysql_free_result(); //Libera o resultado, nгo se esqueзa!
Explicaзгo:
"SELECIONAR TUDO DA suatabela NA LINHA QUE FOR usuario = nome1 e senha = valor1"
Ou seja, se o cara tiver o nome na Tabela (como "usuario") e acertar a senha, o CODE prossegue, este CODE irб dar alguns erros, pois vocк deve adapta-lу ao seu Sistema de Login e precisaria de estar em "OnDialogResponse" pois ele contйm inputtext (a senha que o cara digitou)...



OBS: Para nгo dar erros coloque isso no topo do GM:
pawn Код:
new Senha[MAX_PLAYERS][20];
Este CODE nгo salva a senha, mas eu mostrei como fazer, basta adapta-lу ao seu GameMode.

PS: Sei que hб alguns erros, se encontrar algum favor postar, pois errar й Humano...

Espero que gostem, comente !


#EDIT, caso queira usar a versгo R7, й a mesma coisa, mas ao invйs de usar o "format" e depois o "mysql_query", vocк simplesmente terб apenas que trocar o "format" por isso:
https://sampwiki.blast.hk/wiki/MySQL#mysql_format
Reply
#2

Enquanto vocк usa o R6 que й 400x mais lento que o R7 , eu uso o R7, se poder faзa um tutorial do R7...
@Edit

Vocк usa o R5? Vish, ainda vai recomendar para os novatos? Antes de querer ensinar atualize-se...
Reply
#3

Quote:
Originally Posted by BlueX
Посмотреть сообщение
Enquanto vocк usa o R6 que й 400x mais lento que o R7 , eu uso o R7, se poder faзa um tutorial do R7...
Eu disse R5... E nгo ligo para 50ms de diferenзa...

#EDIT
Exato, eu quero ensinar, nгo confundi-lуs com o R7, que acredito eu que seja bem mais confuso...
Reply
#4

Quote:
Originally Posted by CidadeNovaRP
Посмотреть сообщение
Eu disse R5... E nгo ligo para 50ms de diferenзa...

#EDIT
Exato, eu quero ensinar, nгo confundi-lуs com o R7, que acredito eu que seja bem mais confuso...
50ms de difrenзa? AAAAAAAHAHAHA, entгo me pergunta para que й que existe updates, para concertar bugs, mas vocк que sabe, se quer ensinar a usarem uma versгo lenta, beleza entгo.
Reply
#5

Quote:
Originally Posted by BlueX
Посмотреть сообщение
50ms de difrenзa? AAAAAAAHAHAHA, entгo me pergunta para que й que existe updates, para concertar bugs, mas vocк que sabe, se quer ensinar a usarem uma versгo lenta, beleza entгo.
Cara, й jeito de falar -q Eu sei que й mais lerdo, mas й mais Simples sacas
Reply
#6

Quote:
Originally Posted by CidadeNovaRP
Посмотреть сообщение
Cara, й jeito de falar -q Eu sei que й mais lerdo, mas й mais Simples sacas
Isso й para vocк, experimenta usar R7, agora cara R5 nгo tem download ACHO, mas mesmo assim vai ser mau para os novatos, a dica й vocк ensinar uma coisa atualizada, nгo й ensinar o R5 sу porque gosta, sendo que existe um R7...

O tutorial estб bom, unica coisa que estragou mesmo foi o uso de R5...
Reply
#7

Nao COnsuigo atualizar meu plugin fika dando erros na hora de compilar

olhem os erros
:
Код:
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(998) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(999) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(1000) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(1001) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(1002) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(1003) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(1177) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(1196) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(1263) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(1315) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(1419) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(2109) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(2131) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(2155) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(2244) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(2249) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(2252) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(4227) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(4240) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(4245) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(4247) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(4434) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(4439) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(6292) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(6298) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(6303) : error 017: undefined symbol "mysql_query"
Usava r5 e nem dava isso
dai to tentando mudar para r7 da isso ;/
Reply
#8

Quote:
Originally Posted by ReDKiiL
Посмотреть сообщение
Nao COnsuigo atualizar meu plugin fika dando erros na hora de compilar

olhem os erros
:
Код:
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(998) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(999) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(1000) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(1001) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(1002) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(1003) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(1177) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(1196) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(1263) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(1315) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(1419) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(2109) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(2131) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(2155) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(2244) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(2249) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(2252) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(4227) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(4240) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(4245) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(4247) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(4434) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(4439) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(6292) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(6298) : error 017: undefined symbol "mysql_query"
D:\ReDKiiL-PC\Documentos\Servidores SAMP\HS\gamemodes\gm.pwn(6303) : error 017: undefined symbol "mysql_query"
Usava r5 e nem dava isso
dai to tentando mudar para r7 da isso ;/
O r7 nгo tem mysql_query , mas tem mysql_format_query
Reply
#9

Quote:
Originally Posted by kikito
Посмотреть сообщение
O r7 nгo tem mysql_query , mas tem mysql_format_query
Mais й a Mesma Coisa?
Reply
#10

Quote:
Originally Posted by ReDKiiL
Посмотреть сообщение
Mais й a Mesma Coisa?
Nгo...

Assim que eu tiver "tempo" farei um tutorial do r7 :P
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)