4 Introdução do Banco de Dados Criar Módulos XOOPS



2011-02-20

Criando Módulos XOOPS - 04: Introdução do Banco de Dados:

Criando Módulos XOOPS - 04: Introdução ao Banco de Dados

Olá pessoal depois de uma pausinha, retomamos com a quarta etapa deste "mini curso" relativo aos Bancos de Dados, em particular o MySql, que é o gerenciador de banco de dados padrão utilizado pelo XOOPS. Nesta etapa vamos definir melhor o destino do nosso módulo.

04: Banco de Dados MySql

04.1. Para esta etapa utilizaremos um pouco de linguagem SQL, somente o necessário para funcionar, qualquer dúvida poste no tópico que poderemos discutir a respeito.

04.2. Antes de continuar devemos parar um instante e definir a tarefa do nosso módulo, afinal é para isso que um módulo serve, realizar uma tarefa no portal.

04.3. Por motivos didáticos nosso módulo será uma agenda de telefone simples, eu sei que o módulo nativo XOOPS Profile dá conta disso rapidinho e sem programar nada, porém uma agenda de telefone simple terá tudo o que precisamos aprender para desenvolver um módulo que lê e grava dados no banco de dados.

04.3.1. Como é uma agenda precisaremos primeiro criar as tabelas do banco de dados, para isso devemos pensar no modelo do módulo.

04.3.2. Vejamos, uma simples agenda de telefone precisa guardar dados como: nome e telefone, ainda sabemos que alguns dos contatos poderá ter mais de um telefone, e, por fim queremos que agrupar os contatos por grupos.

04.3.3. Para isso precisaremos de uma tabela que armazene o nome e o grupo do contato, para não repetir o contato, armazenaremos os telefones em outra tabela, devemos ter ainda uma tabela para guardar os grupos e também criaremos uma tabela para armazenar os tipos de telefones cadastrados (essa idéia eu emprestei da agenda do meu celular).

04.4. Como padrão as tabelas do módulo devem ter em seu nome o nome do módulo, com a principal finalidade de distinguir as mesmas dentro do banco de dados, então todas nossos tabelas começarão com o nome "meumodulo_".

04.4.1. Primeiro passo devemos criar um subdiretório chamado "sql" dentro do diretório do nosso módulo, ficando assim: "/modules/meumodulo/sql/". Então vamos criar as tabelas, abra no seu editor um arquivo em branco e o digite o seguinte código:

CREATE TABLE `meumodulo_contatos` (

`mmc_id` int(11) unsigned NOT NULL AUTO_INCREMENT,

`mmc_nome` varchar(255) NOT NULL,

`mmc_genero` char(1) NOT NULL,

`mmc_grupo` int(2) unsigned NOT NULL,

PRIMARY KEY (`mmc_id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

04.4.2. Explicando: Estamos criando uma tabela chamada "meumodulo_contatos" com os campos id, nome, gênero e grupo. Vemos que adicionamos o prefixo "mmc_" no nome de cada campo, temos esse hábito para ficar fácil de distinguí-los no código e evitar conflitos com o mesmo nome (embora essa possibilidade seja remota). Sim adicionamos o dado gênero (masculino ou feminino) para depois podermos selecionar por mais essa opção. Continuando no mesmo arquivo digite o seguinte código:

CREATE TABLE `meumodulo_grupos` (

`mmg_id` int(11) unsigned NOT NULL AUTO_INCREMENT,

`mmg_grupo` varchar(50) NOT NULL,

PRIMARY KEY (`mmg_id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

04.4.3. Neste trecho criamos uma tabela chamada "meumodulo_grupos" que terá a função de armazenar o nome dos grupos de contatos que teremos no módulo, por este motivo temos apenas os campos id e grupo, também com um prefixo próprio "mmg_". Continuemos digitando:

CREATE TABLE `meumodulo_telefones` (

`mmt_id` int(11) unsigned NOT NULL,

`mmt_cid` int(11) unsigned NOT NULL,

`mmt_ddd` int(2) unsigned NOT NULL,

`mmt_numero` int(8) unsigned NOT NULL,

`mmt_tipo` int(2) unsigned NOT NULL,

PRIMARY KEY (`mmt_id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

04.4.4. Neste trecho criamos uma tabela chamada "meumodulo_telefones" que terá a função de armazenar os números de telefones dos nossos contatos, com os campos id, id do contato, ddd, numero e tipo, também com um prefixo próprio "mmt_". Continuamos a digitar:

CREATE TABLE `meumodulo_tipos` (

`mmtt_id` int(11) unsigned NOT NULL AUTO_INCREMENT,

`mmtt_tipo` varchar(50) NOT NULL,

PRIMARY KEY (`mmtt_id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

04.4.5. Neste trecho final criamos a tabela chamada "meumodulo_tipos" que armazenará os tipos de telefones, para isso precisamos apenas de dois campos, id e nome do tipo, também com um prefixo individual "mmtt_".

04.4.6. Agora devemos salvar o arquivo com o nome "mysql.sql" dentro do subdiretório recém criado, ficando assim: "/modules/meumodulo/sql/mysql.sql".

04.5. Agora devemos informar ao XOOPS que o nosso módulo tem uma tabela sql, abra o arquivo "/modules/meumodulo/xoops_version.php" e no final do arquivo (antes do ? >) digite o seguinte código:

// definimos onde está o dump do mysql

$modversion['sqlfile']['mysql'] = "sql/mysql.sql";


// definimos as tabelas do módulo

$modversion['tables'][0] = 'meumodulo_contatos';

$modversion['tables'][1] = 'meumodulo_grupos';

$modversion['tables'][2] = 'meumodulo_telefones';

$modversion['tables'][3] = 'meumodulo_tipos';

04.5.1. Salve o arquivo. Com esse código informamos ao XOOPS que o nosso módulo tem banco de dados e está no arquivo "mysql.sql" e ainda informamos que temos as quatro tabelas.

04.6. Vá até administração de módulos do XOOPS e desinstale o módulo e em seguida instale novamente, veremos que na tela de log da instalação vai aparecer a informação de tabela do XOOPS criada com sucesso, o único detalhe novo é que no nome da tabela criada vai estar o prefixo das tabelas do seu XOOPS.

04.7. Segue a estrutura atualizada do nosso módulo:

/meumodulo/

/meumodulo/images/

/meumodulo/images/meumodulo_logo.png

/meumodulo/language/

/meumodulo/language/english/

/meumodulo/language/english/main.php

/meumodulo/language/english/modinfo.php

/meumodulo/language/pt-br_utf8/

/meumodulo/language/pt-br_utf8/main.php

/meumodulo/language/pt-br_utf8/modinfo.php

/meumodulo/sql/

/meumodulo/sql/mysql.sql

/meumodulo/templates/

/meumodulo/templates/meumodulo_index.php

/meumodulo/index.php

/meumodulo/xoops_version.php

04.7.1. Para não confundir paramos por aqui, no próximo tópico criaremos os formulários para inserção dos dados no banco de dados.

04.8. Lembrem que as discussões e dúvidas estão no Fórum, no tópico Criando Módulos XOOPS – 04: Introdução ao Banco de Dados.




Postar um comentário