• Nenhum resultado encontrado

IMPLEMENTAÇÃO DE “CARRINHO DE COMPRAS” SIMPLES

N/A
N/A
Protected

Academic year: 2021

Share "IMPLEMENTAÇÃO DE “CARRINHO DE COMPRAS” SIMPLES"

Copied!
24
0
0

Texto

(1)

IMPLEMENTAÇÃO DE “CARRINHO DE COMPRAS” SIMPLES

exibirPublicacoes.php

Nesta página, onde são exibidos os livros do site, colocaremos um link (ou imagem-link) para o controlador de carrinho de compras, controlerCarrinho.php que controlará os passos principais do nosso carrinho de compras.

<td>

<?php echo "<a href='controlers/controlerCarrinho.php? opcao = 1 & id = " .

. $pub->getId()."'>Adicionar no carrinho</a>" ?></td>

Repare que enviaremos a opção = 1 para o controlador (que é para adicionar no carrinho) e o ID da publicação, a qual se deseja colocar no carrinho. Cada publicação exibida na página terá seu link para o carrinho, contendo seu ID.

(2)

controlerCarrinho.php

No controlador, na opção 1, teremos os seguintes passos:

1.Capturaremos o id enviado;

2.Criaremos o objeto PublicacaoDAO, e através dele, acionaremos o método getPublicacao() que captura a publicação na tabela correspondente ao ID enviado.

3.Habilitaremos a sessão

4.Verificaremos se existe o vetor “carrinho” criado na sessão. Se tiver, basta recuperar, se não, criaremos um vetor novo.

5.Colocaremos o objeto Publicacao capturado no vetor e adicionaremos o carrinho na sessão.

6.Encaminharemos para a página exibirCarrinho.php, que exibirá os dados do carrinho de compras.

(3)

$opcao = (int)$_REQUEST['opcao'];

if($opcao == 1) // adicionar no carrinho {

$id = (int)$_REQUEST['id'];

$publicacaoDao = new PublicacaoDao();

$publicacao = $publicacaoDao->getPublicacao($id);

session_start();

if (!isset($_SESSION['carrinho'])) $carrinho = array();

else

$carrinho = $_SESSION['carrinho'];

$carrinho[] = $publicacao;

$_SESSION['carrinho'] = $carrinho;

header("Location: ../exibirCarrinho.php");

}

(4)

exibirCarrinho.php

Nesta página, construa uma tabela para mostrar os itens do carrinho de compras.

(5)

Para isso, será feito:

1. Capturar o vetor de carrinho de compras da sessão;

2. Percorrer o vetor (foreach) para pegar cada item, lembrando que este é um objeto publicação;

3. Cada nova linha da tabela terá os dados do objeto Publicação acessado no vetor;

4. Pode ser feito um contador para, se desejar, mostrar a ordem de inserção dos itens na tabela.

(6)

session_start();

$carrinho = $_SESSION['carrinho'];

$cont = 1;

$soma = 0;

foreach($carrinho as $item) {

?>

<tr align="center">

<td><?php echo $cont ?></td>

<td><?php echo $item->getId(); ?></td>

<td><?php echo $item->getTitulo(); ?></td>

<td><?php echo $item->getEditora(); ?></td>

<td><?php echo "R$ ".$item->getPreco(); ?></td>

<td><a href="controler/controlerCarrinho.php?opcao=2&index=<?php echo $cont-1 ?>">

Remover Item </a></td>

</tr>

(7)

<?php

$soma += $item->getPreco();

$cont++;

}

É importante, numa implementação de carrinho de compras, mostrar o somatório dos preços dos itens, motivo pela qual foi criada a variável

$soma para isso.

<tr align="right">

<td colspan="5"><font face="Verdana" size="4" color="red">

<b>Valor Total = R$<?php echo $soma?></b></font>

</td></tr>

(8)

