Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia,
Estou com este código que estou usando na página carrinho.php.
Ele faz a administração da pagina carrinho, altera, edita e remove os produtos.
Mas, não estou conseguindo fazer com que ele RECEBA a quantidade por post vindo de outra pagina.
Ou seja, a minha pagina produto.php o cliente digita a quantidade em um input e clica em ADICIONAR ao carrinho ele enviaria para a pagina carrinho.php e adicionaria sessions e tudo mais o produto e a quantidade escolhida.
Alguem pra me dar uma luz ? Obrigado desde já.
<?php
session_start();
if(!isset($_SESSION['carrinho'])){
$_SESSION['carrinho'] = array();
}
//adiciona produto
if(isset($_GET['acao'])){
//ADICIONAR CARRINHO
if($_GET['acao'] == 'add'){
$id = intval($_GET['id']);
if(!isset($_SESSION['carrinho'][$id])){
$_SESSION['carrinho'][$id] = 1;
}else{
$_SESSION['carrinho'][$id] += 1;
}
}
//REMOVER CARRINHO
if($_GET['acao'] == 'del'){
$id = intval($_GET['id']);
if(isset($_SESSION['carrinho'][$id])){
unset($_SESSION['carrinho'][$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]);
}
}
}
}
}
?>>
1 minuto atrás, Rasp disse:
Qual o código da sua página que envia as informações?
É um simples form bem básico, segue:
<form action="carrinho.php?acao=add&id=<?php echo $_GET['id']; ?>" method="post">
<p>
<input name="prod" type="text" id="prod">
</p>
<p>
<input type="submit" name="submit" id="adicionar" value="Adicionar ao carrinho">
</p>
</form>>
26 minutos atrás, neto_celino disse:
É um simples form bem básico, segue:
<form action="carrinho.php?acao=add&id=<?php echo $_GET['id']; ?>" method="post">
<p>
<input name="prod" type="text" id="prod">
</p>
<p>
<input type="submit" name="submit" id="adicionar" value="Adicionar ao carrinho">
</p>
</form>
Seu formulário esta em POST, e seu carrinho pegando as informações por GET ?Neto,
No trecho "adicionar" você não incluiu $_POST["prod"]
//adiciona produto
if(isset($_GET['acao'])){
//ADICIONAR CARRINHO
if($_GET['acao'] == 'add'){
$id = intval($_GET['id']);
if(!isset($_SESSION['carrinho'][$id])){
$_SESSION['carrinho'][$id] = 1;
}else{
$_SESSION['carrinho'][$id] += 1;
}
}
Deveria ficar assim:
// verifica o ID passado
$id = intval($_GET['id']);
//adiciona produto
if(isset($_GET['acao'])) {
//ADICIONAR CARRINHO
if($_GET['acao'] == 'add') {
if(!isset($_SESSION['carrinho'][$id])) {
echo $_POST["prod"];
} else {
...
}
}
}>
2 minutos atrás, igu disse:
Seu formulário esta em POST, e seu carrinho pegando as informações por GET ?
É possível usar os dois métodos juntos sim. O que acontece é que ele não capturou as informações via post em "adicionar"
>
9 minutos atrás, Rasp disse:
Neto,
No trecho "adicionar" você não incluiu $_POST["prod"]
//adiciona produto
if(isset($_GET['acao'])){
//ADICIONAR CARRINHO
if($_GET['acao'] == 'add'){
$id = intval($_GET['id']);
if(!isset($_SESSION['carrinho'][$id])){
$_SESSION['carrinho'][$id] = 1;
}else{
$_SESSION['carrinho'][$id] += 1;
}
}
Deveria ficar assim:
// verifica o ID passado
$id = intval($_GET['id']);
//adiciona produto
if(isset($_GET['acao'])) {
//ADICIONAR CARRINHO
if($_GET['acao'] == 'add') {
if(!isset($_SESSION['carrinho'][$id])) {
echo $_POST["prod"];
} else {
...
}
}
}
Sim, nesse caso sim. Mas não estou conseguindo gravar a session com a quantidade que vem por POST.
Queria que ele recebesse o valor por POST, gravasse a SESSION com a quantidade que veio e exibisse no carrinho a quantidade.Tenta algo do tipo:
$carrinho = array();
$carrinho['id'] = $id;
$carrinho['prod'] = $_POST['prod'];
...
$_SESSION['carrinho'] = $carrinho;
Qual o código da sua página que envia as informações?