Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Nícolas

Criar uma enquete

Recommended Posts

Ai to querendo fazer uma enquete para o sistema de arquivos do meu site e to com o seguinte raciocinio, pra fazer uma enquete de nota de 1 a 10, eu tenho que colocar um campo que conta o total de votos e outro que conta o total da nota votada para o arquivoEu queria que o resultado desse 1 a 10 (Porque seria o numero de estrelas do arquivo) e quero que ele começe com 5 estrelas. (50%)Dai essa conta do total votado dividito pelo total da nota e daria a porcentagem, e eu teria que retirar o ultimo digito da porcentagem ex 64% - fica 6 que seria o numero de estrelasMeu raciocinio ta certo???E como eu faria para deixar só o primeiro digito, pois iria dar por exemplo 64,54%.Deixar só o 6 para ele puxar o nome da estrela (6.gif)

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao consegui entender direito o que voce quis dizer nao =/mais:

E como eu faria para deixar só o primeiro digito, pois iria dar por exemplo 64,54%.

tenta assim:

<?$str = 3213123;function first($s){  $s = "\"" . $s . "\"";  return $s{1};}echo first($str);?>ouhttp://br.php.net/manual/pt_BR/function.substr.php

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Putz pode crer é só utilizar a substr(), nem lembrava dela.

 

Mas em todo o caso é simples

 

Eu quero fazer um sistema de votação para os arquivos do site.

 

A pessoa vai poder dar notas de 1 a 10

 

A "porcentagem" dessa nota seria exibido como estrelas no site

 

Olha um exemplo da seção de downloads, dessa pagina vai para a de detalhes que a pessoa vai poder votar.

Imagem Postada

 

Voltando ao assunto, eu quero saber como fazer a enquete, para que de a porcentagem

 

ex: 64%, para eu pegar o 6 e jogar como nome da imagem.

 

1 estrela = /imagens/estrelas/1.gif

2 estrelas = /imagens/estrelas/2.gif

3 estrelas = /imagens/estrelas/3.gif

4 estrelas = /imagens/estrelas/4.gif

5 estrelas = /imagens/estrelas/5.gif

6 estrelas = /imagens/estrelas/6.gif // Que seria essa

7 estrelas = /imagens/estrelas/7.gif

8 estrelas = /imagens/estrelas/8.gif

9 estrelas = /imagens/estrelas/9.gif

10 estrelas = /imagens/estrelas/10.gif

 

Valores das Estrelas

 

1 Estrela = 10

2 Estrelas = 20

3 Estrelas = 30

4 Estrelas = 40

5 Estrelas = 50

6 Estrelas = 60

7 Estrelas = 70

8 Estrelas = 80

9 Estrelas = 90

10 Estrelas = 100

 

Dai eu tava querendo saber a lógica, para fazer isso.

 

Pois a que estou é a seguinte:

 

Irei acrescentar mais 2 campos a tabela

 

somadasnotas = soma a nota das pessoas que votaram

totaldevotos = total de pessoas que votarm

 

Dai eu iria fazer assim

 

somadasnotas/totaldevots // Dividir a soma das notas pelo total de votos

 

exemplo: 5 pessoas votaram

Primeira pessoa: Nota 5 = Valor 50

Segunda pessoa: Nota 9 = Valor 90

Terceira pessoa: Nota 6 = Valor 60

Quarta pessoa: Nota 6 = Valor 60

Quinta pessoa: Nota 10 = Valor 100

 

360/5 = 72%

 

Dai eu utilizaria a substr() para pegar somente o primeiro digito da porcentagem e trazer a figura.

 

72% => 7 => 7 estrelas = /imagens/estrelas/7.gif

 

Entendeu agora???

 

E ai minha lógica ta certa???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim.. sua lógica esta certa.. pode faze assim mesmo como você esta pensando, pegar todas as somatorias dos votos e dividir pelas quantidade de votos..

 