Além disso, colocaremos uma imagem de um botão ou link para o usuário desejar voltar à página de exibição das publicações (exibirPublicacoes.php) para “Continuar comprando”, ou seja, para o usuário selecionar mais alguma publicação para o carrinho.

<a href="exibirPublicacoes.php">

<img src="imagens/botao_continuar_comprando.png">

</a>

(9)

REMOVER ITEM DO CARRINHO

controlerCarrinho.php

No controlador, na opção 2 (remover do carrinho), capturemos o índice enviado do item do vetor a ser removido, buscamos o array do carrinho na sessão e, pela função unset(), passamos o elemento do vetor com o índice para ser removido, que é o objetivo desta função.

Colocaremos o carrinho novamente na sessão e encaminharemos para a página exibirCarrinho.php, mostrando o carrinho atualizado.

(10)

if($opcao == 2) // remover do carrinho {

$index= (int)$_REQUEST['index'];

session_start();

$carrinho = $_SESSION['carrinho'];

unset($carrinho[$index]);

$_SESSION['carrinho'] = $carrinho;

header("Location: ../exibirCarrinho.php");

}

(11)

Problema com a função unset()

Existe um problema com a função unset(). Ela de fato tira o elemento do vetor, mas não REPOSICIONA os elementos nos índices do vetor. Por exemplo:

0 1 2 3 4

$vet 50 30 8 70 23

Se deseja tirar o elemento 8 basta fazer unset($vet[2]). Porém o vetor ficará assim:

0 1 3 4

$vet 50 30 70 23

Ou seja, o índice não existe mais no vetor. Isso será um problema, pois caso desejarmos excluir o próximo item = 3 do carrinho (posição 2 do vetor), não funcionará.

(12)

Para resolvermos essa questão, deveríamos reposicionar os elementos do vetor, o que pode ser resolvido com a função sort() que ordena os elementos do vetor. Logo, basta após a retirada do elemento chamar esta função.

0 1 3 4

$vet 50 30 70 23

Sort($vet);

0 1 2 3

$vet 23 30 50 70

(13)

Porém, há uma questão no vetor de carrinho de compra: se usarmos, ele estará ordenando também os elementos (itens) do carrinho, o que não desejamos caso a intenção seja manter a ordem de inclusão dos elementos. Certo?

ERRADO!

Lembre-se que o carrinho é um vetor de objetos Publicação e, a função sort() não tem como “entrar” em cada objeto e ordenar por algum atributo (id ou nome ou autor, etc) e ainda escolher o atributo “sozinho”.

Ou seja, essa mágica sort() não faz!

Logo, ela acaba ordenando o vetor pelos índices, ou seja, faz o que de fato nós queríamos nessa situação: REPOSICIONAR os elementos no vetor!

(14)

Mudando controlerCarrinho.php

Logo, a opção 2 do controlador de carrinho ficará assim:

if($opcao == 2) // remover do carrinho {

$index= (int)$_REQUEST['index'];

session_start();

$carrinho = $_SESSION['carrinho'];

unset($carrinho[$index]);

sort($carrinho);

$_SESSION['carrinho'] = $carrinho;

header("Location: ../exibirCarrinho.php");

}

(15)

Tratamento de erro para o carrinho vazio

Numa implementação de carrinho de compras, o site deverá informar ao usuário se o carrinho estiver vazio, caso ele acesse o mesmo pela página exibirPublicacoes.php (será o único acesso disponível para tal), ou continuará mostrando o carrinho e seus itens normalmente, caso já tenha sido colocado algum livro nele.

Para isso, iremos incluir a opção = 3 no controlador de carrinho:

(16)

controlerCarrinho.php

Essa opção 3 verificará se o carrinho já foi ou não setado.

Em caso afirmativo, ele retorna para a página exibirCarrinho.php que mostrará o mesmo.

E caso negativo, ou seja, não há carrinho de compras ou se o mesmo está vazio, retornará para a página exibirCarrinho.php com um parâmetro que indicará à página para mostrar uma mensagem que ele está vazio ‘status = 1’.

(17)

