Jump to content


Photo

Sistema De Votação Por Estrelas (1 A 5)


  • Faça o login para participar
4 replies to this topic

#1 Jola

Jola

    Turista

  • Usuários
  • 49 posts
  • Sexo:Masculino

Posted 16/10/2008, 17:33

Boa Tarde,

Estou faz semanas testando todos os possíveis sistemas de voto por estrela, mas nenhumm funciona...
Toda vez, nenhum código está completo e na moral, eu nem tenho capacidade pra fazer um do zero...

Alguem recomenda algum sistema de votação por estrela grátis, pra eu colocar nas páginas do meu site
que eu estou fazendo, é o unico sistema que falta o resto tá tudo funcionando....


Abraçoss valeu pela atenção!!!

#2 JuniorE

JuniorE

    Turista

  • Usuários
  • 51 posts
  • Sexo:Não informado

Posted 16/10/2008, 17:57

Cara, eu não conheço nenhum mas eu acho que é bem simples de se fazer um...

Se quiser fazer um do 0, podemos trocar umas idéias aqui e certamente o pessoal aqui do fórum vai ajudar muito também!

Flws!

#3 Jola

Jola

    Turista

  • Usuários
  • 49 posts
  • Sexo:Masculino

Posted 16/10/2008, 18:15

Cara, eu não conheço nenhum mas eu acho que é bem simples de se fazer um...

Se quiser fazer um do 0, podemos trocar umas idéias aqui e certamente o pessoal aqui do fórum vai ajudar muito também!

Flws!


Ótimo, vamos lá...

Está aqui o código, que tem as 5 estrelas, voce passa o mouse, ele escolhe faz todo aquele processo, da estrela perder a cor ou ganhar...
Ahh ele manda uma mensagem, de Ruím, até Ótimo...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Votação</title>
</head>
<style>
.ajax{
font-family:Tahoma;
font-size:10pt;
color:#333333;
}
</style>
<script>
function cache() {
imagens = new Image();
imagens.src='image/silver_star.png';
imagens.src='image/gold_star.png';
}
function vota(id) {
if(id==1) {
document.getElementById('nota').innerHTML="<font class='ajax'>Ruím</font>";
}
if(id==2) {
document.getElementById('nota').innerHTML="<font class='ajax'>Regular</font>";
}
if(id==3) {
document.getElementById('nota').innerHTML="<font class='ajax'>Bom</font>";
}
if(id==4) {
document.getElementById('nota').innerHTML="<font class='ajax'>Muito bom</font>";
}
if(id==5) {
document.getElementById('nota').innerHTML="<font class='ajax'>Ótimo</font>";
}
for(i = 0; i < id; i++) {
document.getElementById(i+1).src="image/gold_star.png";
}
}

function retira(id) {
for(i = 5; i > id; i--) {
document.getElementById(i).src="image/silver_star.png";
}
}
</script>
<body>
<body onLoad="cache()">

<table cellspacing=2 cellpading=2>
<tr>
<td width="16" onmouseover="vota('1')" onmouseout="retira('1')"><img id="1" src="image/gold_star.png" border="0"></td>
<td width="16" onmouseover="vota('2')" onmouseout="retira('2')"><img id="2" src="image/gold_star.png" border="0"></a></td>
<td width="16" onmouseover="vota('3')" onmouseout="retira('3')"><img id="3" src="image/gold_star.png" border="0"></a></td>
<td width="16" onmouseover="vota('4')" onmouseout="retira('4')"><img id="4" src="image/gold_star.png" border="0"></a></td>
<td width="24" onmouseover="vota('5')" onmouseout="retira('5')"><img id="5" src="image/gold_star.png" border="0"></a></td>
<td id="nota" width="65"></td>
</tr>
</table>
</body>
</html>

Está ai a página completa, agora como faço para que ao clicar na estrela, ele vai juntando pontos e fazendo uma média, e jogando embaixo das
estrelas as médias, sendo que cada pessoa pode votar somente 1 vez sei la, por dia talvez....


Abraçoss!!!

#4 JuniorE

JuniorE

    Turista

  • Usuários
  • 51 posts
  • Sexo:Não informado

Posted 17/10/2008, 14:27

Bom, vamos por partes...

1º - Para ter acesso a esta votação, os usuários terão que estar logados no sistema?
Caso sim, para que um usuário não vote mais de uma vez por dia, podemos fazer uma validação inserindo um registro no banco dizendo que ele já votou.
Caso o usuário não necessite estar logado para acessar o sistema de votação, então teremos que pegar o IP do usuário logado e gravar no banco.
Toda vez que um usuário tentar votar, será feita uma consulta ao banco para ver se esse usuário já não votou anteriormente.

