Ir para conteúdo

Arquivado

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

rfamelli

[Resolvido] Somar valores com checkbox e enviar dados por email

Recommended Posts

Boa tarde!!

 

Preciso de um formulário com vários serviços, cada um checkbox, onde o usuário vai escolher o serviço que quer e mandar por email.

 

Só que a intençao deste formulário além de enviar por email o pedido, é mostrar a soma dos valores de cada serviço para o usuário,

 

consegui aqui no forum o seguinte codigo que faz a soma do serviços, até ai perfeito!, mas como eu poderia enviar por email

o serviços que a pessoa escolheu se no value do checkbox está o valor do serviço e nao o nome dele?

<script LANGUAGE="JavaScript">  
<!--  
var total = 0;  
function soma(campo) {  
    if (campo.checked)  
        total += eval(campo.value);  
   else   
        total -= eval(campo.value);  
    document.sistema.total.value = total;  
}  
//-->  
</SCRIPT>  
<input type="checkbox" name="servico" value=20" onClick="soma(this)">  Cabelo
<input type="checkbox" name="servico" value="30" onClick="soma(this)">  Maquiagem
<input type="checkbox" name="servico" value="50" onClick="soma(this)">  Massagem

 

mas neste caso recebo o email da seguinte forma:

 

Serviço 20.00 30.00 50.00

 

ao invés de

 

Serviço Cabelo Maquiagem Massagem

 

Alguem sabe como eu posso completar este codigo pra atender minha necessidade? É possível?

 

Agradeço desde já!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vai depender de como você vai querer programar.

 

Você pode separar cada item correspondente ao checkbox em inputs diferentes...

 

exemplo:

<input type="checkbox" name="servico[]" value="1" onClick="soma(this)">  Cabelo
<input type="hidden" name="valor_1" id="valor_1" value="20.00" />
<input type="hidden" name="servico_1" id="servico_1" value="Cabelo" />

<input type="checkbox" name="servico[]" value="2" onClick="soma(this)">  Maquiagem
<input type="hidden" name="valor_2" id="valor_2" value="20.00" />
<input type="hidden" name="servico_2" id="servico_2" value="Maquiagem" />

 

.js

 

<script LANGUAGE="JavaScript">  
<!--  
var total = 0;  
function soma(campo) {  

    var valor = document.getElementById( 'valor_' + campo.value );
    var servico = document.getElementById( 'servico_' + campo.value );

    if (campo.checked)  {
        total += eval(valor.value);  
   } else {
        total -= eval(valor.value);
        document.sistema.total.value = total;  
   }
}  
//-->  
</SCRIPT>  

 

Ai você define como trabalhar com as variáveis valor e servico...

 

Essa é só uma das inúmeras possibilidades.

 

Nota: Fiz de cabeça rapidinho agora, não testei. Pode haver métodos com o nome errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Gabriel!

 

Só mudei uma coisa

 

<script LANGUAGE="JavaScript">  
<!--  
var total = 0;  
function soma(campo) {  

    var valor = document.getElementById( 'valor_' + campo.value );
    var servico = document.getElementById( 'servico_' + campo.value );

    if (campo.checked)  {
        total += eval(valor.value);  
   } else {
        total -= eval(valor.value);
        document.sistema.total.value = total;  
   }
}  
//-->  
</SCRIPT>  

 

Aliás, desculpe: o correto é

 

<script LANGUAGE="JavaScript">  
<!--  
var total = 0;  
function soma(campo) {  

    var valor = document.getElementById( 'valor_' + campo.value );
    var servico = document.getElementById( 'servico_' + campo.value );

    if (campo.checked)  {
        total += eval(valor.value);  
 document.sistema.total.value = total; 
   } else {
        total -= eval(valor.value);
        document.sistema.total.value = total;  
   }
}  
//-->  
</SCRIPT>  

Compartilhar este post


Link para o post
Compartilhar em outros sites

acabei me confundindo na pressa e na falta das chaves....

coloca assim pra não ficar repetindo

 

<script LANGUAGE="JavaScript">  
<!--  
var total = 0;  
function soma(campo) {  

    var valor = document.getElementById( 'valor_' + campo.value );
    var servico = document.getElementById( 'servico_' + campo.value );

    if (campo.checked)  {
        total += eval(valor.value); 
   } else {
        total -= eval(valor.value);  
   }
   document.sistema.total.value = total;
}  
//-->  
</SCRIPT>  

 

Qualquer dúvida, poste no fórum.

 

Já podem colocar como resolvido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só surgiu uma duvida agora, nao consegui desenvolver, se alguem puder me ajudar...

 

Para eu enviar por email em Php,

 

como eu pego o valor do serviço de acordo com o checkbox clicado?

 

<input type="checkbox" name="servico[]" value="2" onClick="soma(this)"> Maquiagem

<input type="hidden" name="servico_2" id="servico_2" value="Maquiagem" />

 

Obrigada mais uma vez!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando se adiciona no name os colchetes ( servico[] ), você define que será um vetor.

 

Logo, trate-o como um vetor:

<?php
$checkbox = $_POST['servico'];

