Criar Web, manuais e recursos para desenvolvimento web
Manuais
Programas
FAQS
Diretório
Comunidade
  Inicio > Manuais > Workshop de PHP
SEÇÕES
Manuais relacionados
+Workshop de PHP
Categorias
+PHP
+Scripts em PHP

Índice do Manual Workshop de PHP
+ Gestão de ficheiros através de PHP
+ Upload de ficheiros com PHP
+ Verificar a existência de uma URL
+ Leitura sequencial de ficheiros com PHP
+ Escritura em ficheiros com PHP
+ Gestão de directórios com PHP
+ Função que escreve um campo select com valores de uma base de dados
+ Receber o último ID de uma inserção com PHP e MySQL
+ Recolher dados de um Select Multiple com PHP
+ Enviar e-mails pelo PHP
+ Validar um endereço email em PHP
+ Loop para receber todas as variáveis por POST em PHP
+ Enviar um formulário por mail com PHP
+ Paginação de resultados com PHP e MySQL
+ Usuários ativos com PHP
+ Listas de elementos com cores alternas em PHP
+ Programas de livre distribuição em PHP
+ phpMyAdmin
+ Formatação de uma cadeia
+ Cálculo dos dias de um mês em PHP
+ Contador simples para páginas PHP
+ Avaliações dos usuários em PHP
+ Rastrear os robôs de buscadores
+ Recomendar um site usando PHP
+ Criação de um log de erros
+ Comprimir página PHP
+ Contador PHP com imagens
+ Editor PHP Maguma Studio
+ SiteMaps de Google em PHP
+ Teste de velocidade de conexão à Internet
+ Mostrar Conteúdo de acordo com o país em PHP
+ Conteúdos em banco de dados com PHP
+ Problemas com as datas em timestamp Unix de PHP
+ Contar o número de linhas e caracteres em arquivo PHP
+ Transformação Doc, Odt ou Rtf para PDF
+ Preencher um arquivo RTF e gerar o PDF
+ Converter arquivos ods ou xls para pdf
+ PHP isam, ferramenta Web para Arquivos Planos
+ Undefined variable ou Undefined index
+ Agregar carinhas ao sistema
+ Paginator, script para paginação com PHP e MySQL
+ Executar scripts PHP automaticamente através do cron com CURL
+ Uso do FTP com PHP
+ Instalação de One or Zero PHP Helpdesk
+ Portal PHP Nuke
+ Gerando feed RSS de notícias em PHP
+ Blasten blt-SEARCH 1.0.5
+ Classes e Objetos em PHP
+ Recuperando a qualidade de uma imagem JPEG
+ Comprovar se existe o domínio do correio
+ Tutorial de BBCode
+ Função em PHP para o cálculo de minutos transcorridos em duas horas dadas
+ Criação de gráficos em PHP com JpGraph
+ Gerar documentos de Word RTF com PHP
+ Introdução ao Symfony
+ Arredondar decimais em PHP
+ Envio de boletins a e-mails de um banco de dados MySQL
+ Htaccess e páginas dinâmicas
+ Criando imagens com PHP
+ Programar um buscador com PHP e MySQL
+ Loop para receber todos os dados de uma fila de um recordset com PHP

Descrição dos capítulos

Parceiros
- CSS para Web Design
- S.O.S Designers
- Slackware-Brasil
- Crie seu Web site
- Oficina da Net


Avaliações dos usuários em PHP

Sistema 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

Manuais relacionados com este artigo
Dentro de Workshop de 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
Entre os comentários não revistos podem ter alguns interessantes que tenham sido enviado recentemente.
 Foram econtrados 2 comentários sem rever

VerVer os comentários não revistos



Sobre nós | Copyright | Anuncie | Entrar em contato <criarweb>

Hospedado por Hostnet Hospedagem de Sites