Ir para conteúdo

Arquivado

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

kernmatheus

Formulário com botões rádio"

Recommended Posts

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?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?

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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++;
    			}
 			}

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.