Hoje veremos como criar uma página de estatísticas com os
temas mais pesquisados em seu site. Para começar, crie uma tabela bem simples para
gravar as consultas, por exemplo salvando o id das categorias pesquisadas e
data/hora das pesquisas. Caso não tenha essa tabela de categorias, use o código
a seguir:
CREATE TABLE `categorias` (
`id` int(10)
unsigned NOT NULL auto_increment,
`nomCat`
varchar(100) default NULL,
PRIMARY
KEY (`id`),
UNIQUE KEY
`id` (`id`),
KEY `id_2`
(`id`)
)
ENGINE=InnoDB DEFAULT CHARSET=latin1
A tabela para salvar as pesquisas pode ser criada com esse
código:
CREATE TABLE `pesquisa` (
`id` int(10)
NOT NULL auto_increment,
`categ`
int(10) default NULL,
`dia`
timestamp NULL default CURRENT_TIMESTAMP,
PRIMARY
KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Abra agora o editor de páginas PHP e crie essa página
simples para criar um “menu” de pesquisas:
<?php
// conexao
$stmt1 = $con->prepare("select distinct id,
nomCat from categorias order by nomCat");
$stmt1->execute();
?>
<body>
Pesquisa
por categoria (assunto): <br />
<form name="form1"
method="post" action="XXX">
<select name="cxnome"
id="cxnome">
<?php
while($registros = $stmt1->fetch(PDO::FETCH_OBJ)){
?>
<option
value="<?php echo $registros->id;?>"><?php echo
$registros->nomCat;?></option>
<?php
}
?>
</select>
<input name="pesquisa"
type="submit" id="pesquisa" value="Pesquisar">
</form>
<p><br
/>
Por enquanto apague o triplo “XXX” acima, deixando as aspas
em branco; salve e teste sua página, já deverá surgir um menu com as
categorias:
Adicione o seguinte código para gravar as pesquisas na
tabela correspondente:
<?php
$pesquisa1=$_POST['pesquisa'];
$pesquisa2=$_POST['cxnome'];
if(isset($pesquisa1)){
echo
$pesquisa2;
$stmt1
= $con->prepare("insert into pesquisa(categ) values($pesquisa2)");
$stmt1->execute();
}
?>
</body>
</HTML>
E não se esqueça de corrigir a “action” do formulário para
exibir ao usuário a pesquisa que ele fez (se não tiver esta página, veja o
post: http://trocadicas.blogspot.com.br/2015/04/pagina-de-busca-simples-com-pdo-e-mysql.html).
Agora crie uma página para as estatísticas desejadas. Veja
alguns exemplos abaixo:
total de pesquisas no mês corrente:
select count(*) total from pesquisa
select count(*) total from pesquisa
where month(dia)=month(curdate());
total de pesquisas no mês corrente por
categoria, ordenada pela categoria mais pesquisada:
select nomCat, count(*) total from pesquisa, categorias
where month(dia)=month(curdate()) and
categorias.id=pesquisa.categ
group by categ order by count(*) desc;
nomes e total de pesquisas por
categoria:
select nomCat categoria, count(categ) "total" from categorias,
pesquisa where categorias.id=pesquisa.categ
group by categ order by categoria;
“Ranking” das categorias mais pesquisadas: select nomCat categoria, count(categ) "total" from categorias, pesquisa where categorias.id=pesquisa.categ group by categ order by 2 desc;
totais d pesquisas por mês,
ordenados pelo mês mais recente:
select month(dia) mes, count(*) total from pesquisa
group by month(dia) order by month(dia) desc;