|
|
|
||||||||||||||||||||||
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Parceiros - CSS para Web Design - S.O.S Designers - Slackware-Brasil - Crie seu Web site - Oficina da Net |
Avaliações dos usuários em PHPSistema criado em PHP e MySQL para implementar a possibilidade de que os usuários possam votar uma página web. O processo é parecido, ou melhor, é o mesmo empregado para tirar qualquer média, por exemplo: a média de notas de um estudante.
PTOS ACUMULADOS / TOTAL DE ACUMULAÇÕES Para isso, utilizaremos uma tabela de dados: <? CREATE TABLE `avaliacoes` ( `id_noticia` int(9) NOT NULL default '0', `num_votos` int(20) NOT NULL default '0', `ptos` int(20) NOT NULL default '0' ) TYPE=MyISAM; ?> Cabe destacar que não é necessário utilizar uma tabela de dados individual, sempre e quando se conte com uma tabela geral de artigos ou conteúdos e obviamente se disponham pelo menos dos dois últimos campos desta tabela, para o funcionamento do script. Este sistema trabalha com 1 só registro por artigo ou conteúdo, onde o campo id_noticia, se refere ao identificador de nossa notícia ou conteúdo, num_votos; o total de votos realizados em torno desse conteúdo e ptos a soma de todos os votos: Por exemplo: id_noticia= 00001 - nossa primeira notícia num_votos= 3 - somente três votos nesta notícia. Ptos= 15 - é provável que os três tenham votado por 5 pontos. Então, logicamente, a avaliação média é de 5 ptos. Código Fonte: <? #####CONEXÃO A MYSQL @mysql_connect('localhost','usuario','pass')or die ('Falhou a conexão: '.mysql_error()); @mysql_select_db('base_de_dados')or die ('Erro ao selecionar a BD: '.mysql_error()); ////end conexão $SSQL_=mysql_query("SELECT * FROM avaliações WHERE id_noticia='".$_GET[id]."'")or die(mysql_erro()); $array_d=mysql_fetch_array($SSQL_); $avaliacaO_total=@round($array_d[ptos]/$array_d[num_votos],2); if(isset($_POST[valor])){ if(mysql_num_rows($SSQL_)==0){ @mysql_query("INSERT INTO avaliacoes VALUES('".$_GET[id]."','1','".$_POST[valor]."')")or die ('ERRO AO INSERIR REGISTRO: '.mysql_error()); }else{ @mysql_query("UPDATE avaliacoes SET num_votos=num_votos+1,ptos=ptos+".$_POST[valor]." WHERE id_noticia='".$_GET[id]."'")or die ('ERRO AO MODIFICAR REGISTRO: '.mysql_error()); } header('Location:'.$REQUEST_URI); exit; } '<strong>Avaliação Média : '.$avaliacaO_total.'</strong> <div style="background-color:#EFEFEF; width:50px"><img width="'.($ avaliacaO _total*5).'" height="6" style="background-color: #000099"></div> <br>Total de votos: '.$array_d[num_votos]; ?><hr> <form action="<? $REQUEST_URI;?>" method="post"> Nova avaliação: <select name="valor" id="valor"> <? for ($i=1; $i<=10 ; $i++) '<option value="'.$i.'">'.$i.'</option>';?> </select> <input type="submit" value="Votar por este artigo"> </form> Explicando: Antes de nada, como de costume criamos a conexão ao servidor de mysql; onde devemos fornecer nossos dados de acesso reais. Selecionamos a base de dados sobre a qual trabalharemos. E geramos uma petição ao servidor Mysql mysql_query(); onde solicitamos os registros armazenados previamente por cada conteúdo ou artigo. Atribuímos à variável $array_d, a matriz devolvida por mysql_fetch_array(), para logo agrupar na variável $avaliacaO_total; o valor devolvido pela divisão entre $array_d[ptos] y $array_d[num_votos], arredondamos o valor com 2 decimais round(), colocamos o @ ao começo da função para evitar que se mostrem possíveis erros se por acaso a divisão for entre 0 (zero). Finalmente, iniciamos uma condição para comprovar se ($_POST[valor]) está definida, ou seja, se está se processando o formulário para inserir novas avaliações. Se a condição avalia TRUE então executamos uma série de instruções, sendo a primeira uma nova condição: if(mysql_num_rows($SSQL_)==0): Para comprovar se ainda não há nenhum registro e avaliação e inserir um novo. @mysql_query("INSERT INTO… Do contrário ( else) quer dizer nesta ocasião que pelo menos uma pessoa já votou e por isso não podemos fazer um novo registro, ou melhor, uma modificação do já existente. @mysql_query("UPDATE avaliações… Posteriormente, sem importar qual das duas rotinas encontra selecionado o script, realiza um encaminhamento header(Location: … ) a .$REQUEST_URI, que é exatamente a mesma URL , para que o usuário veja os dados atualizados. Ou seja, seu voto adicionado na lista. Finalmente, imprimimos o resultado, com um gráfico e adicionamos o formulário que será utilizado para uma próxima votação. Já ficaria a sua escolha, modificá-lo um pouco (se desejar) para que o usuário possa votar somente 1 vez.
Autoria e outras referências sobre este artigo Dentro deste artigo: + 1 manual relacionado + 2 Categorias relacionadas + 2 Comentários sem rever
Manuais relacionados com este artigo Dentro de Workshop de PHP Seguinte: Rastrear os robôs de buscadores Anterior: Contador simples para páginas PHP Categorias relacionadas Através das categorias do nosso diretório podem ser encontrados outros tipos de recursos relacionados com este artigo: + Entrar em PHP+ Entrar em Scripts em PHP Comentário sem rever
|
| Sobre nós | Copyright | Anuncie | Entrar em contato | <criarweb> |