Vamos dar continuidade ao desenvolvimento da aplicação usando o CodeIgniter, na pasta sirh/system/application/controllers crie o arquivo bacia.php com o conteúdo abaixo:
<?php class Bacia extends CI_Controller { function __construct() { parent::__construct(); } function index() { echo "<h1>Testando... 1, 2, 3</h1>"; } }
No código anterior, criamos o controlador bacia, com a função index, que é exibida por default quando o controlador é chamado. Logo ao digitarmos a url: http://localhost/sirh/index.php/bacia, veremos a mensagem de teste (Figura 1).
Figura 1 - teste do controlador bacia |
Testado o funcionamento do controller bacia, vamos adicionar o cabeçalho e título da nossa página, modificando o código da função index:
function index() { $data['titulo'] = "SIRH"; $data['cabecalho'] = "Bacias Hidrográficas"; $this->load->view('bacia_view', $data); }
agora, dentro da pasta views, em sirh/system/application/, crie um arquivo com o nome bacia_view.php, com o seguinte conteúdo:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title><?=$titulo?></title> </head> <body> <h2><?=$cabecalho?></h2> </body> </html>
Abra mais uma vez o endereço http://localhost/sirh/index.php/bacia , o resultado deve ser o da Figura 2
Figura 2 - definidos o título e o cabeçalho da página |
Está na hora de inserirmos alguns dados para a visualização, execute o script abaixo no banco, para povoar as duas tabelas:
-- INSERINDO 3 Bacias Hidrográficas INSERT INTO bacia_hidrografica(nome_bacia) VALUES ('Abiaí'); -- INSERT INTO bacia_hidrografica(nome_bacia) VALUES ('Mamanguape'); -- INSERT INTO bacia_hidrografica(nome_bacia) VALUES ('Gramame'); -- INSERINDO 6 Rios nas suas respectivas Bacias INSERT INTO rio(nome_rio, comprimento_km, id_bacia) VALUES ('Papocas', 9, 1); INSERT INTO rio(nome_rio, comprimento_km, id_bacia) VALUES ('Graú', 12, 1); -- INSERT INTO rio(nome_rio, comprimento_km, id_bacia) VALUES ('Mogeiro', 23, 2); INSERT INTO rio(nome_rio, comprimento_km, id_bacia) VALUES ('Gavião', 9, 2); -- INSERT INTO rio(nome_rio, comprimento_km, id_bacia) VALUES ('Guarabira',31, 3); INSERT INTO rio(nome_rio, comprimento_km, id_bacia) VALUES ('Jacaré', 7, 3);
vamos agora exibir os dados que foram inseridos na tabela bacia_hidrografica, para isso será necessário criar um model (dentro de sirh/system/application/model) , que chamaremos de bacia_model.php, com o seguinte conteúdo:
<?php class Bacia_model extends CI_Model { function __construct() { parent:__construct(); } function get_bacia() { $this->db->order_by('nome_bacia', 'asc'); $query = $this->db->get('bacia_hidrografica'); if ($query->num_rows() > 0) { return $query->result(); } else { return false; } } }
Agora, vamos modificar o nosso controlador, carregando o model criado e povoando uma variável com um array de objetos, obtidos através da função get_bacia():
<?php class Bacia extends CI_Controller { function __construct() { parent::__construct(); $this->load->model('bacia_model'); } function index() { $data['titulo'] = "SIRH"; $data['cabecalho'] = "Bacias Hidrográficas"; $data['bacias'] = $this->bacia_model->get_bacia(); $this->load->view('bacia_view', $data); } }
Para finalizar esta postagem, vamos agora modificar a nossa view, basicamente vamos varrer o array de objetos $data['bacias'] e exibir os resultados, também vamos utilizar a função anchor() do CodeIgniter para definir os links desta página, que serão finalizados no próximo Post:
<h2><?=$cabecalho ?></h2> <p><?=anchor('bacia/criar', 'Criar Bacia Hidrográfica') ?></p> <table border="1"> <thead> <tr> <th> Nome da Bacia </th> <th> Ações </th> </tr> </thead> <tbody> <?php if ($bacias != false): ?> <?php foreach ($bacias as $bacia): ?> <tr> <td> <?=$bacia->nome_bacia ?> </td> <td> <?=anchor('bacia/editar/' . $bacia->id_bacia, 'Editar') ?> | <?=anchor('bacia/deletar/' . $bacia->id_bacia, 'Deletar') ?> </td> </tr> <?php endforeach; ?> <?php else: ?> <p>Não há registros cadastrados!</p> <?php endif ?> </tbody> </table>
Salve todos os arquivos e abra o navegador e veja o resultado: http://localhost/sirh/index.php/bacia
Figura 3 - Exibição das Bacias Hidrográficas |
8 comentários:
O exemplo só funcionou para vc.
Para mim e para aqueles que utilizaram a versão 1.7
Muito bom! Funcionou 100% pra quem seguiu o tutorial.
Bom, para mim tb não funcionou, apresentou a seguinte msg: "Fatal error: Class 'Controller' not found in C:\Apache\htdocs\sirh\application\controllers\bacia.php on line 1"
Marcello, pode nos ajudar... parabéns pela iniciativa...
abraço.
Leandro Marcel
Leandro, ele tutorial é para a versão 1.7, vou atualizá-lo muito em breve para a versão mais atual, um abraço
Muito bom o exemplo e bem explicativo. Obrigado.
Olá Marcelo, estou utilizando a versão 2.1.4 do CodeIgniter. Tudo funciona normal até a parte do artigo 2, onde era para ser exibido os dados na view.
Quando coloco aquele php de criação da table, nada é mostrado na view. Alguma dica, alguma coisa que posso usar para encontrar o erro. ?
Obrigado
Uberdam, habilite a visualização de erros no php.ini, acredito que o seu PHP não está habilitado para o PostgresSQL. Um abraço.
Postar um comentário