Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou fazendo um carrinho que pega os dados do SQL, mas não deixa como ID único.
Está da pegando os itens dessa forma:
if(isset($_GET['adicionar']) && isset($_GET['idProduto']) && isset($_GET['tipoForma']) && isset($_GET['subSubForma'])){
$idProduto = $_GET['idProduto'];
$tipoForma = $_GET['tipoForma'];
$subSubForma = $_GET['subSubForma'];
$fotoProduto = "";
$idFotoProduto = "";
$quantidade = 1;
$arr = array("idProduto" => $idProduto, "tipoForma" => $tipoForma, "subSubForma" => $subSubForma, "fotoProduto" => $fotoProduto, "idFotoProduto" => $idFotoProduto, "Quantidade" => $quantidade);
var_dump($arr);
$_SESSION['carrinho'][] = $arr;
}
e com o var_dump():
array (size=3)
0 =>
array (size=6)
'idProduto' => string '23' (length=2)
'tipoForma' => string 'Pequeno' (length=7)
'subSubForma' => string '' (length=0)
'fotoProduto' => string '' (length=0)
'idFotoProduto' => string '' (length=0)
'Quantidade' => int 1
1 =>
array (size=6)
'idProduto' => string '19' (length=2)
'tipoForma' => string 'Médio' (length=6)
'subSubForma' => string '' (length=0)
'fotoProduto' => string '[2]20151119_224108.jpg' (length=22)
'idFotoProduto' => string '61' (length=2)
'Quantidade' => int 1
2 =>
array (size=6)
'idProduto' => string '23' (length=2)
'tipoForma' => string 'Pequeno' (length=7)
'subSubForma' => string '' (length=0)
'fotoProduto' => string '' (length=0)
'idFotoProduto' => string '' (length=0)
'Quantidade' => int 1
Eis minha pergunta, preciso apagar o array de, por exemplo, Key [2], como devo proceder??
Estou fazendo da seguinte forma para pegar os dados da Session:
foreach($_SESSION['carrinho'] as $carrinho){
$id = $carrinho['...'];
$... = $carrinho['...'];
}
Desde já agradeço a qualquer resposta ou ajuda.Obrigado pela resposta.
Sim, eu sei que posso dar Unset em uma Session, o problema é "puxar"/Get a Key da Array da Session.
Como no exemplo:
unset($_SESSION['carrinho'[2]]);
não consigo pegar/Get esse "2", preciso Get essa Key da Session/Array;
Como posso fazer isso???errado:
unset($_SESSION['carrinho'[2]]);
correto:
unset($_SESSION['carrinho'][2]);@AnthonyKamers
O que seria pegar?
Onde quiser usar, use assim: $_SESSION['carrinho'][2];
Ex.: exibir na tela:
echo $_SESSION['carrinho'][2];
Colocar dentro de um input:
<input value='<?= $_SESSION['carrinho'][2]?>'>
etc...Novamente, agradeço pelas respostas.
Sim, eu sei que posso fazer unset dessar forma, o problema é que eu não sei como fazer para pegar o 2, pois cada vez que adiciona um produto no carrinho, cria uma Key na Array. Preciso pegar essa Key dinâmica.
Como posso proceder??
Tem que existir alguma referência pra que você possa excluir do array, tipo POST, GET, SESSION.
index.php
<?php
foeach($_SESSION['carrinho'] as $chave => $carrinho){
echo '<a href="pagina-para-remover-da-sessao.php?id_del='. $carrinho[$chave].'">excluir</a>';
}
***//pagina-para-remover-da-sessao.php***
<?php
$remover = $_GET['id_del'];
if(unset($_SESSION['carrinho'][$remover])){
echo 'Item removido';
}Há como pegar a Key da Session para excluir??
Pois dessa forma, cria um "id" automático, tornando mais fácil a exclusão
Criei um token único para cada produto com uniqid(), agora não consigo dar unset usando este valor.
$idProduto = $_GET['idProduto'];
$tipoForma = $_GET['tipoForma'];
$subSubForma = $_GET['subSubForma'];
$fotoProduto = "";
$idFotoProduto = "";
$quantidade = 1;
$token = uniqid(rand(), true);
$arr = array("idProduto" => $idProduto, "tipoForma" => $tipoForma, "subSubForma" => $subSubForma, "fotoProduto" => $fotoProduto, "idFotoProduto" => $idFotoProduto, "Quantidade" => $quantidade, "token" => $token);
usando var_dump():
array (size=1)
0 =>
array (size=7)
'idProduto' => string '22' (length=2)
'tipoForma' => string '' (length=0)
'subSubForma' => string '' (length=0)
'fotoProduto' => string '' (length=0)
'idFotoProduto' => string '' (length=0)
'Quantidade' => int 1
'token' => string '2388858c418a61548b6.16153712' (length=28)
e tentei dar unset dessar forma:
if(isset($_GET['delete']) && isset($_GET['token'])){
$tokenDelete = $_GET['token'];
unset($_SESSION['carrinho']["token"][$tokenDelete]);
}
mas não deu certo, como posso dar unset com o token específico??Consegui pessoal.
Procurando na Internet, achei uma Function com Foreach que consegui usar no meu sistema:
//Deletar Produto do Carrinho
if(isset($_GET['delete']) && isset($_GET['token'])){
$tokenDelete = $_GET['token'];
foreach($_SESSION['carrinho'] as $subKey => $subArray){
if($subArray['token'] == $tokenDelete){
unset($_SESSION['carrinho'][$subKey]);
} //Fim if Foreach
} //Fim Foreach
} //Fim Delete
//Fim Deletar Produto do Carrinho
Valeu pessoal por todo o apoio.
VALEU
Olá!
você pode apagar valores de um array usando unset.
Ex.: