Ir para conteúdo

Arquivado

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

Brayan Rastelli

[Resolvido] Simular compra

Recommended Posts

Bom dia.. to fazendo uma pag. pra simular uma compra..

 

ai ela tem um select q lista os produtos pra cada categoria..

 

problema: como vou pegar o valor de todos os selects? já q nao da pra criar verificaçao de um por um.. pq a quantidade é dinamica (varia quando add ou remover uma categoria)..

 

olha a pagina aqui

 

o cód q gera os selects é esse:

 

		<?php
			
			$comando = new DBMySQLi();
			$grupos = $comando->Executar("select CODGRUP, GRUPO from grupos");
			
		?>
		
		<form action="#" method="post">
					<?php
						while($obj = $grupos->fetch_object()) {
						
			        		echo '<h3>'.$obj->GRUPO.'</h3>';
			        		
			        		$cod = $obj->CODGRUP;
							$prod = $comando->Executar("SELECT CODPROD, PRODUTO, CUSTO from produtos WHERE GRUPO = $cod");
							echo "<select name=\"{$obj->GRUPO}\">";
								echo "<option value=''>Selecione um produto</option>
								";
							while($obj2 = $prod->fetch_object()){
								echo "<option value=\"{$obj2->CODPROD}\">{$obj2->PRODUTO}</option>
								";
							}
							echo "</select><br /> <hr />
							";
							
						}					
					?>
					<input type="submit" value="Simular" name="enviar" />
		</form>

 

valeeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

humm

 

poderia por um exemplo disso funcionando? :P

 

tipo.. a intençao nao é somente calcular o preço de tudo q ele eescolheuu..

 

mas pra isso tem q checar qual foi alterado e qual nao foi ;s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Operaçao q seria realizada?

 

seria algo axo q só no php mesmo..

 

faria um foreach dos selects..

 

ai uma variavel receberia o valor de cada select somando-os.

 

Ai ela seria o total da compra. :huh:

 

será q com ajax ou só js nao tem como fazer isso ao selecionar um produto?

 

criar uma variavel e ir somando a cada mudança dos selects..

 

eu nao sei nada de js ;/

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que eu disse foi uma simulação. Faça uma simulação e cole o HTML do formulário gerado, para poder te ajudar melhor, porque não consegui entender direto o que você precisa.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

<form action="contabiliza.php" method="post">
 <fieldset id="carrinho_de_compras"></fieldset>
 <input type="button" value="Comprar mais!" onclick="adicionaproduto()" />

 

JS

var produtos = [
  // produtos disponíveis para compra. as linhas abaixo devem ser geradas dinamicamente por PHP, mediante consulta ao banco
  // formato: cada produto virá dentro de um objeto, contendo o id(value) do produto, e seu nome amigável, que será exibido ao usuário
  { id: 1, nome: "Desodorante AXE" },
  { id: 2, nome: "Sabão em pó OMO" },
  { id: 3, nome: "Refrigerante Coca-Cola PET2lt." },
  { id: 4, nome: "Refrigerante Pepsi Twist Lata" }
]

var i = 0;
function adicionaproduto(){
  lista_produto = document.createElement('select'); // cria um novo <select></select>
  lista_produto.name = "compra[" + i + "]"; // seta <select name="compra[x]"></select>
  for(j = 0; j < produtos.length; j++) {
    produto = document.createElement('option'); // cria um novo <option></option>
    produto.value = produtos.item(j).id // define <option value="x"></option>
    produto.innerHTML = produtos.item(j).nome // define <option value="x">Y</option>
    lista_produto.appendChild(produto); // insere dentro do <select> criado
  }
  document.getElementById('carrinho_de_compras').appendChild(lista_produto);
    // insere dentro do <fieldset> no nosso formulário
  i++;
}

 

após enviar, a página contabiliza.php trabalhará assim:

$compras = $_POST['compra'];
$custo = 0;

foreach($compras as $id_produto) {
 $sql = mysql_query('SELECT `valor` FROM `produtos` WHERE `id` = '.$id_produto);
 $custo += mysql_result($sql, 0);
}

$total_produtos = count($compras);
$total_valor = number_format($custo, 2, ',', '.'); // Formata valor em 0.000,00

echo "Seu carrinho possui <b>{$total_produtos}</b> produtos.<br /> O valor da sua compra é <b>RS {$total_valor}\n";

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao.. o form é aquele q mostrei o cod.. ai a partir dele quero q gere algo assim

 

