Ir para o conteúdo

Publicidade

 Estatísticas do Fórum

  • 0 Usuários ativos

    0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

Foto:

Questionario com PHP mysql

  • Por favor, faça o login para responder
6 respostas neste tópico

#1 Gelson Design

Gelson Design

    Gelson Campos

  • Membros
  • 177 posts

Postado 19 abril 2010 - 17:19

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.
  • 0

#2 Jaime_Pinheiro

Jaime_Pinheiro
  • Membros
  • 318 posts

Postado 19 abril 2010 - 17:54

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.
  • 0

#3 Gelson Design

Gelson Design

    Gelson Campos

  • Membros
  • 177 posts

Postado 19 abril 2010 - 18:36

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
  • 0

#4 Paulo Nobrega

Paulo Nobrega

    ilhasolteira.net

  • Membros
  • 205 posts

Postado 19 abril 2010 - 21:28

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/
  • 0

#5 Gelson Design

Gelson Design

    Gelson Campos

  • Membros
  • 177 posts

Postado 20 abril 2010 - 09:13

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

}
  • 0

#6 Paulo Nobrega

Paulo Nobrega

    ilhasolteira.net

  • Membros
  • 205 posts

Postado 20 abril 2010 - 09:38

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...
  • 0

#7 Gelson Design

Gelson Design

    Gelson Campos

  • Membros
  • 177 posts

Postado 27 abril 2010 - 19:19

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.
  • 0




Publicidade

/ins>