mas eu acho que seria um pouco mais legal fazer o seguinte.. ai invez dele montar as estrelas certinhas.. tipo se os votos derem 79% você vai arredondar pra 7 e o mais correto seria arredondar pra 8.. entaum eu acho que deveria fazer ele conseguir montar os votos em 7 estrelas quase 8, tipo como você pode fazer isso... você cria duas imagens uma chamada estrelas_off.gif e outra estelas_on.gif, você vai montar duas tabelas uma dentro da outra e na tabela de baixo (tem que ser do tamanho da imagem) você coloca como fundo a imagem estrelas_off.gif e na de dentro você coloca como fundo a imagem estrelas_on.gif... soh que a de dentro você naum utiliza o tamanho especifico e sim o tamanho em porcentagem.... dai no lugar do tamanho ele vai colocar a porcentagem pego da divisao dos valores dos votos pela quantidade de votos... Pra fica mais facil de entender to postando aki o exemplo que eu falei... Minhas imagens das estrelas tem 20x150 pixels..

 

PHP

[*]<?php

[*]if ($totaldevots < '1') { // ele verifica se teve 1 voto, senaum ele manda 0 pra naum dar erro quando mostrar o gráfico

[*] $porcentagem = 0;

[*] } else {

[*] $porcentagem = $somadasnotas/$totaldevots;

[*]}

[*]?>

[*]<table width="150" border="0" cellspacing="0" cellpadding="0">

[*] <tr>

[*] <td height="20" background="estrelas_off.gif"><table width="<?php echo $porcentagem; ?>%" border="0" cellspacing="0" cellpadding="0">

[*] <tr>

[*] <td height="20" background="estrelas_on.gif"></td>

[*] </tr>

[*] </table></td>

[*] </tr>

[*]</table>

 

Acho que assim ficaria mais legal a amostra das estrelas... :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa wolfphw Muito louco esse esquema ai em cara, achei muito bom, eu só tive que mudar a estrutura da seção de detalhes do download, pois nela eu organizava assim:

 

obs: * = Estrelas

 

Titulo: nomedoarquivo **********

 

Só que como ele utiliza tabelas, então ja sabe, tabela e texto não conseguem ficar na mesmalinha quando estão nas mesmas células.

 

Dai ele acabava ficando assim:

Titulo: nomedoarquivo

**********

 

Eu até pensei em utilizar uma tabela para ficar os 2 na mesma linhas e tal, mas quando tivesse algum arquivo com nome grande ele não iria aumentar a célula, e sim jogar o resto das palavras para baixo.

 

Titulo: nomedo

arquivo **********

 

Então, deu um trabalhinho e tal, tive que mudar a ordem das coisas mas ficou ótimo, até pq da uma noção mas realista do total da votação.

 

Porque ele vai carregando conforma a porcentagem.

 

E sobre o porcentagem 0 nem precisei esquentar, eu criei os campos

 

notatotal | totaldevotos | porcentagem

 

Assim que ele calcula a porcentagem já utilizo o substr() deixando apenas os 4 primeiro digitos (64,5)

 

Dai já boto pra gravar na tabela porcentagem.

 

E para não começar com as estrelas todas vazias eu coloco para iniciar com 50%, assim que inicia a votação ele inicia como se tivesse iniciado do zero.

 

Ai cara

 

Eu pensava que aquelas barrinhas de enquete seriam preciso aprender muita coisa a mais de php, mas era uma coisinha simples, uma lógica muito boa.

 

Não conhecia, vlw mesmo

 

http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

se nao for pedir muito, posta o script ai pra gente ver...nao precisa dar o peixe inteiro, joque a vara para a gente pescar....Tb to precisando de uma enque e gostei desse modelo, se possivel, poste por favorRonaldo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai, minha tabela do sistema de arquivos é esta

 

