Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Preciso pegar/get os dados de uma Array, porém para isso, preciso pegar a KEY dela com um Foreach;
Resultado da minha array
array (size=2)
0 =>
array (size=2)
'idProduto' => int 23
'Quantidade' => int 1
1 =>
array (size=2)
'idProduto' => int 22
'Quantidade' => int 1
Tentei pegar a key assim:
foreach($_SESSION['carrinho'] as $carrinho){
$idProduto = $carrinho['idProduto'];
$key = key($carrinho);
}
o idProduto é pego normalmente, entretanto o $key dá print desta forma:
$key = idProduto
Preciso muito disso, galera;
Agradeço a todos, desde jáOlá
Obrigado pela resposta.
Isso pode funcionar, mas eu pego os dados dinamicamente, ou seja, o usuário é quem adiciona o valor na SESSION que contém uma array
Estou fazendo assim para inserir na SESSION:
//ADICIONAR CARRINHO
if($_GET['acao'] == 'add'){
$id = intval($_GET['idProduto']);
$qtd = 1;
if(!isset($_SESSION['carrinho'][$id])){
$_SESSION['carrinho'][] = array("idProduto" => $id, "Quantidade" => 1);
}
}
e assim para pegar os dados:
foreach($_SESSION['carrinho'] as $carrinho){
$idProduto = $carrinho['idProduto'];
$sql = "SELECT * FROM ....";
}
preciso de uma forma que cada vez que o usuário adicione um produto, insira um "código" na array, por isso pensei em usar a KEY de uma ARRAY.Olhando sua lógoca, parece que esta meio errada.
E como é bem comum, segue!
Obrigado pela resposta!!
Mas meu carrinho está funcionando. Entretanto eu preciso adicionar imagens para certos produtos.
Eu tenho 2 produtos :
- Não personalizáveis
- Personalizáveis
Os personalizáveis permite as pessoas adicionarem uma imagem e assim, adicionar ao carrinho. Os não personalizáveis, basta adicionar ao carrinho.
Até aí tudo está certo, porém eu preciso adicionar o mesmo produto (mesmo idProduto) para o carrinho com uma imagem diferente.
Devido a isso fiz outra SESSION que armazena os dados da imagem que previamente foi cadastrada no Banco de Dados MySQL;
Segue código do carrinho até agora:
//Código para Carrinho
if(!isset($_SESSION['carrinho'])){
$_SESSION['carrinho'] = array();
}
//adiciona produto
if(isset($_GET['acao'])){
//ADICIONAR CARRINHO
if($_GET['acao'] == 'add'){
$id = intval($_GET['idProduto']);
if(!isset($_SESSION['carrinho'][$id])){
$_SESSION['carrinho'][$id] = 1;
}else{
$_SESSION['carrinho'][$id] += 1;
}
}
//REMOVER CARRINHO
if($_GET['acao'] == 'del'){
$id = intval($_GET['idProduto']);
if(isset($_SESSION['foto'][$id])){
unset($_SESSION['foto'][$id]);
}
}
//ALTERAR QUANTIDADE
if($_GET['acao'] == 'up'){
if(is_array($_POST['prod'])){
foreach($_POST['prod'] as $id => $qtd){
$id = intval($id);
$qtd = intval($qtd);
if(!empty($qtd) || $qtd <> 0){
$_SESSION['carrinho'][$id] = $qtd;
}else{
unset($_SESSION['carrinho'][$id]);
}
}
}
}
//Adiciona Foto, caso seja Personalizável
if(isset($_GET['idFoto'])){
$idProdutoFoto = $_GET['idProduto'];
$idFoto = $_GET['idFoto'];
$foto = $_GET['nomeFoto'];
$_SESSION['foto'][$idProdutoFoto] = array($idFoto, $foto);
}
} //Fim GET ACAO
e o Body:
<form action="?acao=up" method="post" enctype="multipart/form-data" name="carrinhoAtualiza">
<table align="center" style="margin-top:20px;">
<caption style="font-size: 40px;">Carrinho de Compras</caption>
<thead>
<tr>
<th width="244">Produto</th>
<th>Imagem</th>
<th width="79">Quantidade</th>
<th width="89">Preço</th>
<th width="100">SubTotal</th>
<th width="64">Remover</th>
</tr>
</thead>
<tfoot>
<tr>
<td colspan="5"><input type="submit" value="Atualizar Carrinho" /></td>
<tr>
<td colspan="5"><a href="index.php">Continuar Comprando</a></td>
<td colspan="5"><input type="submit" name="finaliza" value="Finalizar Compra" /></td>
</tfoot>
<tbody>
<?php
if(count($_SESSION['carrinho']) == 0){
echo '<tr><td colspan="5">Não há produto no carrinho</td></tr>';
}else{
$total = 0;
foreach($_SESSION['carrinho'] as $id => $qtd){
$sql = "SELECT * FROM produto WHERE idProduto = '$id'";
$qr = mysqli_query($con, $sql) or die(mysqli_error($con));
$ln = mysqli_fetch_assoc($qr);
$nome = $ln['nomeProduto'];
$preco = $ln['precoProdutoVenda'];
$sub = $ln['precoProdutoVenda'] * $qtd;
$total += $ln['precoProdutoVenda'] * $qtd;
echo '<tr>
<td>'.$nome.'</td>
';
if($_SESSION['foto'][$id]){
echo '<td><img src="fotos/'.$_SESSION['foto'][$id][1].'" width="90" height="90"></td>';
} else {
echo '<td>Sem Imagem</td>';
}
echo '
<td><input type="text" size="3" name="prod['.$id.']" value="'.$qtd.'" /></td>
<td>R$ '.number_format($preco, 2, ',', '.').'</td>
<td>R$ '.number_format($sub, 2, ',', '.').'</td>
<td><a href="?acao=del&idProduto='.$id.'">Remove</a></td>
</tr>';
}
$total = $total;
echo '<tr>
<td colspan="4">Total</td>
<td>R$ '.number_format($total, 2, ',', '.').'</td>
</tr>';
}
?>
</tbody>
</table>
</form>Com pdo, ficaria como esse exemplo ?
http://php.net/manual/pt_BR/function.key.php
Ou então
$valores[0] = array(
$valores[1] = array(