Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Desenvolver um Questionario

Usando o que aprendi estou pensando em desenvolver um questionário de perguntas e respostas, esse questionário terá apenas algumas pergunta, umas 5, então eu vou escrever todas as 5, o problema é e se eu quiser mudar pra 50 como devo fazer isso sem ficar repetindo boa parte do código afinal os inputs vão ser os mesmo? como salvar isso no banco de dados?pois preciso da saber como foi respondida cada pergunta (sim ou não)

desde já obrigado pela ajuda

3 respostas

Wilker,

Qual o problema de salvar as perguntas e as respostas em tabelas diferentes ?

solução!

Para guardar os dados, você pode pensar na seguinte estrutura de tabelas:

tabela questionario

  • codigo_questionario (id)
  • nome_questionario

tabela perguntas

  • codigo_pergunta (id)
  • descricao_pergunta
  • codigo_questionario
  • (outros campos que você precise)

tabela opcoes de resposta

  • codigo_opcao (id)
  • descricao_opcao
  • codigo_pergunta

tabela resposta

  • codigo_resposta (id)
  • codigo_pergunta
  • codigo_opcao_resposta
  • (algum campo para identificar quem respondeu e outros campos de acordo com sua necessidade)

Para montar o questionário na tela você poderia pensar na seguinte lógica:

  • Selecionar as perguntas de um determinado questionário e fazer um loop para imprimir o título
  • Dentro deste loop, para cada pergunta, selecionar as opções de resposta e fazer outro loop para imprimir as respostas permitidas daquela pergunta.

Desta forma você imprime todas as perguntas e cada opção de resposta da pergunta selecionada

O resultado poderia ser uma lista seguindo o formato abaixo para cada pergunta:

  • TEXTO PERGUNTA
  • (radio) SIM
  • (radio) NAO

Se todas as perguntas forem apenas com 1 resposta, você pode criar campos radio com o mesmo nome. Exemplo:

<input name="pergunta<?echo $codigo_pergunta;?>" type="radio" value="<? echo $codigo_opcao_resposta;?>" > <?echo $descricao_opcao_resposta;?>

Depois de postar as respostas, para gravar, teria que fazer algo assim:

  • Selecionar as perguntas de um determinado questionário e fazer um loop
  • Verificar se foi postado um campo com o código da pergunta. Se existir, pegar o valor e gravar na tabela de respostas. Um exemplo:
$result = mysql_query("SELECT * FROM perguntas where codigo_questionario = 1");
while ($row = mysql_fetch_array($result)) {
    $codigo_pergunta =  row["codigo_pergunta"];
    if (isset($_POST["pergunta" . $codigo_pergunta])){
        $codigo_resposta = $_POST["pergunta" . $codigo_pergunta];
        mysql_query("INSERT INTO respostas (codigo_pergunta, codigo_opcao_resposta) VALUES ($codigo_pergunta, $codigo_resposta)");

    }
}

Marcelo, desculpe a demora em responder, mas não tem problema algum. Eu vou marcar como resolvido mais se quiser manda a sua ideia seria de grande ajuda

Daniel, muito obrigado pela ajuda, deu pra entender melhor como seria o relacionamento em as tabelas.

obrigado a todos, vlw!