Sites Dinâmicos

Sites dinâmicos são sites gerenciáveis por sistemas de CMS (Content Management System), através de uma plataforma online, que é acessada por login e senha, é possível manipular todo o conteúdo gerenciável do Mais »

Modelagem 3D

Se sua empresa precisa de ilustrações em 3D, venha falar com a Toca Digital e conheça o nosso trabalho. A modelagem 3D (modelagem tridimensional)  é o processo de desenvolvimento de uma representação Mais »

Ganhe tempo na construção de seu site

  Não perca seu tempo com empresas que vão deixar você na mão, montamos seu site com os melhores recursos da internet, ferramentas de gereciamento de conteúdo e de controle estatístico. Com Mais »

 

Módulo de Contagem Regressiva (Cronômetro) para AngularJS

Código do módulo de contagem regressiva:

angular.module("iCountdown",[]).directive("iCountdown",function(){return{restrict:"EAC",scope:{setDate:"@",expireMessage:"@",formatView:"@"},replace:!0,template:"<div><div></div></div>",link:function(e,t){e.insertDate=function(){e.setMessageExpired(e.expireMessage),e.setDateFinal(e.setDate),e.start()},e.$watch("setDate",function(){e.insertDate()},!0);var n=new Date,a=1e3,i=60*a,r=60*i,o=24*r,s={second:a,minute:i,hour:r,day:o,interval:null,messageFinal:"expired!",format:"Y-m-d H:i:s",dateEnd:null};e.setMessageExpired=function(e){s.messageFinal=e},e.setId=function(t){s.id=t,e.viewElement.setAttribute("id",t)},e.setDateFinal=function(e){s.dateEnd=e};var d=function(e){var t=/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/,n=t.exec(e);return new Date(+n[1],+n[2]-1,+n[3],+n[4],+n[5],+n[6])};e.remaining=function(){var a=new Date;n=d(s.dateEnd);var i=n-a;if(0>i)return clearInterval(s.interval),void(t[0].innerHTML=s.messageFinal);var r=Math.floor(i/s.day),o=Math.floor(i%s.day/s.hour),l=Math.floor(i%s.hour/s.minute),u=Math.floor(i%s.minute/s.second),c=[];c[0]=(10>r?"0":"")+r,c[1]=(10>o?"0":"")+o,c[2]=(10>l?"0":"")+l,c[3]=(10>u?"0":"")+u,t[0].innerHTML=e.setFormatViewTime(c)},e.setFormatViewTime=function(t){return e.formatView.replace(/%d/gi,t[0]).replace(/%h/gi,t[1]).replace(/%i/gi,t[2]).replace(/%s/gi,t[3])},e.setFormatDate=function(e){s.format=e},e.start=function(){return n instanceof Date&&!isNaN(n.valueOf())?void(s.interval=setInterval(this.remaining,s.second)):(console.log("A data final não foi definida, adicione uma data conforme o exemplo: yyyy-mm-dd hh:mm:ss!"),!1)}}}});

Basta definir uma data futura no “set-date”, que ele irá contar a partir do relógio do servidor até chegar ao final, em “format-view”, %d será a entrada dos dias que faltam, %h são as horas, %i os minutos, e %s os segundos, e “expire-message”, e a mensagem final quando expirar o tempo do cronômetro.

Esta é tag da diretiva para inserir uma instância na sua HTML do seu cronômetro:

<i-countdown set-date="2015-08-21 10:10:10" format-view="%d dias %h hrs %i min %s seg" expire-message="Acabou o tempo"></i-countdown>

Classe simples de conexão em PDO utilizando Orientação a Objeto

Para conectar no banco, crie este arquivo:

ConexaoDatabase.php


<?php

class ConexaoDatabase {

