Jump to content
Sign in to follow this  
paikoala

Erro com contador de Visualizações em PDO

Recommended Posts

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(); }



?>

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By Sapinn
      Opa galera tudo beleza? Então meu banco está me retomando um erro quando tento inserir nele que é "Dados truncados na coluna valor_produto" essa coluna era do tipo Double quando eu mudei para ela para TEXT funcionou os dados foram inseridos mas eu preciso que ela seja do tipo double. Alguém sabe como resolver????
    • By k9studio
      Olá Amigos,
      se alguem puder dar um help fico muito grato
      seguinte:
      estou criando um sistema de login com cookie
      todas as paginas fica no patch
      www/htdocs/script/
      quando logar no dominio.com.br liberar o acesso no  cliente.dominio.com.br tambem
      acesso:dominio.com.br
      ou
      quando logar no cliente.dominio.com.br liberar o acesso no dominio.com.br tambem
      acesso:cliente.dominio.com.br
      e guando deslogar quebrar conxao com os dois
      existe uma maneira de fazer isso?
       
    • By Kefatif
      Prezados boa tarde.
       
      Preciso bloquear a edição de um date input de forma que só seja possível selecionar a data através do calendário.
       
      Alguém pode me ajudar?
       
      Utilizo php, html e js.
       
      <input type="date" value="<?php echo $data ?>" name="datacoleta" class="form-control" required style="width:100%;">  
      Agradeço desde já.
    • By Kefatif
      Prezados boa tarde.
       
      Preciso bloquear a edição de um date input de forma que só seja possível selecionar a data através do calendário.
       
      Alguém pode me ajudar?
       
      Utilizo php, html e js.
       
      <input type="date" value="<?php echo $data ?>" name="datacoleta" class="form-control" required style="width:100%;">  
      Agradeço desde já.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.