Parabéns pelo conteúdo, vou movê-lo para a área de websites, já que esta área se destina mais a códigos prontos de C++.
- Fórum
- OTServ
- Discussion
- Noticias - Arquivo
- [Arquivado]PHP/MYSQL CRUD - Criação website
JA
[Arquivado]PHP/MYSQL CRUD - Criação website
Por Jakimif, 16 de mar. de 2014 em Noticias - Arquivo
tibia
otserv
3
930
info
Grupo: Marquês
Registrado: 16/06/07
Posts: 1.2k
Reputação: +377
Gênero: Masculino
Char no Tibia: Nenhum

17 de março de 2014 às 12:28
4 anos depois...
info
Grupo: Herói
Registrado: 28/11/10
Posts: 3.4k
Reputação: +585
Gênero: Masculino

25 de abril de 2018 às 16:45
Esta noticia foi arquivada.
Este tópico está fechado e foi movido para Noticia - Arquivo.
+ Caso tenha atualizações você poderá criar outro tópico.
Este tópico está fechado e foi movido para Noticia - Arquivo.
+ Caso tenha atualizações você poderá criar outro tópico.


info
Grupo: Campones
Registrado: 05/05/09
Posts: 14
Reputação: +7
Olá a todos, nesses últimos tempos andei pesquisando sobre criação de website para Open Tibia, não achei muita coisa por ai na internet, então resolvi analisar o banco de dados de um servidor de tibia,e cá pra nos os sites atuais não vão muito alem de um crud,para quem não sabe crud são operações basicas feita no banco de dados .
Pensando nisso comecei a desenvolver um website para esse fim, criei algumas classe para fazer todo esse processo e resolvi compartilhar,não vou dar muitos detalhes sobre a classe,apenas postarei exemplos de utilização
A primeira classe vem com nome de banco.class.php responsavel pela conexão com banco de dados e operações CRUD
<?php abstract class banco{ /*Propriedades*/ public $servidor = "localhost"; public $usuario = "root"; public $senha = "senha"; public $nomebanco = "nome"; public $conexao = NULL; public $dataset = NULL; public $extras_select = NULL; public $linhaafetadas = -1; /*Metodos*/ public function __construct(){ $this->conecta(); } public function __destruct(){ if($this->conexao != NULL): mysql_close($this->conexao); endif; } public function conecta(){ $this->conexao = mysql_connect($this->servidor,$this->usuario,$this->senha,TRUE) or die($this->trataerro(__FILE__,__FUNCTION__,mysql_errno(),mysql_error(),true)); mysql_select_db($this->nomebanco) or die($this->trataerro(__FILE__,__FUNCTION__,mysql_errno(),mysql_error(),true)); mysql_query("SET NAMES 'utf8'"); mysql_query("SET character_set_connection=utf8"); mysql_query("SET character_set_client=utf8"); mysql_query("SET character_set_results=utf8"); } public function inserir($objeto){ $sql = "INSERT INTO ".$objeto->tabela." ("; for($i=0;$i<count($objeto->campos_valores);$i++): $sql .= key($objeto->campos_valores); if($i < (count($objeto->campos_valores)-1)): $sql .= ", "; else: $sql .= ") "; endif; next($objeto->campos_valores); endfor; reset($objeto->campos_valores); $sql .= "VALUES ("; for($i=0;$i<count($objeto->campos_valores);$i++): $sql .= is_numeric($objeto->campos_valores[key($objeto->campos_valores)]) ? $objeto->campos_valores[key($objeto->campos_valores)] : "'".$objeto->campos_valores[key($objeto->campos_valores)]."'"; if($i < (count($objeto->campos_valores)-1)): $sql .= ", "; else: $sql .= ") "; endif; next($objeto->campos_valores); endfor; return $this->executaSQL($sql); }// inserir public function atualizar($objeto){ $sql = "UPDATE ".$objeto->tabela." SET "; for($i=0;$i<count($objeto->campos_valores);$i++): $sql .= key($objeto->campos_valores)."="; $sql .= is_numeric($objeto->campos_valores[key($objeto->campos_valores)]) ? $objeto->campos_valores[key($objeto->campos_valores)] : "'".$objeto->campos_valores[key($objeto->campos_valores)]."'"; if($i < (count($objeto->campos_valores)-1)): $sql .= ", "; else: $sql .= " "; endif; next($objeto->campos_valores); endfor; $sql .="WHERE ".$objeto->id."="; $sql .= is_numeric($objeto->valorid) ? $objeto->valorid : "'".$objeto->valorid."'"; echo $sql; return $this->executaSQL($sql); }//atualizar public function deletar($objeto){ $sql = "DELETE FROM ".$objeto->tabela; $sql .=" WHERE ".$objeto->id."="; $sql .= is_numeric($objeto->valorid) ? $objeto->valorid : "'".$objeto->valorid."'"; return $this->executaSQL($sql); }//delete public function selecionaTudo($objeto){ $sql = "SELECT * FROM ".$objeto->tabela; if($objeto->extras_select != NULL): $sql .= " ".$objeto->extras_select; endif; return $this->executaSQL($sql); }//seleciona tudo public function selecionaCampos($objeto){ $sql = "SELECT "; for($i=0;$i<count($objeto->campos_valores);$i++): $sql .= key($objeto->campos_valores); if($i < (count($objeto->campos_valores)-1)): $sql .= ", "; else: $sql .= " "; endif; next($objeto->campos_valores); endfor; $sql .= " FROM ".$objeto->tabela; if($objeto->extras_select != NULL): $sql .= " ".$objeto->extras_select; endif; return $this->executaSQL($sql); }//seleciona tudo public function executaSQL($sql=NULL){ if($sql != NULL): $query = mysql_query($sql) or $this->tratarerro(__FILE__,__FUNCTION__); $this->linhasafetadas = mysql_affected_rows($this->conexao); if(substr(trim(strtolower($sql)),0,6)=='select'): $this->dataset = $query; return $query; else: return $this->linhasafetadas; endif; else: $this->trataerro(__FILE__,__FUNCTION__,NULL,'Ocorreu um erro interno,desculpe',false); endif; }// executa SQL public function retornaDados($tipo=NULL){ switch(strtolower($tipo)): case "array": return mysql_fetch_array($this->dataset); break; case "assoc": return mysql_fetch_assoc($this->dataset); break; case "object": return mysql_fetch_object($this->dataset); break; default: return mysql_fetch_object($this->dataset); break; endswitch; }//retorna dados public function trataerro($arquivo=NULL,$rotina=NULL,$numerro=NULL,$msgerro=NULL,$geraexcept=FALSE){ if($arquivo == NULL) $arquivo="Não informado"; if ($rotina == NULL) $rotina="Não informada"; if ($numerro == NULL) $numerro=mysql_errno($this->conexao); if ($msgerro == NUll) $msgerro=mysql_error($this->conexao); $resultado = 'Ocorreu um erro com os seguintes detalhes:<br /> <strong>Arquivo:</strong> '.$arquivo.'<br /> <strong>Rotina:</strong> '.$rotina.'<br /> <strong>Código:</strong> '.$numerro.'<br /> <strong>Arquivo:</strong> '.$msgerro.''; if($geraexcept = false): echo($resultado); else: die($resultado); endif; } } ?>Uma segunda classe precisou ser criada por fim de organização com o nome de base.class.php responsavel por de fato pegar o nome da tabela no banco de dado e executar as operações
<?php require_once("banco.class.php"); abstract class base extends banco{ public $tabela = NULL; public $campos_valores = array(); public $id = NULL; public $valorid = NULL; public $extras_select = NULL; public function addCampo($campo=NULL,$valor=NULL){ if($campo != NULL): $this->campos_valores[$campo] = $valor; endif; } public function delCampo($campo=NULL){ if(array_key_exists($campo,$this->campos_valores)): unset ($this->campos_valores[$campo]); endif; } public function setValor($campo=NULL,$valor=NULL){ if($campo != NULL && $valor != NULL): $this->campos_valores[$campo] = $valor; endif; } public function getValor($campo=NULL){ if($campo != NULL && array_key_exists($campo,$this->campos_valores)): return $this->campos_valores[$campo]; else: return FALSE; endif; } } ?>Agora vamos preparar a classe para executar as operações desejadas na tabela "accounts" accounts.class.php
<?php require_once ("base.class.php"); class accounts extends base{ public function __construct($campos=array()){ parent::__construct(); $this->tabela = "accounts"; /*Seleciona a tabela*/ if(sizeof($campos)<= 0): $this->campos_valores = array( "email" => 'andre_garehotmail.com' ); else: $this->campos_valores = $campos; endif; $this->id = "id"; } } ?>E por fim exemplo de utilização para começar a utilizar a classe precisamos importar ela na página
<?php require_once ("accounts.class.php"); $accounts = new accounts();Um exemplo pratico atualizando campos na tabela accounts,pode pegar este dados de um formulario, como geralmente é feito
$accounts->setValor('name','Rodrigo'); ## Atualizando o nome 'Rodrigo' na tabela accounts ## $accounts->setValor('password','123455');## Adicionando o 'password' na tabela accounts ## $accounts->atualizar($accounts);Selecionando todos os dados da account,um exemplo disso é o characters.php onde lista as informações do personagem(este exemplo foi feito com account,poderia ser na tabela players)
$accounts->extras_select = "WHERE id = 5"; /*selecionar id,name,email da account ID = 5*/ $accounts->selecionaTudo($accounts); while($res = $accounts->retornaDados()): echo $res->id .' / '.$res->name .' / '.$res->email.'<br/>'; endwhile;Deletando a account no banco de dados
Adicionando uma account, lembrando que pode pegar os dados pelo formulario,como geralmente é feito no exemplo foi feito so Account Name e Password
$accounts->addCampo('name','Jakimif'); $accounts->addCampo('password','123456'); $accounts->inserir($accounts);Editado Março 16 por Jakimif