Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

André Maretti

Carrinho de Compras - Array

Recommended Posts

Pessoal, boa noite!

 

Estou desenvolvendo um carrinho de compras e tendo algumas dificuldades para excluir produtos do carrinho.

 

Meu carrinho de compras é um array criado em sessão.

 

O problema acontece quando eu tento excluir um item do meio do carrinho.

Por exemplo, se eu tiver no array: Impressora, Monitor e Mouse; e resolver excluir o Monitor, ele exclui o Monitor e também o mouse, deixando meu array apenas com o primeiro produto, que é a impressora e tb um registro em branco no final do array.

 

Segue meu script para exclusão de produto:


<?PHP
session_start();

$indice = $_GET[posicao];

unset($_SESSION[carrinho][$indice];
						  
}

?>

A posição está sendo recebida de forma correta, já testei isso...

 

Não sei pq o unset está bagunçando meu array....

 

Alguém tem alguma idéia?!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que você quer dizer com "bagunçando"? Seria tornando inconstante a numeração sequencial (1,3,8,25...)?

 

Se for, é normal. Uma matriz que tem um índice passado por unset() tem esse dito índice literalmente arrancado dela.

 

Se você quiser reindexar, passe o array por array_values()

 

P.S.: Será preciso testar se isso é possível de se fazer sobre $_SESSION. Sobre arrays "normais" dá.

Compartilhar este post


Link para o post
Compartilhar em outros sites

antes de executar esse tipo de ação, faça tratamento dos dados, até porque estão sendo recebidos via url por GET.

 

o script acima está correto ?

<?php

session_start();
$indice = $_GET[posicao];

unset($_SESSION[carrinho][$indice];  

}
?>
está com 4 erros graves de sintaxe..

 

1. tem um colchete fantasma

2. está faltando fechar um parênteses

3. o índice do array GET é uma variável, uma constante ou uma string ? se for variável, estão faltando o sinal $ e se for uma estring está faltando os quotes

4. o mesmo do item 3 para "$_SESSION[carrinho]"

 

 

corrigindo:

<?php

session_start();
$indice = $_GET[$posicao];

unset( $_SESSION[carrinho][$indice] );

?>

 

 

o tratamento básico

 

 

<?php
$ErrorCode = false;
if( isset( $_GET['posicao'] ) )
{
    $indice = $_GET['posicao'];
    session_start();
    if( isset( $_SESSION['carrinho'][$indice] ) )
    {
        unset( $_SESSION['carrinho'][$indice] );
    }else{
        $ErrorCode = 2;
    }
}else{
    $ErrorCode = 1;
}

if( $ErrorCode )
{
    // gere algum log se necessário, para debug por exemplo.
}else{
    // indica que não houve falha prevista
    // tb pode gerar log para debug, por exemplo..
}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.