Fez aquele sistema legal e quer disponibilizar para outros usuários Essa é a seção correta para isso.
Moderador: web
por web Offline » Seg Mai 18, 2009 11:31 am
|
|
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
- Código: Selecionar todos
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 )
- Código: Selecionar todos
<?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 )
- Código: Selecionar todos
<?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 )
- Código: Selecionar todos
<?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>

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.
Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb [@] hotmail [.] com
web
ADMIN
Mensagens: 11889
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
por LhnM Offline » Dom Jul 19, 2009 4:31 pm
Em primeiro, parabens pelo codigo!!
Estou modificando ele aqui para funcionar pra q as perguntas sejam randomicas; ...- Código: Selecionar todos
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?

LhnM
NOVO MEMBRO
Mensagens: 5
Registrado em: Dom Jul 19, 2009 3:31 pm
|
por web Offline » Dom Jul 19, 2009 4:48 pm
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.

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.
Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb [@] hotmail [.] com
web
ADMIN
Mensagens: 11889
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
por LhnM Offline » Dom Jul 19, 2009 4:52 pm
Script:
- Código: Selecionar todos
<?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

LhnM
NOVO MEMBRO
Mensagens: 5
Registrado em: Dom Jul 19, 2009 3:31 pm
|
por web Offline » Dom Jul 19, 2009 4:56 pm
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?

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.
Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb [@] hotmail [.] com
web
ADMIN
Mensagens: 11889
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
por LhnM Offline » Dom Jul 19, 2009 4:58 pm
Meu objetivo é fazer com que ele mostre apenas as perguntas q eu respondo.

LhnM
NOVO MEMBRO
Mensagens: 5
Registrado em: Dom Jul 19, 2009 3:31 pm
|
por web Offline » Dom Jul 19, 2009 5:09 pm
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/

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.
Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb [@] hotmail [.] com
web
ADMIN
Mensagens: 11889
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
por LhnM Offline » Seg Jul 20, 2009 4:06 pm
Sim, tu respondeu uma pergunta , so que nas respostas mostra as outras sem responder, e meu objetivo e fazer com q elas fiquem ocultas.

LhnM
NOVO MEMBRO
Mensagens: 5
Registrado em: Dom Jul 19, 2009 3:31 pm
|
por web Offline » Seg Jul 20, 2009 4:15 pm
Tem como você simular ai um print, porque as idéias não estão batendo.

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.
Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb [@] hotmail [.] com
web
ADMIN
Mensagens: 11889
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
por LhnM Offline » Seg Jul 20, 2009 5:16 pm
Ok, mas vamos esquecer td que foi dito ...
O que preciso agora é por um limite de pontos para que a pessoa "passe" e mandar um resultado pro db indicando o resultado...

LhnM
NOVO MEMBRO
Mensagens: 5
Registrado em: Dom Jul 19, 2009 3:31 pm
|
por web Offline » Seg Jul 20, 2009 5:22 pm
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.

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.
Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb [@] hotmail [.] com
web
ADMIN
Mensagens: 11889
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
por Barbyzita Offline » Seg Ago 10, 2009 1:30 pm
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...

Barbyzita
NOVO MEMBRO
Mensagens: 2
Registrado em: Seg Ago 03, 2009 4:48 pm
|
por Barbyzita Offline » Seg Ago 10, 2009 1:58 pm
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.

Barbyzita
NOVO MEMBRO
Mensagens: 2
Registrado em: Seg Ago 03, 2009 4:48 pm
|
por web Offline » Seg Ago 10, 2009 6:11 pm
O $username já está no BD ou vem do formulário?

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.
Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb [@] hotmail [.] com
web
ADMIN
Mensagens: 11889
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
Voltar para Laboratório de scripts PHP / MySQL
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante
|
|
|