Nícolas 4 Denunciar post Postado Junho 27, 2005 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
red neck * 0 Denunciar post Postado Junho 27, 2005 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
Nícolas 4 Denunciar post Postado Junho 27, 2005 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. 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
wolfphw 60 Denunciar post Postado Junho 27, 2005 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
Nícolas 4 Denunciar post Postado Junho 28, 2005 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
ronaldosdb 1 Denunciar post Postado Junho 29, 2005 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
Nícolas 4 Denunciar post Postado Junho 29, 2005 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