`id` int(11) NOT NULL auto_increment,`arquivo` varchar(50) NOT NULL default '',`url` varchar(150) NOT NULL default '',`imagem` varchar(150) NOT NULL default '',`tamanho1` varchar(20) NOT NULL default '',`tamanho2` varchar(3) NOT NULL default '',`categoria` varchar(15) NOT NULL default '',`plataforma` varchar(35) NOT NULL default '',`descricaor` text NOT NULL default '',`descricao` text NOT NULL default '',`visto` int(11) NOT NULL default '',`cliques` int(11) NOT NULL default '',`data`  varchar(35) NOT NULL default '',`notatotal` int(11) NOT NULL default '',`totaldevotos` int(11) NOT NULL default '',`porcentagem`  varchar(35) NOT NULL default '50',

 

voto.php // Arquivo que contabiliza os votos

PHP

[*]<?php

[*]include "config.php";

[*]$id = $_POST["id"];

[*]$nota = $_POST["nota"];

[*]

[*]

[*]$dados = mysql_query("SELECT * FROM arquivos WHERE id = '$id'");

[*]$votos = mysql_fetch_row($dados);

[*]

[*]setcookie("votos",$id,time()+3600);

[*]if (!$_COOKIE["votos"]){

[*]$votos[13] += $nota;

[*]$votos[14] += 1;

[*]

[*]$atualiza = mysql_query("UPDATE arquivos SET notatotal = '$votos[13]', totaldevotos = '$votos[14]' WHERE id = '$id'");

[*]

[*]if ($atualiza == 1){

[*]$dados = mysql_query("SELECT * FROM arquivos WHERE id = '$id'");

[*]$calcula = mysql_fetch_row($dados);

[*]

[*]$porcentagem = ($calcula[13]/$calcula[14]);

[*]

[*]$porcentagem = substr($porcentagem, 0, 4);

[*]

[*]

[*]$atualiza2 = mysql_query("UPDATE arquivos SET porcentagem = '$porcentagem' WHERE id = '$id'");

[*]

[*]if ($atualiza2 == 1){

[*]// Voto foi contabilizado no sistema

[*]?>

[*]<html>

[*]<head>

[*]<title>Aguarde...</title>

[*]<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>

[*]<body bgcolor="#f2f2f2">

[*]<table width='100%' height='85%' align='center'>

[*]<tr>

[*]<td valign='middle'>

[*]<div align="center"><img src="<?=$endsite?>imagens/votado.gif"><br>

[*]</div>

[*]</td>

[*]</tr>

[*]</table>

[*]</body>

[*]</html>

[*]<?

[*]}else{

[*] echo mysql_error();

[*]}

[*]}else{

[*] echo mysql_error();

[*]}

[*]

[*]}else{

[*]// A pessoa ja votou a menos de uma hora então exibe uma mensagem que o voto dela não foi válido

[*]?>

[*]<html>

[*]<head>

[*]<title>Aguarde...</title>

[*]<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>

[*]<body bgcolor="#f2f2f2">

[*]<table width='100%' height='85%' align='center'>

[*]<tr>

[*]<td valign='middle'>

[*]<div align="center"><img src="<?=$endsite?>imagens/nvotado.gif"><br>

[*]</div>

[*]</td>

[*]</tr>

[*]</table>

[*]</body>

[*]</html>

[*]<?

[*]}

[*]?>

 

 

Formulário para votar

<form method="post" action="voto.php?id=<?=$id?>" target="_blank">
<select name="nota" id="nota" class="busca2">
<option value="100">10 Estrelas
<option value="90">9 Estrelas
<option value="80">8 Estrelas
<option value="70">7 Estrelas
<option value="60">6 Estrelas
<option value="50">5 Estrelas
<option value="40">4 Estrelas
<option value="30">3 Estrelas
<option value="20">2 Estrelas
<option value="10">1 Estrela
</select>
</form>

 

 

<table width="123" border="0" align="left" cellpadding="0" cellspacing="0">
<tr>
<td height="15" background="<?=$endsite?>imagens/estrelas_off.gif"><table width=" <?=$porcentagem?>%"  border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="15" background="<?=$endsite?>imagens/estrelas_on.gif"></td>
</tr>
</table>
</td>
</tr>
</table>

 

O tamanho da imagem das estrelas do meu é 123x15

 

 

Ta ai!!!

 

Qualquer dúvida só perguntar

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.