Ir para conteúdo

Arquivado

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

Gelson Design

Questionario com PHP mysql

Recommended Posts

Boa tarde a todos, bom pessoal estou criando um questionario com 20 perguntas e 5 opcoes de respostas.

 

Como será criado 1 questionario por mes, resolvi faze-lo dinamico desde a inserção de um novo questionario, entao criei 3 tabelas

 

simulado = id - nome

perguntas = id - id_simulado - pergunta - resp1 - resp2 - resp3 - resp4 - resp5 - correta

respaluno = id - id_aluno - id_simulado - id_pergunta - resposta

 

bom, a pagina que ira mostrar as perguntas ja esta pronta, todas as 20 perguntas estarão na mesma pagina.

 

Minha pergunta é como fazer para que quando o usuario clique no submit seja inserido na tabela respaluno o id_simulado, id de todas as perguntas e a resposta dada pela usuario de cada uma destas perguntas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie o formulario de respostas, com o enunciado e as opções em radio ou checkbox (quando permitido mais de uma alternativa).

 

Voce pode nomear os radios como name="pergunta[<?php echo $id?>]" e value="resp1", value="resp2, etc", onde $id é o id da pergunta. No mesmo form, campos hidden para o id do aluno e simulado.

 

Depois disso, busque $_POST["pergunta"], retornará um array com as respostas do aluno. Percorra as perguntas e para cada uma insira/atualize o registro no banco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao fiz exatamente assim

 

<input name=id type=radio value=resp1 />$resp1</div> até a 5 e fiz como voce falou criei o hidden para o id do aluno

 

minha duvida é exatamente como eu crio o array e percorro para inserir/atualizar o banco de dados

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um exemplo:

 

<?php
	if(isset($_POST["id"])) {
		echo $_POST["id"] . "<br />";
	}
	
	if(isset($_POST["check"])) {
		foreach($_POST["check"] as $value) {
			echo $value . "<br />";
		}
	}
?>

<form action="index.php" method="post">
	<input type="radio" name="id" value="resp-radio1" /> teste1<br />
	<input type="radio" name="id" value="resp-radio2" /> teste2<br />
	<input type="radio" name="id" value="resp-radio3" /> teste3<br /><br />
	
	<input type="checkbox" name="check[]" value="resp-check1" /> teste1<br />
	<input type="checkbox" name="check[]" value="resp-check2" /> teste2<br />
	<input type="checkbox" name="check[]" value="resp-check3" /> teste3<br />
	<input type="submit" />
</form>

foreach funciona somente com arrays, e lançará um erro se tentar utilizá-lo em uma variável de qualquer tipo diferente ou em variáveis não inicializadas. Há duas sintaxes; a segunda é uma abreviatura, mas bem útil do que primeira:

 

foreach (expressao_array as $valor) instrucoes

foreach (expressao_array as $chave => $valor) instrucoes

 

Mais: http://docs.php.net/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Paulo até ai ta beleza, o problema é o seguinte, as perguntas e respostas sao pegas pelo while

 

while($array_result=mysql_fetch_array($resultado)){

 

echo "<form name=frmCadastro method=post action=index.php >";

echo "<div class=pergunta>$pergunta</div>";

echo "<div class=resposta><input name=op type=radio value=resp1 />$resp1</div>";

echo "<div class=resposta><input name=op type=radio value=resp2 />$resp2</div>";

echo "<div class=resposta><input name=op type=radio value=resp3 />$resp3</div>";

echo "<div class=resposta><input name=op type=radio value=resp4 />$resp4</div>";

echo "<div class=resposta><input name=op type=radio value=resp5 />$resp5</div>";

 

Como fazer o Insert na tabela respaluno de todas as 20 respostas dadas

 

if($_SERVER['REQUEST_METHOD'] == "POST"){

$op = $_POST['op'];

 

$sql_2 = "INSERT INTO respaluno (id_pergunta, resposta) VALUES ('$id', '$op')"; //Faz a inserção do registro

$result_2 = mysql_query($sql_2) or die(mysql_error()); //Verifica se o comando foi executado

 

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se utilizar mais de uma página de perguntas:

 

1º no início da 1ª página inicie:

session_start();

2º no final de cada página insira as respostas nas sessões:

$_SESSION["pergunta1"]=resposta

3º no final da última página resgate todas sessões e insira no banco:

echo $_SESSION["pertunta1"];

Não testei, mas acho que isso resolve...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Paulo vou fazer tudo em uma pagina só, as 20 questoes vao estar na pagina index.php que vai enviar o form para ela mesma.

 

if($_SERVER['REQUEST_METHOD'] == "POST"){

$op = $_POST['op'];

 

$sql_2 = "INSERT INTO respaluno (id_pergunta, resposta) VALUES ('$id', '$op')"; //Faz a inserção do registro

$result_2 = mysql_query($sql_2) or die(mysql_error()); //Verifica se o comando foi executado

 

}

 

dai o problema pois esse insert so esta inserindo 1 das respostas, como faria para inserir as 20 repostas?

 

Pessoal agora estou com dificuldade de comparar e dar a nota para o simulado.

 

Na tabela respaluno vai conter id - id_pergunta - resposta

 

Na tabela perguntas vai ter o id - pergunta - resp1 - resp2 - resp3 - resp4 - correta

 

Entao eu preciso comparar

 

$pontos = 0;

 

If ($correta == $resposta){

 

$pontos +=1;

}

echo $pontos

 

Porem mesmo acertando todas as respostas nao da a nota 10 acho que eu nao teria que fazer com if e sim com for, porem preciso de uma ajudinha.

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.