2º - Para você definir uma média, você terá que definir valores para cada estrela ou então utilizar os valores de 1 a 5 mesmo.
Nessa caso você pode utilizar Ajax, especificamente a biblioteca jQuery que facilita muito esse trabalho para inserir valores no bd sem refresh na tela.
Assim, você pega o valor da estrela que o usuário clicou e manda via Ajax para um arquivo php, que vai fazer a média e retorná-la para a tela.

Exemplo de código:
votacao.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Votação</title>
</head>
<style>
.ajax{font-family:Tahoma;
font-size:10pt;
color:#333333;
}
</style>
<script>
function cache() {
imagens = new Image();
imagens.src='image/silver_star.png';
imagens.src='image/gold_star.png';
}
function vota(id) {
if(id==1) {
document.getElementById('nota').innerHTML="<font class='ajax'>Ruím</font>";
}
if(id==2) {
document.getElementById('nota').innerHTML="<font class='ajax'>Regular</font>";
}
if(id==3) {document.getElementById('nota').innerHTML="<font class='ajax'>Bom</font>";
}
if(id==4) {
document.getElementById('nota').innerHTML="<font class='ajax'>Muito bom</font>";
}
if(id==5) {
document.getElementById('nota').innerHTML="<font class='ajax'>Ótimo</font>";
}
for(i = 0; i < id; i++) {
document.getElementById(i+1).src="image/gold_star.png";
}
}
function retira(id) {
for(i = 5; i > id; i--) {
document.getElementById(i).src="image/silver_star.png";
}
}

function salvaVoto(idVotacao,valor){
/*Este código aqui eu completo mais tarde, 
pois estou sem ele aqui na empresa*/

}

</script>
<body>
$idVotacao = $_POST['id'];
<body onLoad="cache()">
<table cellspacing=2 cellpading=2>
<tr>
<td width="16" onmouseover="vota('1')" onmouseout="retira('1')">
<img id="1" src="image/gold_star.png" border="0" onclick="salvaVoto(<? echo $idVotacao ?>, '1')">
</td>
<td width="16" onmouseover="vota('2')" onmouseout="retira('2')">
<img id="2" src="image/gold_star.png" border="0" onclick="salvaVoto(<? echo $idVotacao ?>, '2')">
</a>
</td>
<td width="16" onmouseover="vota('3')" onmouseout="retira('3')">
<img id="3" src="image/gold_star.png" border="0" onclick="salvaVoto(<? echo $idVotacao ?>, '3')">
</a>
</td>
<td width="16" onmouseover="vota('4')" onmouseout="retira('4')">
<img id="4" src="image/gold_star.png" border="0" onclick="salvaVoto(<? echo $idVotacao ?>, '4')">
</a>
</td>
<td width="24" onmouseover="vota('5')" onmouseout="retira('5')">
<img id="5" src="image/gold_star.png" border="0" onclick="salvaVoto(<? echo $idVotacao ?>, '5')">
</a>
</td>
<td id="nota" width="65">
</td>
</tr>
</table>
</body>
 u</html>

Neste arquivo, ao você chamar ele, terá que passar o id da votação.
Assim quando você for votar, clicando em uma estrela, ele vai enviar para o arquivo php que descreverei abaixo
o id da votacao e o valor da mesma. Este mesmo arquivo vai retornar a média do daquela votação.

votaRetMedia.php
<?
$media = 0;
$idVotacao = $_POST['idVotacao'];
$valor = $_POST['valor'];
$idUsuario = $_SESSION['idUsuario']; //Pega o id do usuário caso o sistema funcione com sessions.

//Fazer um INSERT no BD com o id da votacao, o usuário e o valor.

//Depois do INSERT, deve ser feito uma consulta que retornará o número de registros encontrados
//para essa votacao e a soma de todos os valores. Assim será possível fazer a média e retornar
//esse valor e exibir a média na tela. Tem que verificar, talvez o SQL já tenha uma funcao que
//calcula a média de um determinado campo.

return $media;

?>

Bom, já tens uma base e podes ir atrás de como se faz um insert e select para
ir completando o arquivo votaRetMedia.php

Hoje a noite tento completar mais os códigos. Pode ser que alguns estejam com
a sintaxe errada, pois fiz direto no notepad aqui.

Abraços!

#5 RonsisM

RonsisM

    Super Veterano

  • Usuários
  • 15724 posts
  • Sexo:Masculino
  • Localidade:Plovdiv

Posted 25/09/2017, 16:27

Authentioc Brand Viagra cialis Zithromax Urine Smell
Propecia Orkut Proscar viagra cialis Dove Acquistare Cialis




0 user(s) are reading this topic

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

IPB Skin By Virteq