Ir para conteúdo
View in the app

A better way to browse. Learn more.

EletrônicaBR.com

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Contador de Visualizações em PDO não estafuncionando

Featured Replies

Postado

Bom Dia a todos.

Estou montando um sistema de contagem de visualização unico e por paginas com PDO. Peguei em um tutorial o codigo ja pronto com MYSQL e quando converti ele para PDO começou a dar problemas.

O novo codigo em PDO não esta criando a tabela no SQL, se a tabela do dia ja estiver com dados implantados ele continua adicionando as visualizações, mas se chega um novo dia ele não executa asfunções que deveria. Posto a baixo os dois codigos para vocês visualizarem

 

===============================================================

Codigo antigo com Conexão MYSQL

===============================================================

 

<?php

 

 

 

require ('conexao.php'); // Pega os dados do Banco de Dados para Conexão

 

//  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 Codigo com PDO para Conexões:

===============================================================

 

 

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

 

?>

  • 6 meses depois...
  • 4 semanas depois...
Postado

Poderia organizar seu código usando a tag '[' code' ]' ['/code']' da ferramenta do fórum, seu código ficaria mais legivel, entretanto vejo que vc não criou nem uma classe para retorna uma conexão PDO ou mysqli.

Participe agora da conversa!

Você pode postar agora e se cadastrar mais tarde. Se você tiver uma conta, faça login para postar com sua conta.

Visitante
Responder

Conteúdo Similar

Account

Navigation

Pesquisar

Pesquisar

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.