Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Srs,
Estou criando um formulário para avaliar 10 setores da empresa, onde cada setor terá cerca de 10 perguntas, e cada pergunta terá 3 opções de resposta ( Sim, Não e N/A ), conforme exemplo abaixo.
<p align="center"> Primeira Pergunta </p>
<INPUT TYPE="RADIO" NAME="BF" VALUE="S"> Sim
<INPUT TYPE="RADIO" NAME="BF" VALUE="N"> Não
<INPUT TYPE="RADIO" NAME="BF" VALUE="NA"> N/A
<p align="center"> Segunda Pergunta </p>
<INPUT TYPE="RADIO" NAME="BD" VALUE="S"> Sim
<INPUT TYPE="RADIO" NAME="BD" VALUE="N"> Não
<INPUT TYPE="RADIO" NAME="BD" VALUE="NA"> N/A
<p align="center"> Terceira Pergunta </p>
<INPUT TYPE="RADIO" NAME="BE" VALUE="S"> Sim
<INPUT TYPE="RADIO" NAME="BE" VALUE="N"> Não
<INPUT TYPE="RADIO" NAME="BE" VALUE="NA"> N/A
No final desse formulário eu preciso mostrar qual foi a porcentagem de cada resposta por setor, ex.: 33,3% SIM, 33,3% NÃO E 33,3% N/A.
Agradeço se puderem me dar dicas de como posso "checkar" essas respostas para chegar em algum valor, com if ou for, até mesmo alguma maneira diferente de % de avaliar. Já fiz algumas tentativas mas está difícil avançar.
*PERGUNTA DE INICIANTE: Os três rádios de cada pergunta devem ter o mesmo "name" e id diferentes ou com o mesmo id?
>
Se você estiver salvando as informações no banco de dados fica fácil fazer o calculo, só utilizar um select que conta todas as resposta do setor e depois você separa em S,N,N/A e aplica a regra de três para %.
Respondendo a sua pergunta: devem possuir o mesmo "name" para funcionar a troca de opção.
Ygor,
Consigo pegar os valores com um SELECT também, mas a dificuldade está em aplicar a FUNCTION que irá fazer o cálculo, pois eu preciso ter um IF pra validar o valor selecionado e ir guardando o valor em uma outra variável, ainda não achei uma forma de fazer isso.
<?php
// Função de porcentagem: N é X% de N
function porcentagem_nx ( $parcial, $total ) {
return ( $parcial * 100 ) / $total;
}
?>
faz o select para pegar o total de resposta da pergunta 1 do departamento X
então faz 3 select para contar a quantidade de SIM, NAO e S/N
ai só mandar pra função acima que você tem a porcentagem
é isso que precisa?
>
<?php
// Função de porcentagem: N é X% de N
function porcentagem_nx ( $parcial, $total ) {
return ( $parcial * 100 ) / $total;
}
?>
faz o select para pegar o total de resposta da pergunta 1 do departamento X
então faz 3 select para contar a quantidade de SIM, NAO e S/N
ai só mandar pra função acima que você tem a porcentagem
é isso que precisa?
Então Ygor, não faço questão de pegar estes dados do banco, pois quero mostrar os totalizadores após o usuário dar o submit, deve ter alguma maneira mais fácil de validar a resposta e mostrar ela com JavaScript.
deixa eu ver se entendi, você quer mostrar a porcetagem de resposta do formulario que acabou de ser respondido?
exemplo:
pergunta 1
SIM
pergunta 2
Não
pergunta 3
Sim
pergunta 4
N/A
nesse caso deveria mostrar 50% sim | 25% Não | 25% N/A
é isso que precisa?
>
deixa eu ver se entendi, você quer mostrar a porcetagem de resposta do formulario que acabou de ser respondido?
exemplo:
pergunta 1
SIM
pergunta 2
Não
pergunta 3
Sim
pergunta 4
N/A
nesse caso deveria mostrar 50% sim | 25% Não | 25% N/A
é isso que precisa?
Isso Ygor, Só que ainda não consegui fazer uma função para validar as respostas.
como assim validar???
para o calculo você pode fazer assim:
no formulario coloque o value das perguntas como 1,2,3 sendo SIM,Não,N/a
<INPUT TYPE="RADIO" NAME="BD" VALUE="1"> Sim
<INPUT TYPE="RADIO" NAME="BD" VALUE="2"> Não
<INPUT TYPE="RADIO" NAME="BD" VALUE="3"> N/A
<?php
$sim = 0;
$nao = 0;
$na = 0;
// Função de porcentagem: N é X% de N
function porcentagem_nx ( $parcial, $total ) {
return ( $parcial * 100 ) / $total;
}
//saber qual a resposta
function resposta ( $resposta ) {
switch ($resposta) {
case 1:
$sim++;
break;
case 2:
$nao++;
break;
case 3:
$na++;
break;
}
}
resposta($_POST['BF']);
resposta($_POST['BD']);
resposta($_POST['BE']);
//agora só chamar a função porcentagem_nx para saber a porcentagem
echo porcentagem_nx($sim,3); // nesse caso to perguntando a porcetagem da pergunta SIM com base em 3 perguntas
echo porcentagem_nx($nao,3);
echo porcentagem_nx($na,3);
?>Preciso fazer essa checagem usando JavaScript...
Bom, achei uma maneira de checar se a opção foi selecionada, conforme abaixo.
if ($("input[type='radio'][name='B'][id='BAA']").is(':checked') ){
variavel++;
}
Só que, como eu tenho x perguntas, cada com 3 alternativas, eu vou precisar rodar esse check várias vezes, como abaixo:
if ($("input[type='radio'][name='B'][id='BAA']").is(':checked') ){
document.getElementById('caixasim').value++;
} if ($("input[type='radio'][name='B'][id='BAB']").is(':checked') ){
document.getElementById('caixanao').value++;
} if ($("input[type='radio'][name='B'][id='BAC']").is(':checked') ){
document.getElementById('caixasna').value++; }
if ($("input[type='radio'][name='B'][id='CBA']").is(':checked') ){
document.getElementById('caixasim').value++;
} if ($("input[type='radio'][name='C'][id='CBB']").is(':checked') ){
document.getElementById('caixanao').value++;
} if ($("input[type='radio'][name='C'][id='CBC']").is(':checked') ){
document.getElementById('caixasna').value++; }
Exemplo: Precisa ter 3 "IFs" para a pergunta B, um para cada resposta ('sim', 'não' e 'na') e mais 3 para a pergunta C.
Alguem tem ideia de como criar uma function que executa esse if para todas as perguntas?
Fiz da maneira abaixo.
Criei uma function, onde um while roda 9 vezes (mesmo numero de perguntas a validar),onde
if ( i = 1 ){
valida a pergunta 1
}
if (1 = 2) {
valida a pergunta 2
}
Dentro de cada if destes, possui um if para cada alternativa, validando qual está marcada e adicionando +1 no campo respectivo a alternativa.
function somaum(){
i = 0;
while (i <= 9){
if (i = 1){
if ($("input[type='radio'][name='B'][id='BAA']").is(':checked') ){
document.getElementById('cxast').value++;
document.getElementById('setorasim').value++;
}
else if ($("input[type='radio'][name='B'][id='BAB']").is(':checked') ){
document.getElementById('cxant').value++;
document.getElementById('setoranao').value++;
}
else if($("input[type='radio'][name='B'][id='BAC']").is(':checked') ){
document.getElementById('cxaat').value++;
document.getElementById('setorana').value++;
}
}
if (i = 2){
if ($("input[type='radio'][name='BB'][id='BBA']").is(':checked') ){
document.getElementById('cxast').value++;
document.getElementById('setorasim').value++;
}
else if ($("input[type='radio'][name='BB'][id='BBB']").is(':checked') ){
document.getElementById('cxant').value++;
document.getElementById('setoranao').value++;
}
else if($("input[type='radio'][name='BB'][id='BBC']").is(':checked') ){
document.getElementById('cxaat').value++;
document.getElementById('setorana').value++;
}
}
Se você estiver salvando as informações no banco de dados fica fácil fazer o calculo, só utilizar um select que conta todas as resposta do setor e depois você separa em S,N,N/A e aplica a regra de três para %.
Respondendo a sua pergunta: devem possuir o mesmo "name" para funcionar a troca de opção.