20
Adicionando Produtos Mostrando os dados do Produto Adicionando Produtos Mostrando os dados do Produto Criado por: Raniere de Lima

Slide 06 adicionando produtos e mostrando produto selecionado

Embed Size (px)

Citation preview

Page 1: Slide 06    adicionando produtos e mostrando produto selecionado

Criado por: Raniere de Lima

Adicionando ProdutosMostrando os dados do Produto

Adicionando ProdutosMostrando os dados do Produto

Page 2: Slide 06    adicionando produtos e mostrando produto selecionado

Criado por: Raniere de Lima

Adicionando ProdutosMostrando os dados do Produto

Adicionando ProdutosMostrando os dados do

Produto

Page 3: Slide 06    adicionando produtos e mostrando produto selecionado

Criado por: Raniere de Lima

Adicionando ProdutosMostrando os dados do Produto

Hoje nós iremos criar a função de Adicionar e Mostrar(Ou Listar) os produtos para os clientes no Mercado Online, e hoje nós faremos as seguintes configurações:

• Criaremos uma View para adicionar os produtos;• Criaremos a função no Controller produtos;• Aprenderemos a utilizar a Session para pegar informações do Cliente;• Adicionaremos um campo na tabela Produtos do Banco de Dados;• Criaremos uma View só para Exibir os produtos;• Conheceremos como utilizar e configurar as Rotas no CodeIgniter.• Exercício;

Page 4: Slide 06    adicionando produtos e mostrando produto selecionado

Adicionando ProdutosMostrando os dados do Produto

Criado por: Raniere de Lima

Para não deixar a tela do usuário cheia de informações de cadastros, vamos verificar se o usuário está logado, e se tiver, exibiremos um anchor (link) para encaminha-lo a tela de cadastro.

Para carregar este formulário, crie uma função no controller de produtos chamada formulario, que irá apenas carregar uma view para o formulário.

Page 5: Slide 06    adicionando produtos e mostrando produto selecionado

Criado por: Raniere de Lima

Adicionando ProdutosMostrando os dados do Produto

Só que se vamos criar um formulário, vamos precisar do helper form do CodeIgniter, e Provavelmente iremos utiliza-la em outros locais. Caso você queira, carregue o form no AutoLoad, caso não queria carregue o helper antes de carregar a view do Formulário.

Neste formulário deve conter os campos: Nome, Preço, Descrição e um botão de Submit.

Page 6: Slide 06    adicionando produtos e mostrando produto selecionado

Criado por: Raniere de Lima

Adicionando ProdutosMostrando os dados do Produto

Page 7: Slide 06    adicionando produtos e mostrando produto selecionado

Criado por: Raniere de Lima

Adicionando ProdutosMostrando os dados do Produto

Só que, se nós vamos cadastrar um produto, precisaremos criar outra função do controller,e uma função chamada cadastrar no nosso Produtos_model, que recebe como parâmetro umArray de produtos.

Então criaremos estas funções.

Page 8: Slide 06    adicionando produtos e mostrando produto selecionado

Criado por: Raniere de Lima

Adicionando ProdutosMostrando os dados do Produto

Só que, se nós vamos adicionar um produto no nosso Banco de Dados, seria legal saber quemEstá vendendo este produto. Só que na nossa tabela não temos este campo, então abriremos o PhpMyAdmin, e na tabela produtos, criaremos um campo chamado vendedor_id.

Para fazer esta alteração, digitaremos o código abaixo para inserir este novo campo.

alter table produtos add column vendedor_id integer

Page 9: Slide 06    adicionando produtos e mostrando produto selecionado

Criado por: Raniere de Lima

Adicionando ProdutosMostrando os dados do Produto

Agora que temos o campo do vendedor no banco de dados, vamos cadastrar nosso produto.

Crie uma função no Controller de produtos, chamada cadastrar que irá receber os dados Informados pelo usuário. Só que, como pegaremos a informação de qual usuário está logado, Se não temos o campo id_usuario no formulário.

Mas se o usuário está logado, ele já fez uma consulta no meu banco de dados , e para não terConsultar de novo, seria legal pegar a id da sessão, que é a id do usuário. Mas como fazer isso?

Crie uma variável chamada Usuário que recebe o usuário da sessão.

Ou seja:

$usuario = $this->session->userdata("usuario_logado");

Page 10: Slide 06    adicionando produtos e mostrando produto selecionado

Criado por: Raniere de Lima

Adicionando ProdutosMostrando os dados do Produto

Logo após criamos o array com os dados do produto, precisaremos carregar o model de produtos, já que iremos adicionar o nosso produto no Banco de Dados. Após carregar, utilize o método salvar para salvarmos o produto no banco de dados. E logo após salvar, iremos usar o flashdata, para informa que o produto foi adicionado com sucesso, e depois iremos redirecionar para a tela inicial.

Page 11: Slide 06    adicionando produtos e mostrando produto selecionado

Criado por: Raniere de Lima

Adicionando ProdutosMostrando os dados do Produto

Nosso código deve estar assim:

Page 12: Slide 06    adicionando produtos e mostrando produto selecionado

