Barbyzita 0 Denunciar post Postado Agosto 8, 2009 Bom, acabei escrevendo esse tópico em outro canto, posto q n sabia em qual lugar exibi-lo. Me desculpem, administradores... No entanto, gostaria q me auxiliassem... Vou copiar novamente oq já escrevi anteriormente: Olá, programadores. Bom, sou nova por aqui e tb no q diz respeito à linguagem PHP. Portanto, gostaria q me auxiliassem no q diz respeito a minha dúvida em relação à armazenar a pontuação de determinado aluno no banco de dados para, posteriormente, esta mesma pontuação ser visualizada pelo professor. Estabeleci uma prova bem tosquinha, posto q o aplicativo encontra-se em fase de construção. Já desenvolvi os scripts para cadastro, visualização e exclusão de perguntas e respostas pelos administradores mas, qndo o aluno chega a resolver a prova e ter conhecimento de sua nota, n consigo enviar a pontuação para o banco de dados. Só gostaria de saber como faço para q isto aconteça, pq o resto, faço numa boa. FICAREI MUITO GRATA SE PUDEREM ME AJUDAR! Aqui está o script (enfatizo, mais uma vez, q encontra-se em construção) da prova online: <?php include ("conecta.php"); ?> <?php if($_POST['confirmar']){ $pontos=0; foreach($_POST AS $pergunta => $resposta){ if($pergunta!="confirmar"){ $sql="SELECT * from perguntas where id='$pergunta'"; $resultado=mysql_query($sql) or die ("Impossível selecionar perguntas".mysql_error()); while($linhas=mysql_fetch_array($resultado)){ extract($linhas); echo "$pergunta<br>"; if ($resposta=="$correta"){ $pontos+=1; echo "<b>Resp.:</b> $resposta - <font color=green>Resposta correta!</font><br><br>"; }else{ echo "<b>Resp.:</b> $resposta - <font color=red>Resposta incorreta!</font><br><br>"; } } } } echo "Total de <font color=blue>$pontos </font>ponto(s)"; } ?> <form action="" method="POST"> <h4><center><font color=red><i>Responda as perguntas abaixo:</i></font></center></h4><p> <h4><center><b>Cada questão vale</b> <font color=red>1,0</font><b> ponto</b></center></h4> <br> <?php $sql="SELECT * from perguntas"; $resultado=mysql_query($sql) or die (mysql_error()); $contador=1; while ($linhas=mysql_fetch_array($resultado)){ extract($linhas); echo $contador++; echo ". " . "<b>$pergunta</b><br>"; echo "<input type='radio' name='$id' value='$resposta1'>$resposta1<br>"; echo "<input type='radio' name='$id' value='$resposta2'>$resposta2<br>"; echo "<input type='radio' name='$id' value='$resposta3'>$resposta3<br>"; echo "<input type='radio' name='$id' value='$resposta4'>$resposta4<br>"; echo "<input type='radio' name='$id' value='$resposta5'>$resposta5<br><p>"; } ?> <h4><center><b><font color=red>CERTIFIQUE-SE DE QUE RESPONDEU TODAS AS PERGUNTAS ANTES DE CONFIRMAR AS RESPOSTAS!</font></b></center></h4><p> <div align="center"><center> <p><input type="submit" name="confirmar" value="Confirmar respostas"> </center></div> </form> Compartilhar este post Link para o post Compartilhar em outros sites
Roberto_S_Luz 2 Denunciar post Postado Agosto 8, 2009 Oi Barbyzita você poderia postar o seu arquivo de conexão ao banco e o script da tabela no banco de dados? Coloquem ambos aí para que possamos entender melhor o seu problema. No aguardo... Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Agosto 9, 2009 Primeiramente, seja bem vinda ao fórum. Segundo lugar, seu outro tópico foi excluído. Poste somente uma vez e somente em um local. Caso esteja no local incorreto, faremos a movimentação. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Barbyzita 0 Denunciar post Postado Agosto 10, 2009 Primeiramente, obrigada pelas boas-vindas. Pretendo ser uma participante ativa no fórum. Em segundo lugar, oq está me "emperrando" é justamente o desenvolvimento das variáveis no banco de dados. Já especifiquei para coletar informações a respeito do código do aluno, sua resposta e a pontuação. Se vcs perceberem, o número de pontos aparece na própria página da prova, para visualização do aluno; no entanto, n estou conseguindo enviá-lo ao banco de dados. Já tentei de tudo, oq me deixa cada vez mais frustrada. A lógica é simples, porém, n consigo colocá-la em prática! Já coloquei insert into resultado_prova (codaluno, resposta, pontos) values ('$codaluno','$resposta','$pontos')"; mas permanece em 0 (zero). A única coisa q muda, obviamente, é o codprova. Está td muito "nebuloso" para mim... Compartilhar este post Link para o post Compartilhar em outros sites
Barbyzita 0 Denunciar post Postado Agosto 10, 2009 Somente para deixar td mais "claro", só tenho 2 tabelas: 1ª: aluno codaluno int(3) Não auto_increment nomealuno varchar(50) latin1_swedish_ci Não genero varchar(8) latin1_swedish_ci Não endaluno varchar(256) latin1_swedish_ci Não cpfaluno varchar(16) latin1_swedish_ci Não rgaluno varchar(16) latin1_swedish_ci Não username varchar(10) latin1_swedish_ci Não senhaaluno varchar(8) latin1_swedish_ci Não 2ª perguntas id int(3) Não auto_increment pergunta longtext latin1_swedish_ci Não resposta1 varchar(256) latin1_swedish_ci Não resposta2 varchar(256) latin1_swedish_ci Não resposta3 varchar(256) latin1_swedish_ci Não resposta4 varchar(256) latin1_swedish_ci Não resposta5 varchar(256) latin1_swedish_ci Não correta varchar(256) latin1_swedish_ci Não Desta forma, consigo cadastrar os alunos, as perguntas e as respostas corretas/incorretas. Já desenvolvi a prova com algumas perguntas para teste. Os alunos selecionam e têm sua pontuação. Como poderia estabelecer a conexão entre o banco de dados e o resultado de cada aluno, para posteriormente o professor ter acesso a este último? Simplesmente n estou conseguindo... Compartilhar este post Link para o post Compartilhar em outros sites
FabianoM 0 Denunciar post Postado Agosto 10, 2009 Bom dia Barbyzita. Seguinte, não entendi muito bem a sua lógica, não sei se pode explicar melhor. Você disse que só tem duas tabelas...mas disse o sequinte: Já coloquei insert into resultado_prova (codaluno, resposta, pontos) values ('$codaluno','$resposta','$pontos')"; mas permanece em 0 (zero). A única coisa q muda, obviamente, é o codprova. Então você possui uma tabela resultado_prova tbm?? Compartilhar este post Link para o post Compartilhar em outros sites
Roberto_S_Luz 2 Denunciar post Postado Agosto 10, 2009 beleza Barbyzita eu fiz aqui...do jeito que você passou e está ok, só tá faltando uma coisinha de acordo com a sua explicação. Já tentei de tudo, oq me deixa cada vez mais frustrada. A lógica é simples, porém, n consigo colocá-la em prática! Já coloquei insert into resultado_prova (codaluno, resposta, pontos) values ('$codaluno','$resposta','$pontos')"; mas permanece em 0 (zero). A única coisa q muda, obviamente, é o codprova. você disse que são apenas 2 tabelas correto, Que são: Somente para deixar td mais "claro", só tenho 2 tabelas:1ª: aluno codaluno int(3) Não auto_increment nomealuno varchar(50) latin1_swedish_ci Não genero varchar(8) latin1_swedish_ci Não endaluno varchar(256) latin1_swedish_ci Não cpfaluno varchar(16) latin1_swedish_ci Não rgaluno varchar(16) latin1_swedish_ci Não username varchar(10) latin1_swedish_ci Não senhaaluno varchar(8) latin1_swedish_ci Não 2ª perguntas id int(3) Não auto_increment pergunta longtext latin1_swedish_ci Não resposta1 varchar(256) latin1_swedish_ci Não resposta2 varchar(256) latin1_swedish_ci Não resposta3 varchar(256) latin1_swedish_ci Não resposta4 varchar(256) latin1_swedish_ci Não resposta5 varchar(256) latin1_swedish_ci Não correta varchar(256) latin1_swedish_ci Não Mas...pelo visto terão que ser 3 tabelas, que é a resultado_prova então...kd essa tabela e kd a parte do sistema que realiza a inserção do codigo do aluno, a resposta correta e o total de pontos? Eu posso ter olhado errado mais, no codigo que você passou mais acima, tem apenas a parte onde você manda visualizar a Pergunta, a resposta correta e se estar correta ou incorreta e o total de ponto, mas não vi a parte onde manda inserir no banco, e outra... você quer que insira o codigo do aluno tambem, mas...onde e´que você busca o codigo do aluno?. Enfim...você tem essa parte aí e a tabela resultado_prova, posta ela aí ok. Abraços...e...no aguardo... Compartilhar este post Link para o post Compartilhar em outros sites
Barbyzita 0 Denunciar post Postado Agosto 10, 2009 Prezado Roberto Silva, De fato, EXISTIA uma tabela de nome resultado_prova. No entanto, como n consegui estipular as variáveis para recebimento dos dados escolhidos, acabei excluindo. E é justamente essa a minha dúvida. Não sei como fazer a conexão com o banco de dados, de acordo com as variáveis q foram adotadas no programa prova_dinamica.php. Bom, definitivamente, não sei como explicar de outra maneira... Por isso gostaria de uma "luz", pq, obviamente, estou deixando de utilizar algum código e/ou comando necessário para tal execução. Minha lógica pode até estar toda errada, entende? Não sou programadora ainda, estou apenas começando. Tenho muito a trilhar e meus conhecimentos em POO são bem básicos. Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
Barbyzita 0 Denunciar post Postado Agosto 10, 2009 Muito obrigada a quem tentou me ajudar mas, já descobri oq faltava! Sinceramente, estou com ódio de mim mesma por n ter descoberto antes e demorado 2 dias para visualizar o óbvio: Tabela: resultado_prova codprova pontos e o código: } echo "Total de <font color=blue>$pontos </font>ponto(s)"; $sql="INSERT into resultado_prova (pontos) values ('$pontos')"; <= Isso q estava faltando! Simples assim! mysql_query($sql,$conexao) or die (mysql_error()); } ?> Agora irei estabelecer um código para armazenar a pontuação de cada aluno, individualmente. Ufaa... Já estava ficando maluca! Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Agosto 10, 2009 Sugestão. Acrescente nesta tabela o id do aluno, grave ali e você terá o relacionamento. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Barbyzita 0 Denunciar post Postado Agosto 10, 2009 Prezado Carlos Eduardo, Agora minha dificuldade é justamente essa... Eu já havia especificado a chave primária "codaluno", no entanto, n consigo colocar esta variável no programa prova_dinamica.php, para q a mesma especifique o nome do aluno + a nota tirada. Só estou precisando disso para continuar com meu aplicativo... Coloquei $codaluno=$_POST['codaluno']; no início do programa e n deu certo... Sei q terei q dar um loop depois e especificar os arrays [codaluno][pontos] mas, isso eu conseguirei posteriormente. Preciso só identificar e jogar o nome do aluno no banco de dados, juntamente com sua nota. Estou até abusando mas, poderiam me ajudar? Tenho crédito pq a primeira dúvida foi tirada por mim. hehe Compartilhar este post Link para o post Compartilhar em outros sites
FabianoM 0 Denunciar post Postado Agosto 10, 2009 Oi... Bom, eu vou dar a minha sugestão do que poderia ser feito, talvez você já esteja fazendo algo parecido. Tipo, para realizar a prova o aluno teria q efetuar uma espécie de login, já que há o cadastro de alunos. Então ele entraria com seu login, ou então, nome completo, e senha. Ai na tela de verificação de login, gravaria a ID desse aluno em uma sessão. Então o aluno realizaria a prova normalmente, e na hora de cadastrar as respostas, cadastraria a id do aluno (na tabela resultado_prova) a partir da sessao gravada na hora do login. Outra forma seria o aluno realizar o seu cadastro na hora da prova, e seus dados seriam gravados na tabela "alunos". Como percebi, o codaluno dessa tabela é auto incremento, então logo após o aluno efetuar o registro, você seleciona o último cadastro dessa tabela que consequentemente será do aluno que está fazendo a prova, sendo assim pega a ID dessa consulta e joga num campo hidden no seu formulário da prova, ai é só pegar por POST na hora de cadastrar. São apenas sugestões, espero que possa ajudar...Se tiver dúvidas, estamos ai. Abraço! Fabiano http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Barbyzita 0 Denunciar post Postado Agosto 11, 2009 Olá, Fabiano! De fato, já havia pensado e feito isso. Estipulei um login, onde o aluno deverá inserir seu username e senha, estes cadastrados através do f_aluno(formulário aluno) e cadaluno.php. Tb já desenvolvi um programa "verifica_cookies.php". Sobre session, ainda n estou utilizando mas, n poderia utilizar as informações advindas dos cookies? Tb em relação a isso, n tenho conseguido estabelecer uma conexão. O programa todo funciona e coloco a include acima de todo o código, posto q ele deverá aparecer sempre antes de qq comando, como bem sabem. Bom, n sei se posso ficar postando toda hora os scripts aqui, ou se é contra as regras... Seria bem mais fácil para visualização. Abraços! Compartilhar este post Link para o post Compartilhar em outros sites
Roberto_S_Luz 2 Denunciar post Postado Agosto 11, 2009 Oi Barbyzita. } echo "Total de <font color=blue>$pontos </font>ponto(s)"; $sql="INSERT into resultado_prova (pontos) values ('$pontos')"; <= Isso q estava faltando! Simples assim! mysql_query($sql,$conexao) or die (mysql_error()); } ?> Bom...realmente essa parte aí acima que você acabou descobrindo sozinha era o que eu estava imaginando aki...kd essa tabela e kd a parte do sistema que realiza a inserção do codigo do aluno, a resposta correta e o total de pontos?mais parabéns à você, pelo seu esforço e insistência e não se preocupe por ter passado 2 longos dias batendo cabeça com isso...pois é assim mesmo no inicio ok, rsss. Bom...agora quanto à parte de gravar o id do aluno na tabela lá...você pode fazer o seguinte, além das alternativas que o FabianoM postou aí, você pode tambem está fazendo um select dos alunos existente em sua base de dados, que na hora de fazer a prova ele seleciona o nome dele faz toda a prova e depois manda gravar no banco. Mas...fica a questão da segurança né, dessa forma, qualquer aluno entra e seleciona o nome que quiser e faz a prova, bom...pensando nisso, após mandar gravar no banco, você pode colocar para o aluno informar o login e senha ou algum codigo unico(similiar à alguns banco, tipo a Caixa Econômica por exemplo), daí resolve a questão de um aluno selecionar o nome de outro e efetuar a prova, pois de acordo com o nome dele(id) se ele informar o login ou senha ou codigo de acesso inválido, o sistema não efetuará a validação da prova, e além do mais...de certa forma acho que que dispensa de certo modo a utilização de sessões, além de ser bem mais simples é claro. Bom...essa é mais uma ideia ok.http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Abraços e boa sorte em seus estudos!!! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
Barbyzita 0 Denunciar post Postado Agosto 11, 2009 Olá, Roberto. Realmente, o fato de ter "quebrado a cabeça" valeu mto a pena. É bem satisfatório descobrir e resolver determinada lacuna em seu programa. Sobre sessões, estava pensando se poderia utilizar os cookies mesmo, afinal, ao efetuar o login, os cookies seriam firmados. Bom, às vzs a teoria é bem mais simples do q a prática, no entanto, acredito q seja possível, só devo estar errando, mais uma vez, alguma coisinha. hehehehe Vou dar uma estudada "básica" aqui e, se realmente n conseguir, sei q poderei contar com a ajuda de todos. Muito obrigada, de verdade. ;) Compartilhar este post Link para o post Compartilhar em outros sites
Roberto_S_Luz 2 Denunciar post Postado Agosto 11, 2009 Claro...na medida que for surgindo duvidas...vai postando aí pra galera, isso enriquece o conhecimento de muitos que vem aki com duvidas iguais ou similares às postadas aki. Precisando...estamos aí...e lembre-se. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif "O forum iMasters é seu amigo, use-o SEM moderação". http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Abraços. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
FabianoM 0 Denunciar post Postado Agosto 11, 2009 Se realmente não conseguir posta os códigos novamente ;) Compartilhar este post Link para o post Compartilhar em outros sites
Barbyzita 0 Denunciar post Postado Agosto 11, 2009 Eu consegui o seguinte... O login é feito através do username e senha. Aí são criados os cookies. Só q eu gostaria de fazer com q o aluno entrasse com seu username e, na hora do professor levantar todas as notas, aparecesse o NOME cadastrado do aluno. ------------> Sigam abaixo, para melhor entendimento: login.php: <?php include ("conecta.php"); $username=$_POST["username"]; $senhaaluno=$_POST["senhaaluno"]; $sql="SELECT * from aluno where username='$username' and senhaaluno='$senhaaluno'"; $resultado=mysql_query($sql) or die (mysql_error()); $linhas=mysql_num_rows($resultado); if($linhas==0) { echo "<script>alert('Usuário não encontrado!');location.href='login.html'; </script>"; } elseif($senhaaluno!=mysql_result($resultado, 0,"senhaaluno")){ //confere senha echo "<script>alert('Senha Inválida!');location.href='login.html'; </script>"; }else{ // usuário e senha corretos. Cria-se os cookies: setcookie("username_aluno",$username); setcookie("senha_aluno",$senhaaluno); // direciona para a página inicial dos usuários cadastrados: header ("Location:administracao.php"); } mysql_close($conexao); ?> -------------------> Depois... o programa valida_cookies.php: <?php if (isset($_COOKIE["username_aluno"])) $username_aluno=$_COOKIE["username_aluno"]; if(isset($_COOKIE["senha_aluno"])) $senha_aluno=$_COOKIE["senha_aluno"]; if(!(empty($username_aluno) OR empty($senha_aluno))) { include("conecta.php"); $sql="SELECT * from aluno where username='$username_aluno'"; $resultado=mysql_query($sql) or die (mysql_error()); if (mysql_num_rows($resultado)==1) { if($senha_aluno !=mysql_result($resultado,0,"senhaaluno")) { setcookie("nome_aluno"); setcookie("senha_aluno"); echo"<script>alert('Você não efetuou o LOGIN!');location.href='login.html'; </script>"; exit; } } else { setcookie("nome_aluno"); setcookie("senha_aluno"); echo"<script>alert('Você não afetuou o LOGIN!');location.href='login.html'; </script>"; exit; } } else { echo "<script>alert('Você não efetuou o LOGIN!');location.href='login.html'; </script>"; exit; } mysql_close ($conexao); ?> -------------------> Q é enviado para o programa administracao.php: <?php $username=$_COOKIE["username_aluno"]; ?> <center><h1><b>Administração</center></b> </h1> <br> <h3>Olá, <?php echo $username; ?>!</h3> <A href="prova_dinamica.php">Prova</a><br> <A href="f_fornecedor.html">Professor</A><br> <b><h3>Consulta</h3></b> <A href="f_loccli.html">Aluno</A><br> <A href="f_locforn.html">Professor</A><br> <b><h3>Relatorio</h3></b> <A href="lista_cliente.php">Aluno</A><br> <A href="lista_fornecedor.php">Professor</A><br> E, finalmente, direciona à prova, com o script já referenciado no início do tópico. Estou tendo dificuldades em fazer com q o aluno digite seu username mas, no banco de dados, apareça seu nome completo, definido durante o cadastro. -------------> Pq no banco de dados eu havia estipulado o seguinte: codprova int(3) Não auto_increment username varchar(256) latin1_swedish_ci Não pontos int(3) Não Eu n poderia fazer uma comparação, como: $sql"INSERT into resultado_prova where username=='$nomealuno'";? Pq eu tentei e n deu certo... Lógico q eu acabei modificando a variável no banco de dados: nomaealuno ao invés de username. São pequenas questões que ainda me deixam um pouco confusa... Falta de "intimidade" com os códigos... Compartilhar este post Link para o post Compartilhar em outros sites
FabianoM 0 Denunciar post Postado Agosto 11, 2009 Ali onde você faz o select do aluno conforme username e senha e depois se estiver correto grava o mesmo em um cookie: }else{ // usuário e senha corretos. Cria-se os cookies: setcookie("username_aluno",$username); setcookie("senha_aluno",$senhaaluno); // direciona para a página inicial dos usuários cadastrados: header ("Location:administracao.php"); } você pode fazer pra gravar o nome do aluno no banco: }else{ // usuário e senha corretos. Cria-se os cookies: //precorro o resultado da consulta $dados = mysql_fetch_array($resultado); //pega o campo do nome do aluno $nomealuno = $dados["nomealuno"]; setcookie("username_aluno",$username); setcookie("senha_aluno",$senhaaluno); setcookie("nome_aluno",$nomealuno); // direciona para a página inicial dos usuários cadastrados: header ("Location:administracao.php"); } Aí na hora de cadastrar na tabela, você salva o nome do aluno conforme esse cookie. Outra forma, seria na hora de cadastrar, você efetuar novamente a consulta do aluno conforme seu username (que acredito eu não existam mais de um com o mesmo) então pega seu nome e joga na tabela desejada. Eu, particularmente, ao invés de salvar o nome, salvaria a ID do aluno, e na hora de mostrar o nome, faria uma consulta na tabela de alunos conforme a ID salva ;) Mas acredito q isso possa te ajudar http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
Barbyzita 0 Denunciar post Postado Agosto 11, 2009 Hum! Captei vossa mensagem. rs De fato, farei a última coisa q me sugeriu. Obrigada! Compartilhar este post Link para o post Compartilhar em outros sites