Postado Janeiro 31, 2015 10 anos Este é um post popular. Boa noite! Trago ao fórum um simples porém útil tutorial de manipulação dos valores da database. O uso da database me garante melhor organização das minhas variáveis, em comparação a storages. Por storages você está preso a valores numéricos. Via database, você pode atribuir nomes, utilizar strings, e organizar as variáveis em grupos. Responderei dúvidas conforme for possível. Para inserir uma linha nova em uma tabela db.executeQuery("INSERT INTO `accounts` (`id` ,`name` ,`password`)VALUES ('5', 'marcelo', 'druida');") Neste exemplo, será adicionado na tabela accounts, uma nova conta marcelo/druida. (na verdade a senha é encriptada, mas serve como exemplo). Para alterar valores na database db.executeQuery("UPDATE players SET level = 1 WHERE id = 1 ;") Neste exemplo, o valor do level do player com ID 1 será alterado. players representa a tabela que será mudada level representa a coluna WHERE id representa a restrição, para que seja modificado apenas o player 1 Você pode alterar várias colunas ao mesmo tempo e usar várias restrições: db.executeQuery("UPDATE players SET level = 1, experience = 0, lookType = 128 WHERE vocation = 1, town_id = 2 ;") Neste exemplo, apenas o players Sorcerer que residem na town 2, terão o level, experience e outfit alterados. Devo-lhes lembrar, que qualquer alteração nos players deve ser com o player offline. Para isso, use: doRemoveCreature(cid) antes de alterar itens, mana, skills, etc. Sempre que o player sai os valores são atualizados, e a modificação será perdida! Para deletar valores db.executeQuery("DELETE FROM accounts WHERE id = 50 ;") Remove a conta id 50 da tabela. Você pode usar mais que uma restrição: WHERE premdays = 0, group_id = 1 Para pegar valores Em uma única linha de valores id = getPlayerGUIDByName(getPlayerName(cid)) local info = db.getResult("SELECT lastlogin, description FROM players WHERE id = " .. id .. " ;") local lastlogin = info:getDataInt("lastlogin") local description = info:getDataString("description") info:free() Explicação: Em info é armazenada a consulta à database. Para transformar a consulta em valores, você usa os métodos getDataInt e getDataString. Após adquirir os valores, use o método free() para fechar a consulta. Lembrando que você pode usar múltiplas restrições. Múltiplas linhas local player = db.getResult("SELECT * FROM `players` WHERE level = 50;") tabela = {} if player:getID() ~= -1 then while(true) do table.insert(tabela, {player:getDataInt("id"), player:getDataInt("cap"), player:getDataInt("balance")}) if not(player:next())then break end end player:free() else print("No database!") end return tabela Explicação: Todos os players serão selecionados nesta consulta. O asterisco * representa que todas as colunas da tabela serão selecionados. Portanto, você pode pegar qualquer coluna que quiser. O método getID() garante que a consulta foi bem sucedida. Caso contrário já retorna um erro. O laço de repetição while(true) do garante que todas as linhas da consulta serão vistas. Dentro do laço de repetição, será inserido na tabela = {} os valores da id, cap e balance. if not(player:next())then break end garante que na ultima linha da consulta o laço de repetição chega ao fim. Se por exemplo houver 3 players level 50, a tabela retornada terá o formato: tabela = {{id1,cap1,balance1},{id2,cap2,balance2},{id3,cap3,balance3}} ------ Como complemento, deixo link para tópico do administrador Matheus http://www.tibiaking.com/forum/topic/2023-phpmyadmin-comandos-uteis/ Bons estudos! Abraços! Editado Janeiro 31, 2015 10 anos por Marcelo Druida (veja o histórico de edições)
Postado Janeiro 31, 2015 10 anos Ótimo tutorial, mano. Seu tutorial foi aprovado, você recebeu um ponto de reputação e o tópico será movido para a área correta. Esperamos mais conteúdos como este. Te ajudei?? REP + e ficamos quites... http://www.tibiaking.com/forum/uploads/emoticons/default_happyy.png' alt=';D'> Atenciosamente, Daniel. Abraços! Meus tutoriais: Programação: Resolvendo QUALQUER erro na data base. Scripts (system's, creaturescripts, mod's, NPC's, etc): (Sistema) GOD Ambient Light Full. Adicionando novas mounts ao servidor [NPC] Papai Noel que dá presente todo ano. Web-site: Resolvendo problema de caracteres especiais em PHP Formatando textos em PHP! Mudando a cor, tamanho, fonte, etc. Criando e configurando tabelas para paginas PHP
Postado Janeiro 31, 2015 10 anos (na verdade a senha é encriptada, mas serve como exemplo). Na verdade, só é encriptada a senha etc... Caso no config.lua não esteja "plain" como encriptação...pelo o que eu sei... Editado Janeiro 31, 2015 10 anos por Snowsz (veja o histórico de edições) _ .-'` `} _./) / } .'o \ | } '.___.'`.\ {` /`\_/ , `. } ME DA UMA NOZ! \=' .-' _`\ { `'`;/ `, } _\ @ ; } /__`;-...'--' Cluck!
Postado Janeiro 31, 2015 10 anos Autor Na verdade, só é encriptada a senha etc... Caso no config.lua não esteja "plain" como encriptação...pelo o que eu sei... É, eu não conheço sobre isso.. meu servidor está configurado como sha1, nunca troquei. Ótimo tutorial, mano. Seu tutorial foi aprovado, você recebeu um ponto de reputação e o tópico será movido para a área correta. Esperamos mais conteúdos como este. É um prazer dividir conhecimento. Sempre que me sentir inspirado em trazer algum conteúdo, certamente o farei. Se o fórum necessitar de algum conteúdo, posso também trabalhar nisto. Só preciso ser informado. Abraços!
Postado Março 8, 2015 10 anos O tópico foi movido para a área correta, preste mais atenção da próxima vez! Leia as regras do fórum: http://tibiaking.com/forum/topic/1281-regras-gerais/?p=7680 Este tópico foi movido: De: "OTServ → Scripting → Tutoriais de Scripting" Para: "OTServ → Programação Open Tibia → Tutoriais de Programação" Te ajudei?? REP + e ficamos quites... http://www.tibiaking.com/forum/uploads/emoticons/default_happyy.png' alt=';D'> Atenciosamente, Daniel. Abraços! Meus tutoriais: Programação: Resolvendo QUALQUER erro na data base. Scripts (system's, creaturescripts, mod's, NPC's, etc): (Sistema) GOD Ambient Light Full. Adicionando novas mounts ao servidor [NPC] Papai Noel que dá presente todo ano. Web-site: Resolvendo problema de caracteres especiais em PHP Formatando textos em PHP! Mudando a cor, tamanho, fonte, etc. Criando e configurando tabelas para paginas PHP
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.