Ir para conteúdo

POWERED BY:

Arquivado

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

joaov369

Alterar quantidade no carrinho de compras

Recommended Posts

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;
    
?>

>

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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' ]
	);
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.

      Estou com uma dúvida, referente cálculo de valores em tempo real.

      Tenho uma rotina, que faz o cálculo, o problema é mostrar o resultado.

      Quero mostrar o RESULTADO assim: 0,00  ou  0.00

      Abaixo posto o código.
      jQuery('input').on('keyup',function(){ //Remover ponto e trocar a virgula por ponto var m = document.getElementById("pgRest").value; while (m.indexOf(".") >= 0) { m = m.replace(".", ""); } m = m.replace(",","."); //Remover ponto e trocar a virgula por ponto var j = document.getElementById("pgDsct").value; while (j.indexOf(".") >= 0) { j = j.replace(".", ""); } j = j.replace(",","."); m = parseFloat(jQuery('#pgRest').val() != '' ? jQuery('#pgRest').val() : 0); j = parseFloat(jQuery('#pgDsct').val() != '' ? jQuery('#pgDsct').val() : 0); //Mostra o Resultado em Tempo Real jQuery('#pgTroco').val(m - j); <<=== aqui estou errando })  
       
      Grato,
       
      Cesar
       
       
    • Por violin101
      Caro amigos, saudações.

      Tenho uma tabela escrita em JS que funciona corretamente.
       
      Minha dúvida:
      - como devo fazer para quando a Tabela HTML estiver vazia, exibir o LOGO da Empresa ?

      Abaixo posto o script:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'i' ) return;// Não é Ctrl+A, portanto interrompemos o script evt.preventDefault(); //Chama a Função Calcular Qtde X Valor Venda calcvda(); var idProdutos = document.getElementById("idProdutos").value; var descricao = document.getElementById("descricao").value; var prd_unid = document.getElementById("prd_unid").value; var estoque_atual = document.getElementById("estoque_atual").value; var qtde = document.getElementById("qtde").value; var vlrunit = document.getElementById("vlrunit").value; var vlrtotals = document.getElementById("vlrtotal").value; var vlrtotal = vlrtotals.toLocaleString('pt-br', {minimumFractionDigits: 2}); if(validarConsumo(estoque_atual)){ //Chama a Modal com Alerta. $("#modal_qtdemaior").modal(); } else { if(qtde == "" || vlrunit == "" || vlrtotal == ""){ //Chama a Modal com Alerta. $("#modal_quantidade").modal(); } else { //Monta a Tabela com os Itens html = "<tr style='font-size:13px;'>"; html += "<td width='10%' height='10' style='text-align:center;'>"+ "<input type='hidden' name='id_prds[]' value='"+idProdutos+"'>"+idProdutos+"</td>"; html += "<td width='47%' height='10'>"+ "<input type='hidden' name='descricao[]' value='"+descricao+"'>"+descricao+ "<input type='hidden' name='esp[]' value='"+prd_unid+"'> - ESP:"+prd_unid+ "<input type='hidden' name='estoq[]' value='"+estoque_atual+"'></td>"; html += "<td width='10%' height='10' style='text-align:center;'>"+ "<input type='hidden' name='qtde[]' value='"+qtde+"'>"+qtde+"</td>"; html += "<td width='12%' height='10' style='text-align:right;'>"+ "<input type='hidden' name='vlrunit[]' value='"+vlrunit+"'>"+vlrunit+"</td>"; html += "<td width='14%' height='10' style='text-align:right;'>"+ "<input type='hidden' name='vlrtotal[]' value='"+vlrtotal+"'>"+vlrtotal+"</td>"; html += "<td width='12%' height='10' style='text-align:center;'>"+ "<button type='button' class='btn btn-uvas btn-remove-produto' style='margin-right:1%; padding:1px 3px; font-size:12px;' title='Remover Item da Lista'>"+ "<span class='fa fa-minus' style='font-size:12px;'></span></button></td>"; html += "</tr>"; $("#tbventas tbody").append(html); //Função para Somar os Itens do Lançamento somar(); $("#idProdutos").val(null); $("#descricao").val(null); $("#prd_unid").val(null); $("#qtde").val(null); $("#vlrunit").val(null); $("#vlrtotal").val(null); $("#idProdutos").focus(); //Se INCLUIR NOVO produto - Limpa a Forma de Pagamento $("#pgSoma").val(null); $("#pgRest").val(null); $("#pgDsct").val(null); $("#pgTroco").val(null); $("#tbpagar tbody").empty(); }//Fim do IF-qtde }//Fim do Validar Consumo });//Fim da Função btn-agregar  
      Grato,

      Cesar
       
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
×

Informação importante

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