if($opcao == 3) {

session_start();

if ((!isset($_SESSION['carrinho']) || sizeof($_SESSION['carrinho'])==0) header("Location:../exibirCarrinho.php?status=1");

else

header("Location:../exibirCarrinho.php");

}

(18)

exibirCarrinho.php

Precisamos modificar a página que exibe o carrinho para tratar se ele está ou não vazio, baseado no valor do parâmetro ‘status’. Logo, iremos trocar a tabela de itens do carrinho pela mensagem, caso ele esteja vazio.

Então, teremos uma condicional a ser feita para exibir ou não a tabela ou a mensagem.

Além disso, iremos colocar um link para caso o usuário deseja ir às publicações para incluí-las no carrinho (técnica comum de todo e-commerce

>> “induzir às compras!”)

(19)

<?php

if (isset($_REQUEST['status'])) {

echo "<p><font face='Verdana' size='3' color='red'>Nenhum item foi incluído do carrinho de compras</font>";

echo "<p><a href='controlers/controlerPublicacao.php?opcao=2'>

Visualizar publicacoes</a>";

} else {

?>

<table> // sua tabela completa de exibição dos itens do carrinho </table>

// botões de “Continuar Comprando” e “Finalizar Compra”

<?php }

?>

(20)

controlerCarrinho.php

Já que a opção = 3 já verifica se o carrinho está vazio, seria prudente que a remoção do item no carrinho (opção = 2) não encaminhasse diretamente para a página exibirCarrinho.php, mas sim passe pelo crivo da opção = 3, pois caso se retire o último elemento, mostre a mensagem.

Logo, modifique a opção = 2.

(21)

if($opcao == 2) // remover do carrinho {

$index= (int)$_REQUEST['index'];

session_start();

$carrinho = $_SESSION['carrinho'];

unset($carrinho[$index]);

sort($carrinho);

$_SESSION['carrinho'] = $carrinho;

header("Location: controlerCarrinho.php?opcao=3");

}

(22)

Opção “VER CARRINHO”

É importante numa aplicação de E-Commerce deixar disponível uma opção no site para o usuário “Ver o Carrinho de Compras”

sempre que desejado. No momento da nossa aplicação, o usuário só consegue ver o carrinho se:

- acessar direto pela URL

- fazendo a compra de um item

(23)

Para resolver essa questão, vamos adicionar um botão na página exibirPublicacoes.php para a opção 3 do controler de carrinho, o qual verifica se há o carrinho e reencaminha para a exibirCarrinho.php.

(24)

exibirPublicacoes.php

Antes da exibição das tabelas contendo cada publicação, iremos colocar uma <div> contendo o link-imagem para visualizar o carrinho:

Referências

Documentos relacionados

Ao clicar no botão, uma nova tela é aberta para replicação dos valores de item.. V.Busca de Carrinho de Compras -

Por exemplo, um inseto não pode pesar ao nascer 30 g (ver Problema 3), tampouco pode aumentar seu peso exponencialmente. Embora esse modelo possa ser válido num curto período de

--- - Porque não se muda a vacinação para o Pavilhão Multiusos já que o Centro de Saúde não tem condições para receber as pessoas condignamente e em segurança

1) Uma caneta ótica padrão utilizada em lojas comerciais (com leitura a laser SERIAL) com microcontrolador PIC16F876A. 2) Adaptar uma placa com sinal Bluetooth ao dispositivo

Com as análises dos sistemas utilizados alguns possuem vantagens como: a alça retrátil que traz o beneficio de regulagem, assim se adequando a diversas alturas, os rodízios, pois

EQUIPAMENTOS Câmara para carrinho Pneu para carrinho Aro (roda) plástico ou ferro para carrinho Carrinho para transporte de tarro Roda maciça Carrinho para transporte de

[r]

(Hoje é o primeiro dia de aulas online do Pedro. Ele deve se apresentar para a professora. Assinale a alternativa correta).. Nice to meet you! d) You are welcome. b) Son las