Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17513
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Base para prova online

18-05-2009 10:31

Esse script é uma base para prova online, o responsável pode adicionar as perguntas em uma tela, e em outra tela é mostrado as perguntas cadastradas, com as opções para elas. Ao responder as perguntas, o usuário saberá quais acertou ou erro e verá o total de pontos feitos, 10 pontos para cada pergunta.

SQL já com uma pergunta cadastrada

CREATE TABLE `perguntas` ( `id` int(3) NOT NULL auto_increment, `pergunta` longtext NOT NULL, `resposta1` varchar(15) NOT NULL, `resposta2` varchar(15) NOT NULL, `resposta3` varchar(15) NOT NULL, `resposta4` varchar(15) NOT NULL, `correta` varchar(15) NOT NULL, PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=12 ; INSERT INTO `perguntas` (`id`, `pergunta`, `resposta1`, `resposta2`, `resposta3`, `resposta4`, `correta`) VALUES (1, 'Qual melhor time do Brasil?', 'Corinthians ', 'Sao Paulo', 'Palmeiras', 'Flamengo', 'Corinthians ');

Arquivo de conexão ( conecta.php )

<?php $conexao = mysql_connect("localhost", "login", "senha") or die(mysql_error()); $db = mysql_select_db("bd"); ?>

Página de adicionar ou excluir perguntas ( index.php )

<?php include("conecta.php"); if($_POST['cadastrar']) { extract($_POST); if($correta=="resp1") { $Acorreta = $resposta1; } elseif($correta=="resp2") { $Acorreta = $resposta2; } elseif($correta=="resp3") { $Acorreta = $resposta3; } elseif($correta=="resp4") { $Acorreta = $resposta4; } $query = "insert into perguntas (pergunta, resposta1, resposta2, resposta3, resposta4, correta) values('$pergunta', '$resposta1', '$resposta2', '$resposta3','$resposta4','$Acorreta')"; mysql_query($query) or die("Não foi possível cadastrar a pergunta"); echo "<script>alert('Pergunta cadastrada');location.href='index.php';</script>"; } if($_GET['id']) { extract($_GET); $deleta="delete from perguntas where id='$id'"; mysql_query($deleta) or die("Não foi possível deletar a pergunta"); echo "<script>alert('Pergunta deletada');location.href='index.php';</script>"; } ?> <form action="" method="POST"> Pergunta<br><textarea name="pergunta" cols="30" rows="5"></textarea> <br> resposta 1 <input type="text" name="resposta1" value=""> <input type="checkbox" name="correta" value="resp1"> correta <br> resposta 2 <input type="text" name="resposta2" value=""> <input type="checkbox" name="correta" value="resp2"> correta <br> resposta 3 <input type="text" name="resposta3" value=""> <input type="checkbox" name="correta" value="resp3"> correta <br> resposta 4 <input type="text" name="resposta4" value=""> <input type="checkbox" name="correta" value="resp4"> correta <br> <input type="submit" name="cadastrar"> </form> <br> <?php $selec = "SELECT id, pergunta, resposta1, resposta2, resposta3, resposta4 FROM perguntas"; $exec = mysql_query($selec, $conexao) or die(mysql_error()); while($campos=mysql_fetch_array($exec)) { extract($campos); echo "$pergunta | <a href='?id=$id'><font color=red>Excluir</font></a><br>"; } ?>

Página que simula a prova ( simula.php )

<?php include("conecta.php"); ?> <?php if($_POST['enviar']) { $pontos = 0; foreach($_POST AS $pergunta => $resposta) { if($pergunta!="enviar") { $selec = "SELECT id, pergunta, resposta1, resposta2, resposta3, resposta4, correta FROM perguntas WHERE id='$pergunta'"; $exec = mysql_query($selec, $conexao) or die(mysql_error()); while($campos=mysql_fetch_array($exec)) { extract($campos); echo "$pergunta<br>"; if($resposta=="$correta") { $pontos+=10; echo "Re.: $resposta - <font color=green>correta</font><br><br>"; } else { echo "Re.: $resposta - <font color=red>incorreta</font><br><br>"; } } } } echo "Total de <font color=blue>$pontos</font> ponto(s)"; } ?> <form action="" method="POST"> <?php $selec = "SELECT id, pergunta, resposta1, resposta2, resposta3, resposta4 FROM perguntas"; $exec = mysql_query($selec, $conexao) or die(mysql_error()); while($campos=mysql_fetch_array($exec)) { extract($campos); echo "$pergunta<br>\n"; echo "<input type='radio' name='$id' value='$resposta1'>$resposta1<br>\n"; echo "<input type='radio' name='$id' value='$resposta2'>$resposta2<br>\n"; echo "<input type='radio' name='$id' value='$resposta3'>$resposta3<br>\n"; echo "<input type='radio' name='$id' value='$resposta4'>$resposta4<br><br>\n"; } ?> <input type="submit" name="enviar"> </form>

0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Mensagens: 5

Base para prova online

19-07-2009 15:31

Em primeiro, parabens pelo codigo!!

Estou modificando ele aqui para funcionar pra q as perguntas sejam randomicas; ...
resposta4 FROM perguntas order by rand() limit 3 ";

... , ate ai td bem porem, quando exibe o resultado ele mostra a resposta dos que eu selecionei e mostra tambem o reto das perguntas a responder...

Oq posso fazer para que mostre apenas a resultado das perguntas que eu respondi?
0
 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17513
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Base para prova online

19-07-2009 15:48

Eu retestei o sistema aqui novamente, colocando adicionando seguinte na linha do segundo select, onde retorna as perguntas:

ORDER BY RAND() LIMIT 1

E o script retornou somente a resposta da pergunta que fiz. Se possível posta o seu script online.
0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Mensagens: 5

Base para prova online

19-07-2009 15:52

Script:
<?php include("conecta.php"); ?> <?php if($_POST['enviar']) { $pontos = 0; foreach($_POST AS $pergunta => $resposta) { if($pergunta!="enviar") { $selec = "SELECT id, pergunta, resposta1, resposta2, resposta3, resposta4, correta FROM perguntas WHERE id='$pergunta'"; $exec = mysql_query($selec, $conexao) or die(mysql_error()); while($campos=mysql_fetch_array($exec)) { extract($campos); echo "$pergunta<br>"; if($resposta=="$correta") { $pontos+=10; echo "Re.: $resposta - <font color=green>correta</font><br><br>"; } else { echo "Re.: $resposta - <font color=red>incorreta</font><br><br>"; } } } } echo "Total de <font color=blue>$pontos</font> ponto(s)"; } ?> <form action="" method="POST"> <?php $selec = "SELECT id, pergunta, resposta1, resposta2, resposta3, resposta4 FROM perguntas order by rand() limit 3 "; $exec = mysql_query($selec, $conexao) or die(mysql_error()); while($campos=mysql_fetch_array($exec)) { extract($campos); echo "$pergunta<br>\n"; echo "<input type='radio' name='$id' value='$resposta1'>$resposta1<br>\n"; echo "<input type='radio' name='$id' value='$resposta2'>$resposta2<br>\n"; echo "<input type='radio' name='$id' value='$resposta3'>$resposta3<br>\n"; echo "<input type='radio' name='$id' value='$resposta4'>$resposta4<br><br>\n"; } ?> <input type="submit" name="enviar"> </form>

Tinha q por em ambos select's?
Olha la no meu serv de test:
http://lhnm.homecko.com/perguntas/simula.php
0
 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17513
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Base para prova online

19-07-2009 15:56

Eu testei aqui o seu, e ví o seguinte:

A página com 3 perguntas e repostas para selecionar, ao enviar, mostrou a resposta somente da pergunta 1, que foi a que selecionei. Qual seu objetivo?
0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Mensagens: 5

Base para prova online

19-07-2009 15:58

Meu objetivo é fazer com que ele mostre apenas as perguntas q eu respondo.
0
 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17513
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Base para prova online

19-07-2009 16:09

Mas é isso que está acontecendo, veja a seguir

Eu fiz um rand() para mostrar 2 perguntas

A primeira tela
http://img29.imageshack.us/i/post1.png/
Eu marquei "somente a primeira pergunta"

Agora a segunda tela
http://img263.imageshack.us/i/post2.png/
0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Mensagens: 5

Base para prova online

20-07-2009 15:06

Sim, tu respondeu uma pergunta , so que nas respostas mostra as outras sem responder, e meu objetivo e fazer com q elas fiquem ocultas.
0
 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17513
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Base para prova online

20-07-2009 15:15

Tem como você simular ai um print, porque as idéias não estão batendo. :plus
0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Mensagens: 5

Base para prova online

20-07-2009 16:16

Ok, mas vamos esquecer td que foi dito :roll ...

O que preciso agora é por um limite de pontos para que a pessoa "passe" e mandar um resultado pro db indicando o resultado...
0
 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17513
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Base para prova online

20-07-2009 16:22

Então se você deixar 5 perguntas para responder, as pessoas tem que responder todas, correto? Se sim, basta fazer uma validação de preferência em JavaScript, para não permitir que alguma opção venha vazia.

Já no script tem essa linha
echo "Total de <font color=blue>$pontos</font> ponto(s)";

Nessa linha $pontos vai mostrar quantos pontos a pessoa fez, de acordo com a quantidade, baseado no número de perguntas, você adiciona um insert para uma tabela sua.
0
A melhor hospedagem para o seu site HostGator!
 
Primeiras postagens
Primeiras postagens
Mensagens: 2

Base para prova online

10-08-2009 12:30

Como estabelecer a conexão com o banco de dados? Precisaria apenas da variável $pontos?? Já tentei criar uma tabela e n consegui passar a pontuação do aluno para a mesma... Estou sem luz no fim do túnel... :blush
0
 
Primeiras postagens
Primeiras postagens
Mensagens: 2

Base para prova online

10-08-2009 12:58

Rpz... fiquei 2 dias para descobrir como fazer a conexão com o banco de dados e, no entanto, era só digitar na linha de baixo:
echo "Total de <font color=blue>$pontos </font>ponto(s)";
$sql="INSERT into resultado_prova (pontos) values ('$pontos')";
mysql_query($sql,$conexao) or die (mysql_error());
}

?>

??????????? PASMEM!

Agora queria estabelecer, além da variável $pontos, a variável $username, para identificar as respostas de cada aluno, individualmente. Como faço?

Obrigada.
0
 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17513
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Base para prova online

10-08-2009 17:11

O $username já está no BD ou vem do formulário?
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado