Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Então, eu consigo alterar a quantidade do meu produto no carrinho atravez do php, mas da um reload na pagina, e dessa forma fica inviavel, eu gostaria de alterar o valor atravez de um input ou algo assim, pra que eu pudesse alterar a quantidade sem que ocorresse o reload na pagina, soube que isso é feito atravez do javascript, e eu não sei nada dessa linguagem, ainda tenho dificuldade até no PHP, se alguem puder me ajudar eu agradeço de verdade, aqui tá o código do meu carrinho:
<
<?php
session_start();
if (!isset( $_SESSION['itens'] ) ) :
$_SESSION['itens'] = array();
endif;
if ( isset( $_GET['add'] ) && $_GET['add'] == "carrinho" ) :
$idProduto = $_GET['id'];
if (!isset ($_SESSION['itens'][$idProduto])) :
$_SESSION['itens'][$idProduto] = 1;
else:
$_SESSION['itens'][$idProduto] +=1;
endif;
endif;
if ( count( $_SESSION['itens'] ) == 0 ) :
echo ' <h1>Carrinho vazio</h1>';
else:
$_SESSION['dados'] =array();
$conexao = new PDO ('mysql:host=localhost;dbname=meusprodutos',"root", "");
?>
<table >
<thead>
<th>Nome</th>
<th>Preço</th>
<th>Quantidade</th>
<th>Subtotal</th>
<th>Opções</th>
</thead>
<tbody>
<?php
$totalcarrinho = 0;
foreach ( $_SESSION['itens'] as $idProduto => $quantidade ) :
$select = $conexao->prepare("SELECT * FROM produtos WHERE id=?");
$select ->bindParam(1, $idProduto);
$select ->execute();
$produtos = $select->fetchAll();
$total = $quantidade * $produtos[0]["preco"];
if(count( $_SESSION['itens'] ) == 0 ) :
$totalcarrinho = 0;
else:
$tempcarrinho = $totalcarrinho;
$totalcarrinho = $tempcarrinho + $total;
endif;
?>
<tr>
<td><div align="center" style="font-size:20px; font-family: verdana"> <font color="black"><?=$produtos[0]["nome"]?></font> </div></td>
<td><?=number_format( $produtos[0]["preco"], 2, ", ", "." )?></td>
<td><div align="center"><a href="remover.php?remover=carrinho&id=<?=$idProduto?>">◄</a> <?=$quantidade?><a href="carrinho.php?add=carrinho&id=<?=$idProduto?>">►</a> </div></td>
<td><?=number_format( $total, 2, ",", "." )?></td>
<td>
<a href="remover2.php?remover=carrinho&id=<?=$idProduto?>">Remover</a>
</td>
</tr>
<?php
array_push($_SESSION['dados'],
array ('id_produto' => $produtos[0]["nome"],
'quantidade' => $quantidade,
'preco' => $produtos[0]["preco"],
'total' => $total
)
);
endforeach;
?>
</tbody>
</table>
<table>
<td><div align='center' style='font-size:25px;font-family:Verdana'>Total <?=number_format( $totalcarrinho, 2, ",", "." )?></div></td>
</table>
<?php
echo '<a href="finalizar.php"><button class="button2" type="submit">Finalizar pedido</button></a>';
endif;
?>
>@joaov369 Segue novo exemplo:
CÓDIGO [index.php]
<?php
session_start ();
# session_destroy ();
if ( ! isset ( $_SESSION [ 'itens' ] ) ) {
$_SESSION [ 'itens' ] = array (
# CÒDIGO => QUANTIDADE
12 => 1,
25 => 120,
1 => 2
);
}
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<title> EXAMPLE </title>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
</head>
<body>
<form id="alteraCarrinho" action="javascript:void(0)" method="post">
<table border="1" style="text-align: center">
<thead>
<th><b>ID PRODUTO</b></th>
<th>QUANTIDADE</th>
</thead>
<tbody>
<?php foreach ( $_SESSION [ 'itens' ] as $key => $v ) : ?>
<tr>
<td><?php echo $key ?></td>
<td>
<input class="c_keys" type="hidden" name="id[]" value="<?php echo $key ?>" />
<input class="c_values" type="number" name="iten[]" value="<?php echo $v ?>" style="text-align: center" />
</td>
</tr>
<?php endforeach ?>
</tbody>
</table>
<input type="submit" value="Alterar" />
</form>
<!-- AJAX -->
<script type="text/javascript">
$ ( function ()
{
/**
* VERIFICA SE HOUVE SUBMIT NO FORM
*/
$ ( '#alteraCarrinho' ).submit ( function ()
{
/**
* PEGA OS ELEMENTOS DOS ARRAYs
*/
var c_keys = $ ( '.c_keys' ).serialize ();
var c_values = $ ( '.c_values' ).serialize ();
/**
* ATUALIZA VIA AJAX
*/
$.ajax ({
url: 'altera.php',
type: 'post',
data: {
'c_keys': c_keys,
'c_values': c_values
}
})
.done ( function ( obj )
{
alert ( obj );
})
.fail ( function ( jqXHR, textStatus, msg )
{
alert ( msg );
});
});
});
</script>
</body>
</html>
**CÓDIGO [altera.php]**
<?php
session_start ();
if ( $_POST ) {
/**
* ARMAZENA VALORES DO POST
*/
$keys = array ();
$values = array ();
/**
* CONVERT EM ARRAY
*/
$convert_key = parse_str ( $_POST [ 'c_keys' ], $keys );
$convert_value = parse_str ( $_POST [ 'c_values' ], $values );
/**
* ATUALIZA NOVO CARRINHO
*/
for ( $i = 0; $i < count ( $keys [ 'id' ] ); $i++ ) {
$_SESSION [ 'itens' ] [ $keys [ 'id' ] [ $i ] ] = $values [ 'iten' ] [ $i ];
}
/**
* ENVIA NOVO CARRINHO PARA O ALERT
* NA FUNÇÂO DONE ()
*/
var_dump (
$_SESSION [ 'itens' ]
);
}
Segue exemplo:
LINK
AJAX CART