Erro com contador de Visualizações em PDO
Usei um código já pronto usando conexão MYSQL que já estão ficando ultrapassados e fica mostrando um alerta na pagina. Fiz a conversão dele para PDO mas não esta funcionando direito. O código antigo cria a tabela no banco de dados e atualiza normalmente a cada visualização de pagina ou usuário único novo entrando no site, mas o novo código em PDO só atualiza uma tabela já existente, chegando a um novo dia ele não cria a nova tabela para poder registrar o pedido. Ambos os códigos estão aqui neste post. Não entendo muito de PDO, alguém poderia me ajudar por favor? O que posso ter feito de errado?
Antigo Código com MYSQL:
<?php
require ('conexao.php');
// Configurações do Script
// ==============================
$_CV['registraAuto'] = true; // Registra as visitas automaticamente?
$_CV['conectaMySQL'] = true; // Abre uma conexão com o servidor MySQL?
$_CV['iniciaSessao'] = true; // Inicia a sessão com um session_start()?
$_CV['servidor'] = $host; // Servidor MySQL
$_CV['usuario'] = $username; // Usuário MySQL
$_CV['senha'] = $pass; // Senha MySQL
$_CV['banco'] = $dbname; // Banco de dados MySQL
$_CV['tabela'] = 'visitas'; // Nome da tabela onde os dados são salvos
// Verifica se precisa fazer a conexão com o MySQL
if ($_CV['conectaMySQL'] == true) {
$_CV['link'] = mysql_connect($_CV['servidor'], $_CV['usuario'], $_CV['senha']) or die("MySQL: Não foi possível conectar-se ao servidor [".$_CV['servidor']."].");
mysql_select_db($_CV['banco'], $_CV['link']) or die("MySQL: Não foi possível conectar-se ao banco de dados [".$_CV['banco']."].");
}
// Verifica se precisa iniciar a sessão
if ($_CV['iniciaSessao'] == true) {
session_start();
}
/**
* Registra uma visita e/ou pageview para o visitante
*/
function registraVisita() {
global $_CV;
$sql = "SELECT COUNT(*) FROM `".$_CV['tabela']."` WHERE `data` = CURDATE()";
$query = mysql_query($sql);
$resultado = mysql_fetch_row($query);
// Verifica se é uma visita (do visitante)
$nova = (!isset($_SESSION['ContadorVisitas'])) ? true : false;
// Verifica se já existe registro para o dia
if ($resultado[0] == 0) {
$sql = "INSERT INTO `".$_CV['tabela']."` VALUES (NULL, CURDATE(), 1, 1)";
} else {
if ($nova == true) {
$sql = "UPDATE `".$_CV['tabela']."` SET `uniques` = (`uniques` + 1), `pageviews` = (`pageviews` + 1) WHERE `data` = CURDATE()";
} else {
$sql = "UPDATE `".$_CV['tabela']."` SET `pageviews` = (`pageviews` + 1) WHERE `data` = CURDATE()";
}
}
// Registra a visita
mysql_query($sql);
// Cria uma variavel na sessão
$_SESSION['ContadorVisitas'] = md5(time());
}
/**
* Função que retorna o total de visitas
*
* @param string $tipo - O tipo de visitas a se pegar: (uniques|pageviews)
* @param string $periodo - O período das visitas: (hoje|mes|ano)
*
* @return int - Total de visitas do tipo no período
*/
function pegaVisitas($tipo = 'uniques', $periodo = 'hoje') {
global $_CV;
switch($tipo) {
default:
case 'uniques':
$campo = 'uniques';
break;
case 'pageviews':
$campo = 'pageviews';
break;
}
switch($periodo) {
default:
case 'hoje':
$busca = "`data` = CURDATE()";
break;
case 'mes':
$busca = "`data` BETWEEN DATE_FORMAT(CURDATE(), '%Y-%m-01') AND LAST_DAY(CURDATE())";
break;
case 'ano':
$busca = "`data` BETWEEN DATE_FORMAT(CURDATE(), '%Y-01-01') AND DATE_FORMAT(CURDATE(), '%Y-12-31')";
break;
}
// Faz a consulta no MySQL em função dos argumentos
$sql = "SELECT SUM(`".$campo."`) FROM `".$_CV['tabela']."` WHERE ".$busca;
$query = mysql_query($sql);
$resultado = mysql_fetch_row($query);
// Retorna o valor encontrado ou zero
return (!empty($resultado)) ? (int)$resultado[0] : 0;
}
if ($_CV['registraAuto'] == true) { registraVisita(); }
?>
Novo Código com PDO:
<?php
require ('conexao.php');
// Configurações do Script
// ==============================
$_CV['registraAuto'] = true; // Registra as visitas automaticamente?
$_CV['conectaMySQL'] = true; // Abre uma conexão com o servidor MySQL?
$_CV['iniciaSessao'] = true; // Inicia a sessão com um session_start()?
$_CV['servidor'] = $host; // Servidor MySQL
$_CV['usuario'] = $username; // Usuário MySQL
$_CV['senha'] = $pass; // Senha MySQL
$_CV['banco'] = $dbname; // Banco de dados MySQL
$_CV['tabela'] = 'visitas'; // Nome da tabela onde os dados são salvos
// Verifica se precisa fazer a conexão com o MySQL
if ($_CV['conectaMySQL'] == true) {
$_CV['link'] = new PDO('mysql:host='.$_CV['servidor'].';dbname='.$_CV['banco'].'', ''.$_CV['usuario'].'', ''.$_CV['senha'].'') or die("MySQL: Não foi possível conectar-se ao servidor [".$_CV['servidor']."].");
}
// Verifica se precisa iniciar a sessão
if ($_CV['iniciaSessao'] == true) {
session_start();
}
/**
* Registra uma visita e/ou pageview para o visitante
*/
function registraVisita() {
global $_CV;
$sql = "SELECT COUNT(*) FROM `".$_CV['tabela']."` WHERE `data` = CURDATE()";
$query = $_CV['link']->query ($sql);
$resultado = $query->fetchAll();
// Verifica se é uma visita (do visitante)
$nova = (!isset($_SESSION['ContadorVisitas'])) ? true : false;
// Verifica se já existe registro para o dia
if ($resultado[0] == 0) {
$sql = "INSERT INTO `".$_CV['tabela']."` VALUES (NULL, CURDATE(), 1, 1)";
} else {
if ($nova == true) {
$sql = "UPDATE `".$_CV['tabela']."` SET `uniques` = (`uniques` + 1), `pageviews` = (`pageviews` + 1) WHERE `data` = CURDATE()";
} else {
$sql = "UPDATE `".$_CV['tabela']."` SET `pageviews` = (`pageviews` + 1) WHERE `data` = CURDATE()";
}
}
// Registra a visita
$_CV['link']->query ($sql);
// Cria uma variavel na sessão
$_SESSION['ContadorVisitas'] = md5(time());
}
/**
* Função que retorna o total de visitas
*
* @param string $tipo - O tipo de visitas a se pegar: (uniques|pageviews)
* @param string $periodo - O período das visitas: (hoje|mes|ano)
*
* @return int - Total de visitas do tipo no período
*/
function pegaVisitas($tipo = 'uniques', $periodo = 'hoje') {
global $_CV;
switch($tipo) {
default:
case 'uniques':
$campo = 'uniques';
break;
case 'pageviews':
$campo = 'pageviews';
break;
}
switch($periodo) {
default:
case 'hoje':
$busca = "`data` = CURDATE()";
break;
case 'mes':
$busca = "`data` BETWEEN DATE_FORMAT(CURDATE(), '%Y-%m-01') AND LAST_DAY(CURDATE())";
break;
case 'ano':
$busca = "`data` BETWEEN DATE_FORMAT(CURDATE(), '%Y-01-01') AND DATE_FORMAT(CURDATE(), '%Y-12-31')";
break;
}
// Faz a consulta no MySQL em função dos argumentos
$sql = "SELECT SUM(`".$campo."`) FROM `".$_CV['tabela']."` WHERE ".$busca;
$query = $_CV['link']->query ($sql);
$resultado = $query->fetchAll();
// Retorna o valor encontrado ou zero
return (!empty($resultado)) ? (int)$resultado[0] : 0;
}
if ($_CV['registraAuto'] == true) { registraVisita(); }
?>Discussão (0)
Carregando comentários...