Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 383
Sexo: Masculino
Localização: criciuma

Produtos iguais no carrinho

06-02-2016 09:15

bom dia, fiz um carrinho de compras e as vezes nele pode conter produtos iguais. to tentando fazer que quando forem produtos iguais, ele exibir somente uma linha e incrementar a quantidade, e logico somar o preço.

o script esta assim.
<?php for ($i = 0; $i < 300; $i++) { for ($j = 0; $j < 300; $j++) { if($_SESSION['venda'][$i][$j] != NULL){ $sqlcarrinho = mysql_query("SELECT * FROM produtos WHERE id = '$i' "); $res = mysql_fetch_assoc($sqlcarrinho); $_SESSION[venda][$i][$j] = str_replace("<br>", "", $_SESSION[venda][$i][$j]); echo "1 - ".$_SESSION[venda][$i][$j]."<input type=\"hidden\" name=\"itenspedido[]\" value=\"{$_SESSION[venda][$i][$j]}\">".$res['preco']."; } } } echo "<input type=\"hidden\" name=\"total\" value=\"$total\">"; ?>

teria como fazer isso nesse array? esse ja eh oque fecha o pedido.
nesse ponto se eu dar um print_r($_SESSION[venda]) a saida eh

Array ( [84] => Array ( [251] => X- Egg [50] => X- Egg [98] => X- Egg ) [27] => Array ( [173] => Coca-Cola 2 Litros ) [23] => Array ( [18] => Taxa de Entrega 2 ) )

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17736
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Produtos iguais no carrinho

06-02-2016 18:12

me mudei e ainda estou sem net. esses produtos repetidos não é por causa do for com 300? creio que deveria contar a session e usar um foreach no array.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 383
Sexo: Masculino
Localização: criciuma

Re: Produtos iguais no carrinho

06-02-2016 20:02

mas esta correto com varios produtos iguais. eu preciso soh contar quando forem iguais e exibir por exemplo 3 - x-egg
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17736
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Produtos iguais no carrinho

07-02-2016 15:06

Você pode se basear nesse exemplo:

<?php session_start(); $_SESSION['nome'][1] = "um"; $_SESSION['nome'][2] = "dois"; $_SESSION['nome'][3] = "três"; $_SESSION['nome'][4] = "quatro"; $_SESSION['nome'][5] = "dois"; foreach(array_count_values($_SESSION['nome']) AS $v => $q) { echo "$v - $q<br />"; /* RESULTADO um - 1 dois - 2 três - 1 quatro - 1 */ } ?>

Só uma sugestão. Você tem uma tabela com os produtos cadastrados. Suponho que:
id - descricao - taxa etc.

Não seria mais fácil fazer um tabela tipo:

pedidos

id_pedido = randomico
produto = descricao
preco_unitario = valor de cada produto
quantidade = select com as quantidades disponíveis
status = situação do pedido

Quando o usuário fizer um pedido vai para a tabela pedidos, sempre associando os produtos do pedido atual ao id_pedido. Só ai já vai ficar mais fácil a questão do editar.
Também vai facilitar a questão do total. Isso porque na mesma linha você vai o preço e a quantidade. Ai é só multiplicar na query mesmo.

Ai você também mantém um status do pedido, tipo:

0 = carrinho
1 = entrega
2 = cancelado
etc.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 383
Sexo: Masculino
Localização: criciuma

Re: Produtos iguais no carrinho

08-02-2016 14:55

boa tarde. ja tinha tentado o array_count_values mas nao da certo . sempre da uma mensagem
Warning: array_count_values() expects parameter 1 to be array, string given in

o seu exemplo tbm deu.

sobre as tabelas eu tenho separadas por, pedidos, produtos, clientes etc.
0
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 383
Sexo: Masculino
Localização: criciuma

Re: Produtos iguais no carrinho

08-02-2016 15:30

eu estava pensando em derrepente cada iteração do laço guardar em uma variavel, se ja existir uma igual, ao inves de criar ele adiciona. tbm funcionaria? estaria errado?

ou a cada iteração, ir adicionando em um novo array, ai depois dou um cont nesse novo.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17736
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Produtos iguais no carrinho

08-02-2016 16:45

Esse erro na contagem não é porque o carrinho ainda está vazio? Porque ai iria gerar esse erro mesmo.

Eu acho assim, se o valor já está na SESSION salvo, tudo que teria que fazer é uma verificação em cada item da lista para ver se o nome já consta salvo no array. Se sim, marca o checkbox, depois captura tudo no foreach.

Montei outro exemplo pegando o produto e a quantidade.

<?php session_start(); if(isset($_POST['submit'])) { if(isset($_POST['produto'])) { foreach($_POST['produto'] AS $key => $produto) { echo "$produto - {$_POST['quantidade'][$key]}<br />"; } } } ?> <form method="post" action="teste.php"> <input type="checkbox" name="produto[]" value="tomate"> tomate <input type="number" name="quantidade[]" value="0"> quantidade <br /> <input type="checkbox" name="produto[]" value="cebola"> cebola <input type="number" name="quantidade[]" value="0"> quantidade <input type="submit" name="submit"> </form>

Ou, aproveita a tabela de pedidos e armazenar os dados da SESSION nela "produto, quantidade, etc".
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 383
Sexo: Masculino
Localização: criciuma

Re: Produtos iguais no carrinho

08-02-2016 17:06

certo. mas você viu meu codigo ?

o array vem com numero de índice aleatório. pra nao ter dois produtos com o mesmo indice, por isso varia de 0 a 300.
o select é pra pegar os nomes.

veja como fica o array final

Array ( [84] => Array ( [253] => X- Egg [251] => X- Egg [265] => X- Egg ) [21] => Array ( [292] => X-Bacon [120] => X-Bacon ) )

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17736
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Produtos iguais no carrinho

08-02-2016 17:15

Mas você está armazenando os pedidos no banco de dados ou na SESSION?

Porque a SESSION é individual em cada computador. Se um usuário está fazendo pedido e gravando na SESSION, só vão ficar salvos no computador o que ele está pedindo. Ou seja, você pode armazenar: produto e quantidade, e quando ele fechar o pedido salva no banco de dados.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 383
Sexo: Masculino
Localização: criciuma

Re: Produtos iguais no carrinho

08-02-2016 19:44

é isso que estou fazendo, enquanto ele esta pedindo e escolhendo os produtos, é tudo gravado na SESSION, depois quando fecha ai vai pro banco
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17736
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Produtos iguais no carrinho

08-02-2016 19:58

O que não entendi é o porque você usa um id para cada produto, mesmo iguais, se você pode somente alterar a quantidade.

Por exemplo, no script que deixei como base você tem o produto e a quantidade. Você pode fazer um editar baseado no índice e alterar a quantidade do produto que já está na SESSION sem problema.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 383
Sexo: Masculino
Localização: criciuma

Re: Produtos iguais no carrinho

08-02-2016 20:47

acho que achei um jeito melhor. veja

array_push($novo_array[$j][item] = $res['nome']); array_push($novo_array[$j][preco] = $res['preco']); array_push($novo_array[$j][qtd] = 1);

a saida eh essa.

Array ( [127] => Array ( [item] => X-Bacon [preco] => 13.00 [qtd] => 1 ) [49] => Array ( [item] => X-Bacon Egg [preco] => 13.50 [qtd] => 1 ) [208] => Array ( [item] => X-Bacon Egg [preco] => 13.50 [qtd] => 1 ) )

ainda nao tratei os iguais. mas assim nao eh mais facil?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17736
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Produtos iguais no carrinho

08-02-2016 20:56

Essa é uma forma também. A questão de igual o ideal seria aumentar a quantidade e não adicionar um novo item no array.

Eu imagino que você tenha uma lista de produtos com checkbox, onde o usuário seleciona produto e quantidade. Ai armazena no array.
Eu suponho que o produto igual entra quando ele quer aumentar a quantidade de produtos no carrinho, correto?

Porque nesse caso trabalhando com SESSION você teria que fazer um foreach nas SESSIONS já existente e alterar o pedido baseado no índice da SESSION do produto.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 383
Sexo: Masculino
Localização: criciuma

Re: Produtos iguais no carrinho

08-02-2016 20:59

na verdade nao se escolhe a quantidade porque pode ter retirada de ingrediente ou adicional, entao é melhor ir adicionando 1 por 1

nesse ultimo jeito que fiz, ele adiciona mas gera erro junto

Warning: array_push() expects at least 2 parameters, 1 given in

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17736
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Produtos iguais no carrinho

08-02-2016 21:08

Esse erro geralmente acontece porque o array principal que receberá os valores não é achado.

<?php array_push($array, "novo valor"); print_r($array); ?>

Você pode usar o @ para ocultar o erro

@array_push..

Mas o ideal é ver o porque o array não está sendo encontrado pelo array_push.
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado