Postado 28 de Outubro de 2016 9 anos 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(); } ?>
Postado 23 de Maio de 2017 8 anos poderia postar o arquivo error.log mostrando os erros quando o codigo em PDO é executado?
Postado 14 de Junho de 2017 8 anos 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.