Criado por: Raniere de Lima

Adicionando ProdutosMostrando os dados do Produto

Nosso controller já está pronto, porém não criamos a função salvar lá no produtos_model.

Então vamos criar, como vimos a função salvar recebe como parametro um array que contem os dados do produto, e iremos inserir estes dados no nosso banco de dados, porém Iremos inserir na tabela de produtos.

Com isso o código do produtos_model, deve ficar assim:

public function salva($produto){ $this->db->insert("produtos", $produto); }

Page 13: Slide 06    adicionando produtos e mostrando produto selecionado

Criado por: Raniere de Lima

Adicionando ProdutosMostrando os dados do Produto

Pronto, agora nós inserimos o nosso produto no banco de dados. Agora, nós já inserimos e listamos os produtos, mas e se eu quisesse ver apenas um produto especifico? Ou se eu quisesse ver os detalhes de um produto especifico?

Seria legal ter uma pagina, aonde ela iria exibir todos os dados de um produto especifico.

Vamos criar então, porém, aonde vamos colocar isso?

Page 14: Slide 06    adicionando produtos e mostrando produto selecionado

Adicionando ProdutosMostrando os dados do Produto

Aproveitando a nossa index, da pasta Produto. Vamos criar um link, que irá direcionarpara a pagina que detalha os produtos que passa a id. E para fazer isso vamos utilizar um anchor, este Anchor vai substituir o nome do produto, e criará um link para mostrar o produto. Nossa index ficará assim:

<table id="tabela" class="table"> <?php foreach($produtos as $produto) : ?> <tr> <td><?=anchor("produtos/mostrar?id={$produto["id"]}",$produto["nome"])?></td> <td><?=numeroEmReais($produto["preco"]) ?></td> <td><?=$produto["descricao"] ?></td><?php endforeach ?><table>

O que o anchor está fazendo? Está criando um link para o produtos, e exibindo o nome do produto.

Page 15: Slide 06    adicionando produtos e mostrando produto selecionado

Criado por: Raniere de Lima

Adicionando ProdutosMostrando os dados do Produto

Vamos agora criar a função mostrar no controller Produtos, mas como iremos procurar?

A id informada deve ser exatamente para isso, pois através dela iremos procurar no banco de dados e retornaremos todos os valores da id. Então já que vamos utiilizar o banco de dados, precisaremos carregar o produtos_model, e depois utilizar uma função que busque por id, e depois exiba as informações na tela. Mas não temos essa função ainda, mas ela é bem simples de ser criada, passe a idPara a função, verifique a tabela produtos, e retorne a linha no banco de dados, enquanto (where), a id da linha for igual a id informada.

Page 16: Slide 06    adicionando produtos e mostrando produto selecionado

Criado por: Raniere de Lima

Adicionando ProdutosMostrando os dados do Produto

Ou seja, nossa função no produtos_model ficará assim:

O row_array() diferente da result_array(), retorna apenas primeira linha encontrada no banco de dados, enquanto a result_array, retorna todas as linhas.

Page 17: Slide 06    adicionando produtos e mostrando produto selecionado

Criado por: Raniere de Lima

Adicionando ProdutosMostrando os dados do Produto

Agora que temos a nossa função, precisamos apenas utiliza-la e depois retorna os dadosdos produtos que recuperamos no nosso banco de dados, e utiliza os dados na view.

Então ficará semelhante a isso:

public function mostra(){ $id = $this->input->get(“id”); $this->load->model("produtos_model"); $produto = $this->produtos_model->buscar($id); $dados = array("produto" => $produto); $this->load->load("produtos/mostra" , $dados); }

Page 18: Slide 06    adicionando produtos e mostrando produto selecionado

Criado por: Raniere de Lima

Adicionando ProdutosMostrando os dados do Produto

Extra

Page 19: Slide 06    adicionando produtos e mostrando produto selecionado

Criado por: Raniere de Lima

Adicionando ProdutosMostrando os dados do Produto

Nossa url, não fica algo legal, quando acessamos o produto/mostra, pois fica:

http://localhost/CodeIgniter/index.php/produtos/mostra?id=1

Também não fica nada profissional, vamos melhorar essa url, eu quero que quando acessarmos:

http://localhost/CodeIgniter/index.php/produtos/1

Vá para a mesma pagina, para fazer isso utilizaremos as rotas do CodeIgniter, para criar Rota personalisada, abra o arquivo routes localizado na pasta Config.

No final do arquivo, crie a rota personalizada. Mas como?

Page 20: Slide 06    adicionando produtos e mostrando produto selecionado

Criado por: Raniere de Lima

Adicionando ProdutosMostrando os dados do Produto

Siga o Padrão, para criar uma rota utiliza a variável $router, e informamos o link queDeve ser acessados, e qual é a função daquele link.

Criar uma rota, é como criar um apelido para o link.

Para criar esta rota, ficará assim:

$route['produtos/(:num)'] = 'produtos/mostra/$1'; Apelido da rota = Controller e Função

Altere os arquivos necessários, para que a nova rota, seja a rota acessada pelo sistema.