foreach( $checkbox AS $var ) {
   echo $_POST['servico_'.$var];
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando se adiciona no name os colchetes ( servico[] ), você define que será um vetor.

 

Logo, trate-o como um vetor:

<?php
$checkbox = $_POST['servico'];

foreach( $checkbox AS $var ) {
   echo $_POST['servico_'.$var];
}
?>

 

Super obrigda Gabriel!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode usar JavaScript:

<script>

function sumChecked() {
var valor = $("input:checked");
var total = 0;
for (var i=0;i<valor.length;i++)
{
total = total+parseFloat(valor[i].value);
}
$("#valor").val(total.toFixed(0));
}

sumChecked();
$(":checkbox").click(sumChecked);

</script> 
<input type="checkbox" name="servico" value=20" onClick="soma(this)">  Cabelo
<input type="checkbox" name="servico" value="30" onClick="soma(this)">  Maquiagem
<input type="checkbox" name="servico" value="50" onClick="soma(this)">  Massagem

E Usar um o input pra receber o valor:

<input type="hidden" name="valor" id="valor" value="0">

Daí bastará enviar por $_POST["valor"];

 

Espero ter ajudado.



Como eu faço para mostrar o total dos valores ?

Bastaria tirar o hidden, no caso do código que postei, e usar:

<input type="text" name="valor" id="valor" value="0">

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, ainda não consegui.

 

Gostaria do seguinte, quando for clicando no checkbox ele mostrar um valor total na index.php

Depois quando clicar em enviar.

 

Na pagina script.php

 

Mostrar o nome de cada item selecionado e o valor total.

Se tivesse como mostrar cada item e o valor e depois a soma, seria melhor.

Valeu...

 

index.php

<html>
    <head>
        <title> </title>
    </head>
    <body>
    <script LANGUAGE="JavaScript">  
     <!--  
     var total = 0;  
     function soma(campo) {  

         var valor = document.getElementById( 'valor_' + campo.value );
         var servico = document.getElementById( 'servico_' + campo.value );

         if (campo.checked)  {
         total += eval(valor.value);
        } else {
         total -= eval(valor.value);  
        }
        document.sistema.total.value = total;
     }  
     //-->  
     </SCRIPT>  
 
        <form method="post" action="script.php">
            <input type="checkbox" name="servico[]" value="1" onClick="soma(this)">  Cabelo
            <input type="hidden" name="valor_1" id="valor_1" value="20.00" />
            <input type="hidden" name="servico_1" id="servico_1" value="Cabelo" />

            <input type="checkbox" name="servico[]" value="2" onClick="soma(this)">  Maquiagem
            <input type="hidden" name="valor_2" id="valor_2" value="20.00" />
            <input type="hidden" name="servico_2" id="servico_2" value="Maquiagem" />

            <input type="text" name="valor" id="valor" value="0">
            <input type="submit" name="enviar" value="enviar"/>
        </form>
    </body>
</html>

 

script.php

<?php
    $checkbox  = $_POST['servico'];
    foreach( $checkbox AS $var ) {
        echo $_POST['servico_'.$var];
    }

?>

 

 


Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixa ver se entendi, você quer que o cálculo total apareça na index, e depois na página "script.php" você quer que ele receba os valores da index e mostre além dos valores, os produtos e o valor de cada produto.

É Isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código que eu postei no post #4 já realiza a soma dos itens e exibe em:

document.sistema.total.value = total;  

 

Entretanto, essa estruturação em árvore através dos nós do DOM quase não é utilizada hoje em dia (vide jQuery ou outras bibliotecas). Para facilitar, você pode utilizar o ID de algum elemento e inserir o seu valor nele:

document.getElementById("valor").value = total;

Usar jQuery facilita, mas não comece a utilizar jQuery se não souber o básico de javascript.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, ví este tópico, e estou precisando de algo parecido. Veja se conseguem me ajudar.
Preciso de um form:

--------------------------------------------------------------

<form name="consulta">
<input name="nome" type="text" value="Nome" /><br>
<input name="email" type="text" value="Email" /><br>
<select id="" class="" name="Pontos">
<option value="0" selected="selected">1000</option>
<option value="0" selected="selected">2000</option>
</select><br>
<select id="" class="" name="Creditos">
<option value="0" selected="selected">5000</option>
<option value="0" selected="selected">8000</option>
</select><br>
<select id="" class="" name="Visualizações">
<option value="0" selected="selected">10000</option>
<option value="0" selected="selected">20000</option>
</select><br>
<select id="" class="" name="Cliques">
<option value="0" selected="selected">50000</option>
<option value="0" selected="selected">80000</option>
</select><br>
<input name="enviar" type="submit" value="Enviar">
</form>
------------------------------------------------------------------
Ao clicar em "enviar" o usuário vai receber no email, o valor cobrado, tipo assim:


Olá "FULANO", segue abaixo o valor da sua solicitação:

1000 Pontos = R$50,00
5000 Créditos = R$70,00
10000 Visualizações = R$90,00
50000 cliques = R$250,00
------------------------------------------
Total R$460,00
Se puderem me ajudar, serei muito grato!


Abraço


Compartilhar este post


Link para o post
Compartilhar em outros sites

Favor abrir um novo tópico com a sua dúvida, também leia as orientações:

http://forum.imasters.com.br/topic/542539-atencao-orientacoes-e-regras-do-forum-de-php/

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.

×

Informação importante

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