Revisão 2: Criamos a base de dados e conectamos a partir de uma página

Continuamos com a criação da primeira aplicação web de teste em CodeIgniter. Agora faremos os passos necessários para criar e conectar a base de dados.

Por Miguel Angel Alvarez - Tradução de Celeste Veiga


Publicado em: 21/11/11
Valorize este artigo:
No artigo anterior do Manual de CodeIgniter começamos uma revisão de tudo aquilo que aprendemos até o momento. Portanto, se não o fizemos, é bom ler as explicações da primeira parte desta aplicação de teste em CodeIgniter. Anteriormente vimos como criar nosso primeiro controlador e nossa primeira visão. Agora começaremos a trabalhar com os módulos e com as bases de dados.

4.- Crio uma tabela "artigos" na base de dados

Como em minha aplicação vou ter artigos, vou criar uma tabela onde armazená-los. Utilizarei uma base de dados MySQL que tenho em local. Criem-na com o método que prefiram, mas eu utilizo a PhpMyAdmin que tenho instalado por padrão com meu pacote Wamp.

Terei que criar uma base de dados que vou chamar, por exemplo, "aplicacaoartigos" e depois uma tabela chamada "artigo", que terá os seguintes campos:

  • id (int, auto incremental e chave primaria)
  • titulo (varchar 100)
  • descricao (varchar 200)
  • corpo (text)
Caso sirva para alguma coisa , coloco aqui o código SQL do create table.

CREATE TABLE `artigo` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`titulo` VARCHAR( 100 ) NOT NULL ,
`descricao` VARCHAR( 200 ) NOT NULL ,
`corpo` TEXT NOT NULL
)

Antes de sair de PhpMyAdmin, ou de qualquer outro gerenciador de base de dados, vamos inserir manualmente alguns registros na tabela de "artigo" com dados de teste.

5.- Configuro CodeIgniter para a conexão com esta base de dados

Agora vou dizer a CodeIgniter que realize uma conexão automática com a base de dados que acabo de criar, que seja ativada em todas as páginas de dentro de meu web site. Para isso começo editando o arquivo de configuração database.php (system/application/config/database.php) onde devem figurar os dados da base de dados que desejo utilizar.

Temos que editar pelo menos os seguintes dados:

$db['default']['hostname'] = "localhost";
$db['default']['username'] = "root";
$db['default']['password'] = "";
$db['default']['database'] = "aplicacaoartigos";

Agora devo dizer a CodeIgniter que conecte automaticamente, incluindo sempre as bibliotecas de conexão com base de dados. Para isto temos que editar o arquivo de configuração autoload.php (system/application/config/autoload.php), no lugar onde se indica quais bibliotecas queremos carregar sempre.

$autoload['libraries'] = array('database');

6.- Crio um primeiro modelo de artigos

Agora vou criar uma primeira aproximação ao modelo de artigos. No momento só vou colocar uma função para trazer os últimos 5 artigos.

Nota: O código que veremos a seguir é PHP 5. PHP 4 teria alguma diferença pelos nomes dos construtores, como já foi explicado.

<?php
class Artigo_model extends Model {

   function __construct(){
      parent::Model();
   }
   
   function deme_ultimos_artigos(){
      $ssql = "select * from artigo order by id desc limit 5";
      return mysql_query($ssql);
   }
}
?>

Nota: Neste modelo estamos utilizando as próprias funções de acesso à base de dados de MySQL. Simplesmente vou comentar que em CodeIgniter existe um mecanismo de abstração de base de dados que se poderia utilizar para escrever código com funções que sirvam para qualquer tipo de base de dados que possamos utilizar, e não só MySQL.

Salvamos este modelo no arquivo "artigo_model.php" dentro da pasta dos modelos (system/application/models).

7.- Atualizo o controlador

Agora vamos mudar um pouco o código de nosso controlador inicial, para colocar algumas outras coisas que nos servirão para duas coisas:
  • Dizer a ele que vou trabalhar com o modelo de artigos
  • Enviar à visão da portada ("home") os dados dos últimos artigos publicados
  • Ademais, para aproveitar vou carregar um helper de URL, que tem uma função que me servirá de utilidade dentro da visão para construir as URL para ver os artigos.
<?php
class Artigos extends Controller {
   function index(){
      //carrego o helper de url, com funções para trabalho com URL do site
      $this->load->helper('url');
      
      //carrego o modelo de artigos
      $this->load->model('Artigo_model');
      
      //peço os ultimos artigos ao modelo
      $ultimosArtigos = $this->Artigo_model->de me_ultimos_artigos();
      
      //crio o array com dados de configuração para a visao
      $dados_visao = array('rs_artigos' => $ultimosArtigos);
      
      //carrego a visao passando os dados de configuracao
      $this->load->view('home', $dados_visao);
   }
}
?>

Nota: O código está comentado e se houver dúvidas recomendamos reler este Manual de CodeIgniter. Não obstante, no código anterior há uma coisa que são os "helpers" que ainda não explicamos. São simplesmente bibliotecas de código com funções que resultarão úteis à hora de fazer aplicações web com CodeIgniter, que estão classificadas por temática. Nós estamos carregando o helper "url", que contém algumas series de funções para trabalhar com URLs. Especificamente utilizaremos a função site_url() do helper "url", um pouco mais adiante.

8.- Atualizo a visão "home"

Agora vamos mudar o código de nossa visão de portada, já que queremos que mostre também os últimos artigos publicados no site, cada um com um link para a URL onde se mostre cada artigo.

<html>
<head>
<title>Portada de meu site</title>
</head>
<body>
<h1>Benvindo a minha web</h1>
<p>Estes são os últimos artigos publicados.</p>
<?php
while ($fila = mysql_fetch_array($rs_artigos)){
   echo '<p>';
   echo '<a href="' . site_url('/articulos/muestra/' . $fila['id']) . '">' . $fila['titulo'] . '</a>';
   echo '</p>';
}
?>

</body>
</html>

Podemos ver como fazemos um recorrido aos registros de últimos artigos trazidos da base de dados com ajuda do modelo e enviados à visão por meio do controlador. Ademais, vemos que está sendo utilizada a função site_url() que pertence ao helper "url" que havíamos carregado no controlador.

Nota: Aqui também estamos utilizando diretamente funções de MySQL. No entanto, CodeIgniter tem algumas bibliotecas que nos ajudariam a fazer isto de outra maneira. Não obstante, por agora queremos limitá-los ao que conhecemos do framework.

Uma vez atualizada a visão, podemos acessar a página raiz de nossa aplicação, que deveria mostrar os últimos artigos que havia carregados na base de dados, na tabela artigo, com um link para várias páginas, onde se mostra cada um dos artigos (não criadas ainda). É claro, vocês têm que ter inserido algum artigo na tabela para que ele seja mostrado.

Temos a primeira parte de nossa aplicação com acesso à base de dados, criada em poucos minutos com CodeIgniter. Porém, ainda temos que complicá-lo um pouco mais. No próximo artigo faremos esta aplicação web um pouco maior.





Comentários do artigo
Foram enviados 2 comentários ao artigo
2 comentários não revisados
0 comentários revisados

Usuários :    login / registro

Manuais relacionados
Categorias relacionadas
O autor

Home | Sobre nós | Copyright | Anuncie | Entrar em contato