clica aqui

 

é mais ou menos como se fosse configurar um pc no site da dell saca?

 

valeeu desde ja ^_^

 

 

EDIT: Evandro, valeu cara é quase isso.. mas eu preciso exibir todos.. do jeito q fiz mesmo.. pq ta separado por categorias..

 

vai ser pra comprar pc.. entao um vai ser proc., outro memo, outro hd.. etc.

 

tem como usar esse js do jeito q eu fiz? esse aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde Imão,

 

pelo que entendi, eu faria o seguinte

 

o select de cada categoria, a pessoa escolheria o que precisasse, no <option value="x;y">Nome</option> onde x código do produto e y valor do mesmo, e um outro input com a opção para o comprador colocar a quantidade naquele item, seria isso?

 

"Tudo o que desejo pra mim, desejo para todas as pessoas"

Rodney Peixoto

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao o valor do select precisa só do cod. do produto.. ae da pra buscar o preço por ele..

 

ja a quantidade nao precisa.. como é orçamento de pc.. ele vai montar só um.. entao vai ser um de cada..

 

o problema é como detectar todos os selects no final pra fazer a soma.. ja q nao vo saber quantos tem.. tendeu?

 

mesmo qndo tiver um numero x de categorias, é tenso fazer select por select..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então... vou tentar dar um exemplo, já que você não colocou o HTML gerado do formulário em um exemplo de como seria o funcionamento:

 

$erro = array();
foreach($_POST as $chave => $valor)
{
    // aqui dentro você faz todas as validações. Abaixo um exemplo para campos obrigatórios
    if(empty($valor)) $erro[] = 'O campo '.$chave.' é obrigatório.';
}
if(count($erro) > 0)
{
    echo 'Foram encontrados erros no preenchimento do formulário.<br/>';
    echo implode('<br/>',$erro);
}

Veja se consegue entender a lógica

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha só .. qse consegui oq queria.. axo q agora da pra ver melhor oq eu queroo..

 

acessa aqui

 

você vai ver la em baixo escrito total.. seeleciona qqer produto q ele vai dar o valor la em baixo..

 

resumindo: eu quero q a cada categoria, qndo ele escolher um produto no select atualize o preço final em baixo somando tudo q ele escolheu..

 

o problema é q só ta funfando com o primeiro select.. qndo mudo pros outros ele fica o msm valor..

e qndo seleciono outros primeiros da erro:

Fatal error: Call to a member function fetch_object() on a non-object in /app_estoque/function.php on line 10

fiz isso com jquery.. apesar de nao saber muito :s

 

o index.php da pra ver já q é enviado por js.

ele faz requisiçao do functions.php passando o valor do cod do produto..

 

functions.php

<?php

    $comando = new DBMySQLi();

    $cod = $_GET['cod'];
    $query = $comando->Executar("SELECT CUSTO FROM produtos WHERE CODPROD = $cod");
    while ($dados = $query->fetch_object()){
        echo 'Total: R$ '.number_format($dados->CUSTO, 2,",",".");
    }
?>

alguem sabe como eu arrumo isso?

 

valww

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, agora consegui entender o seu problema...

 

Vejo 4 opções:

- Ao selecionar um select (que estranho... selecionar select... hehe), adicionar este valor ao que já está definido (utilizando Javascript para fazer o cálculo)

- Ao selecionar um select, enviar o valor do select selecionado mais o valor total atual (javascript), fazer o cálculo no PHP e colocar o total.

- Passar o valor de TODOS os selects marcados (com javascript), efetuar o cálculo no PHP e colocar o valor no total.

- Não utilizar JS. Criar um form dinâmico. Ao final do form colocar um botão submit e utilizar a lógica que eu coloquei no post anterior para somar os valores.

 

Qual opção vai querer?

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

essas duas opçoes sao as melhores:

 

- Ao selecionar um select (que estranho... selecionar select... hehe), adicionar este valor ao que já está definido (utilizando Javascript para fazer o cálculo)

- Ao selecionar um select, enviar o valor do select selecionado mais o valor total atual (javascript), fazer o cálculo no PHP e colocar o total.

Ja q eu quero q seja instantaneo.. qndo escolher um prod. ja alterar o total ..

 

qual seria mais facil o calculo? pelo php ou js?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A primeira coisa é pegar todos os valores com JS. Depois é só adaptar o que já está fazendo, pois está funcionando para um deles. Sabe fazer? Se não souber, melhor mover para JS.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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