 private static $servidor = 'localhost'; // Servidor, no caso poderia ser também localhost
 private static $usuario = 'root'; // usuário do banco de dados
 private static $senha = ''; // senha do banco de dados
 private static $banco = 'noticias'; // nome do banco de dados
 private static $instance = null;
 public static function getConnection() {
 if (!self::$instance instanceof PDO) {
 try {
self::$instance = new PDO('mysql:host=' . self::$servidor . ';dbname=' . self::$banco, self::$usuario, self::$senha, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
 } catch (PDOException $exc) {
 echo "Erro ao conectar :: {$exc->getMessage()}";
 }
 }
 return self::$instance;
 }
 public function fetchAll($query) {
 $con = self::getConnection();

$stmt = $con->prepare($query);

$this->execute($stmt);

if ($stmt->rowCount()) {
 return $stmt->fetchAll(PDO::FETCH_OBJ);
 } else {
 return false;
 }
 }

public function fetch($query) {
 $con = self::getConnection();

$stmt = $con->prepare($query);

$this->execute($stmt);

if ($stmt->rowCount()) {
 return $stmt->fetch(PDO::FETCH_OBJ);
 } else {
 return false;
 }
 }

public function execute(PDOStatement $stmt, array $data = null) {
 try {
 if (isset($data)) {
 $stmt->execute($data);
 } else {
 $stmt->execute();
 }
 } catch (PDOException $exc) {
    echo $exc->getTraceAsString();
    var_dump($exc->getMessage());
 }
 }
 /** UPDATE OR INSERT DATA

 **/
 public function save($sql, array $data) {

 $con = self::getConnection();

 $stmt = $con->prepare($sql);

 $this->execute($stmt, $data);

if($stmt->rowCount()) {
 return true;
 }else{
 return false;
 }
 }

}

?>

Agora vamos criar uma tabela simples de notícias, para isso execute a seguinte query no seu mysql:

/** cria o banco **/
CREATE DATABASE noticias;
/** cria a tabela **/
CREATE TABLE `tab_noticias` (
`id_noticia` int(11) NOT NULL AUTO_INCREMENT,
`permissao` tinyint(2) NOT NULL,
`titulo` varchar(300) DEFAULT NULL,
`texto` longtext,
`data_publicacao` datetime DEFAULT NULL,
PRIMARY KEY (`id_noticia`))
ENGINE=InnoDB DEFAULT CHARSET=utf8;

/** inserindo dados na tabela **/

INSERT INTO `tab_noticias` VALUES(null,1,'Notícia exemplo 1','<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam sapien nisl, elementum rutrum ex sit amet, facilisis luctus felis. Proin lobortis odio non facilisis blandit. Vivamus mollis facilisis quam sed eleifend. Sed quis nunc elit. Ut accumsan sit amet lorem nec gravida. Sed non cursus dui. Sed feugiat ultricies luctus. Quisque vitae mi cursus, convallis orci quis, aliquam purus. Nullam non massa id ex pretium dapibus non vitae erat. Sed aliquam ex dignissim, aliquet leo quis, tincidunt libero. In ac euismod massa. Nam quis sem eget libero interdum ultricies at a lacus.</p><p>Proin est tortor, feugiat at magna ac, tempus faucibus nunc. Aliquam quis orci a metus ultricies fringilla id vitae nunc. Curabitur nunc urna, suscipit et odio a, rhoncus rutrum nibh. Vestibulum ipsum erat, tempus nec semper non, feugiat eget sem. Ut vestibulum libero ipsum, a accumsan leo tristique et. Vestibulum nulla nisi, tincidunt vitae nisl sed, vulputate molestie urna. Pellentesque facilisis risus at pharetra elementum. Nullam elementum erat nulla, id commodo nisi euismod sed. Aenean quis ipsum vestibulum, vestibulum lectus eu, sagittis sapien. Vestibulum vel semper enim, nec malesuada lectus. Fusce feugiat nisl ac lacus convallis commodo. Donec sit amet turpis turpis. Ut rhoncus elit leo, in pharetra est molestie non. Donec semper, felis vitae luctus pretium, lectus erat venenatis elit, eget condimentum est mauris eu quam. Vivamus sit amet odio ut dui vulputate euismod in vel sapien.</p><p>Sed mattis lacus lacus, sed egestas ex condimentum eu. Aliquam id mollis magna. Duis accumsan ligula in enim semper suscipit. Vestibulum at mauris eu orci ultrices porttitor id quis nunc. Etiam id nisl porta, suscipit diam sed, rutrum augue. Nunc consectetur augue quis arcu euismod volutpat. Nulla convallis mi dui, in sollicitudin augue tincidunt id. Nulla erat justo, congue sit amet lectus eget, blandit elementum mauris. Nullam euismod non metus non consequat. Aenean non purus mollis, molestie felis id, ullamcorper arcu. Donec mattis diam sit amet tincidunt aliquet.</p>',now());

INSERT INTO `tab_noticias` VALUES(null,1,'Notícia exemplo 2','<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam sapien nisl, elementum rutrum ex sit amet, facilisis luctus felis. Proin lobortis odio non facilisis blandit. Vivamus mollis facilisis quam sed eleifend. Sed quis nunc elit. Ut accumsan sit amet lorem nec gravida. Sed non cursus dui. Sed feugiat ultricies luctus. Quisque vitae mi cursus, convallis orci quis, aliquam purus. Nullam non massa id ex pretium dapibus non vitae erat. Sed aliquam ex dignissim, aliquet leo quis, tincidunt libero. In ac euismod massa. Nam quis sem eget libero interdum ultricies at a lacus.</p><p>Proin est tortor, feugiat at magna ac, tempus faucibus nunc. Aliquam quis orci a metus ultricies fringilla id vitae nunc. Curabitur nunc urna, suscipit et odio a, rhoncus rutrum nibh. Vestibulum ipsum erat, tempus nec semper non, feugiat eget sem. Ut vestibulum libero ipsum, a accumsan leo tristique et. Vestibulum nulla nisi, tincidunt vitae nisl sed, vulputate molestie urna. Pellentesque facilisis risus at pharetra elementum. Nullam elementum erat nulla, id commodo nisi euismod sed. Aenean quis ipsum vestibulum, vestibulum lectus eu, sagittis sapien. Vestibulum vel semper enim, nec malesuada lectus. Fusce feugiat nisl ac lacus convallis commodo. Donec sit amet turpis turpis. Ut rhoncus elit leo, in pharetra est molestie non. Donec semper, felis vitae luctus pretium, lectus erat venenatis elit, eget condimentum est mauris eu quam. Vivamus sit amet odio ut dui vulputate euismod in vel sapien.</p><p>Sed mattis lacus lacus, sed egestas ex condimentum eu. Aliquam id mollis magna. Duis accumsan ligula in enim semper suscipit. Vestibulum at mauris eu orci ultrices porttitor id quis nunc. Etiam id nisl porta, suscipit diam sed, rutrum augue. Nunc consectetur augue quis arcu euismod volutpat. Nulla convallis mi dui, in sollicitudin augue tincidunt id. Nulla erat justo, congue sit amet lectus eget, blandit elementum mauris. Nullam euismod non metus non consequat. Aenean non purus mollis, molestie felis id, ullamcorper arcu. Donec mattis diam sit amet tincidunt aliquet.</p>',now());
INSERT INTO `tab_noticias` VALUES(null,1,'Notícia exemplo 3','<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam sapien nisl, elementum rutrum ex sit amet, facilisis luctus felis. Proin lobortis odio non facilisis blandit. Vivamus mollis facilisis quam sed eleifend. Sed quis nunc elit. Ut accumsan sit amet lorem nec gravida. Sed non cursus dui. Sed feugiat ultricies luctus. Quisque vitae mi cursus, convallis orci quis, aliquam purus. Nullam non massa id ex pretium dapibus non vitae erat. Sed aliquam ex dignissim, aliquet leo quis, tincidunt libero. In ac euismod massa. Nam quis sem eget libero interdum ultricies at a lacus.</p><p>Proin est tortor, feugiat at magna ac, tempus faucibus nunc. Aliquam quis orci a metus ultricies fringilla id vitae nunc. Curabitur nunc urna, suscipit et odio a, rhoncus rutrum nibh. Vestibulum ipsum erat, tempus nec semper non, feugiat eget sem. Ut vestibulum libero ipsum, a accumsan leo tristique et. Vestibulum nulla nisi, tincidunt vitae nisl sed, vulputate molestie urna. Pellentesque facilisis risus at pharetra elementum. Nullam elementum erat nulla, id commodo nisi euismod sed. Aenean quis ipsum vestibulum, vestibulum lectus eu, sagittis sapien. Vestibulum vel semper enim, nec malesuada lectus. Fusce feugiat nisl ac lacus convallis commodo. Donec sit amet turpis turpis. Ut rhoncus elit leo, in pharetra est molestie non. Donec semper, felis vitae luctus pretium, lectus erat venenatis elit, eget condimentum est mauris eu quam. Vivamus sit amet odio ut dui vulputate euismod in vel sapien.</p><p>Sed mattis lacus lacus, sed egestas ex condimentum eu. Aliquam id mollis magna. Duis accumsan ligula in enim semper suscipit. Vestibulum at mauris eu orci ultrices porttitor id quis nunc. Etiam id nisl porta, suscipit diam sed, rutrum augue. Nunc consectetur augue quis arcu euismod volutpat. Nulla convallis mi dui, in sollicitudin augue tincidunt id. Nulla erat justo, congue sit amet lectus eget, blandit elementum mauris. Nullam euismod non metus non consequat. Aenean non purus mollis, molestie felis id, ullamcorper arcu. Donec mattis diam sit amet tincidunt aliquet.</p>',now());

Após criar a tabela e inserir os dados, vamos fazer a consulta, para isso iremos criar outro arquivo chamado:

noticias.php

<?php
require_once('ConexaoDatabase.php');

class Noticias {

private $conexao;

public function listarNoticias() {
$sql = "SELECT id_noticia, titulo, texto, DATE_FORMAT(data_publicacao,'%d/%m/%Y') as  data_publicacao FROM tab_noticias WHERE permissao=1 ORDER BY data_publicacao DESC, id_noticia DESC";
$this->conexao = new ConexaoDatabase();
$noticias = $this->conexao->fetchAll($sql);
return  $noticias;

}

public function abrirNoticia($id = 0) {
$sql = "SELECT id_noticia, titulo, texto, DATE_FORMAT(data_publicacao,'%d/%m/%Y') as  data_publicacao FROM tab_noticias WHERE permissao=1 AND id_noticia=$id ORDER BY data_publicacao DESC, id_noticia DESC";
$this->conexao = new ConexaoDatabase();
$noticia = $this->conexao->fetch($sql);
return  $noticia;

}
}

$objNoticias = new Noticias();

$collectionNoticias = $objNoticias->listarNoticias();

if (!isset($_GET['id'])) {
if( !empty($collectionNoticias )) {
foreach($collectionNoticias  as $noticia) {
echo "<a href=\"?id=".$noticia->id_noticia."\">".$noticia->titulo."</a><br>";
}
}
} else {

$id = $_GET['id'];
$aNoticia = $objNoticias->abrirNoticia($id);

echo "<h1>".$aNoticia->titulo."</h1>";
echo "<small>".$aNoticia->data_publicacao."</small>";
echo "<div class=\"texto\">".$aNoticia->texto."</div>";
echo "<div class=\"back\" style=\"display:block;\">".
     "<a href=\"javascript:void(0);\" onclick=\"history.back(1);\"><< VOLTAR</a></div>";

}
?>

Switch to our mobile site