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)");
}
}