Hoje vamos fazer a terceira e última parte do nosso sistema de destaques.
Antes de mais nada, queria pedir desculpas pela demora… Minha vida está um pouco atrapalhada agora que estou começando a escrever artigos pra revistas (ha!)… Mas ontem decidi que iria dedicar no mínimo uma hora por dia para o blog, e lá vamos nós! ![]()
Nessa parte do tutorial nós iremos criar um arquivo PHP que irá fazer a conexão com o banco de dados (MySQL) e fazer a consulta que trará os dados de cada um dos destaques para “alimentarmos” nosso HTML.
Para o nosso banco de dados iremos utilizar a seguinte tabela:
1 | CREATE TABLE IF NOT EXISTS `destaques` ( |
2 | `id` INT UNSIGNED NOT NULL AUTO_INCREMENT , |
3 | `titulo` VARCHAR(100) NOT NULL , |
4 | `link` VARCHAR(150) NOT NULL , |
5 | `imagem` VARCHAR(150) NOT NULL , |
6 | `ativo` TINYINT(1) NOT NULL DEFAULT 1 , |
7 | PRIMARY KEY (`id`) ) |
8 | ENGINE = MyISAM; |
0. Transparência
Antes da gente começar a codificar a parte três… Vamos colocar uma coisinha no CSS que faltou na Parte 2: a transparência do fundo preto da legenda… Edite o CSS dos destaques e coloque isso:
1 | #blocoDestaques ul li div.fundo { |
2 | opacity: 0.80; |
3 | -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; |
4 | filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); |
5 | } |
Isso fará com que a div de fundo fique com 80% de opacidade.
1. Configurações
Vamos começar com um arquivo chamado mysql_destaques.php e nele colocar um bloco PHP vazio:
1 | <?php |
2 |
3 | ?> |
Agora nós iremos definir algumas variáveis de configuração:
03 | /* |
04 | * Configurações do sistema de destaques |
05 | */ |
06 | $destaques = array( |
07 | // Dados de conexão ao MySQL |
08 | 'mysql' => array( |
09 | 'servidor' => 'localhost', |
10 | 'usuario' => 'root', |
11 | 'senha' => '12345', |
12 | 'banco' => 'meu_site'), |
13 |
14 | // Nome da tabela com os destaques |
15 | 'tabela' => 'destaques', |
16 |
17 | // Limite máximo de destaques que serão exibidos |
18 | 'limite' => 5 |
19 | ); |
2. Conexão com o MySQL
Se o seu site já se conecta ao banco de dados MySQL automaticamente, você pode apagar a parte da conexão ao MySQL e pular para o item três…
Fazemos a conexão com o banco de dados:
21 | /** |
22 | * Conexão com o MySQL |
23 | * |
24 | * Atenção: Comente as próximas linhas se o seu site já se |
25 | * conectar com o MySQL fora desse script |
26 | */ |
27 | mysql_connect($destaques['mysql']['servidor'], $destaques['mysql']['usuario'], $destaques['mysql']['senha']) OR trigger_error('ERRO: ' . mysql_error()); |
28 | mysql_select_db($destaques['mysql']['banco']) OR trigger_error('ERRO: ' . mysql_error()); |
3. Buscando os dados
Agora vai começar a brincadeira… Vamos criar e executar uma consulta para trazer três colunas da tabela `destaques`:
30 | /* |
31 | * Busca os dados na tabela de destaques |
32 | */ |
33 | $sql = "SELECT `titulo`, `link`, `imagem` |
34 | FROM `{$destaques['tabela']}` |
35 | WHERE `ativo` = 1 |
36 | ORDER BY `id` DESC |
37 | LIMIT {$destaques['limite']}"; |
38 | $query = mysql_query($sql) OR trigger_error('ERRO: ' . mysql_error()); |
Nós já executamos a consulta e já temos o Resource MySQL (ou resultado)… Precisamos apenas rodar um loop e passar esses dados para um array que será usado mais a diante para montar o nosso HTML.
40 | /** |
41 | * Loop que traz os dados do MySQL e armazena-os em um array $lista_destaques |
42 | */ |
43 | $lista_destaques = array(); |
44 | while ($registro = mysql_fetch_object($query)) { |
45 | $lista_destaques[] = $registro; |
46 | } |
Pronto… Nosso arquivo está pronto! Veja aqui como ele ficou.
Agora vamos voltar ao HTML do nosso sistema de destaques que até hoje está assim:
01 | <!-- destaques --> |
02 | <div id="blocoDestaques"> |
03 |
04 | <a class="faixa" href="#" title=""><!-- --></a> |
05 |
06 | <ul> |
07 | <li> |
08 | <a href="#" title="Destaque 1"> |
09 | <img src="img/destaque1.jpg" alt="Destaque 1" /> |
10 | </a> |
11 | <div class="fundo"><!-- --></div> |
12 | <p><a href="#" title="Destaque 1">Destaque 1 - Muita coisa boa!</a></p> |
13 | </li> |
14 |
15 | <li> |
16 | <a href="#" title="Destaque 2"> |
17 | <img src="img/destaque2.jpg" alt="Destaque 2" /> |
18 | </a> |
19 | <div class="fundo"><!-- --></div> |
20 | <p><a href="#" title="Destaque 2">Destaque 2 - Nem tão bom assim...</a></p> |
21 | </li> |
22 |
23 | <li> |
24 | <a href="#" title="Destaque 3"> |
25 | <img src="img/destaque3.jpg" alt="Destaque 3" /> |
26 | </a> |
27 | <div class="fundo"><!-- --></div> |
28 | <p><a href="#" title="Destaque 3">Destaque 3 - Agora sim... bem melhor!</a></p> |
29 | </li> |
30 | </ul> |
31 | </div> |
32 | <!-- /destaques --> |
Vamos fazer algumas modificações no nosso HTML… Vamos começar incluindo o arquivo PHP que acabamos de criar logo antes da div#blocoDestaques e remover os LIs deixando apenas um:
01 | <!-- destaques --> |
02 | <?php require_once('mysql_destaques.php'); ?> |
03 | <div id="blocoDestaques"> |
04 |
05 | <a class="faixa" href="#" title=""><!-- --></a> |
06 |
07 | <ul> |
08 | <li> |
09 | <a href="#" title="Destaque 1"> |
10 | <img src="img/destaque1.jpg" alt="Destaque 1" /> |
11 | </a> |
12 | <div class="fundo"><!-- --></div> |
13 | <p><a href="#" title="Destaque 1">Destaque 1 - Muita coisa boa!</a></p> |
14 | </li> |
15 | </ul> |
16 | </div> |
17 | <!-- /destaques --> |
Agora é só criar um loop utilizando o foreach() para gerar um LI para cada destaque que foi encontrado no banco de dados… Vamos também substituir os valores “enchedores de linguiça” por valores dinâmicos:
01 | <!-- destaques --> |
02 | <?php require_once('mysql_destaques.php'); ?> |
03 | <div id="blocoDestaques"> |
04 |
05 | <a class="faixa" href="#" title=""><!-- --></a> |
06 |
07 | <ul> |
08 | <?php foreach ($lista_destaques AS $destaque) { ?> |
09 | <li> |
10 | <a href="<?php echo $destaque->link; ?>" title="<?php echo $destaque->titulo; ?>"> |
11 | <img src="<?php echo $destaque->imagem; ?>" alt="<?php echo $destaque->titulo; ?>" /> |
12 | </a> |
13 | <div class="fundo"><!-- --></div> |
14 | <p><a href="<?php echo $destaque->link; ?>" title="<?php echo $destaque->titulo; ?>"><?php echo $destaque->titulo; ?></a></p> |
15 | </li> |
16 | <?php } ?> |
17 | </ul> |
18 | </div> |
19 | <!-- /destaques --> |
Podemos ainda adicionar uma condição ao redor da div#blocoDestaques para ter certeza que nosso script irá funcionar e não vai deixar nenhum buraco no site:
01 | <!-- destaques --> |
02 | <?php require_once('mysql_destaques.php'); ?> |
03 | <?php if (isset($lista_destaques) AND !empty($lista_destaques)) { ?> |
04 | <div id="blocoDestaques"> |
05 |
06 | <a class="faixa" href="#" title=""><!-- --></a> |
07 |
08 | <ul> |
09 | <?php foreach ($lista_destaques AS $destaque) { ?> |
10 | <li> |
11 | <a href="<?php echo $destaque->link; ?>" title="<?php echo $destaque->titulo; ?>"> |
12 | <img src="<?php echo $destaque->imagem; ?>" alt="<?php echo $destaque->titulo; ?>" /> |
13 | </a> |
14 | <div class="fundo"><!-- --></div> |
15 | <p><a href="<?php echo $destaque->link; ?>" title="<?php echo $destaque->titulo; ?>"><?php echo $destaque->titulo; ?></a></p> |
16 | </li> |
17 | <?php } ?> |
18 | </ul> |
19 | </div> |
20 | <?php } ?> |
21 | <!-- /destaques --> |
Com essa condição, se por algum acaso do destino o array $lista_destaques não existir ou for vazio (nenhum destaque encontrado), nós não exibimos nenhum HTML do bloco de destaques, deixando assim o site com um elemento a menos, mas funcionando.
E o nosso sistema de destaques está pronto!
Espero que tenham gostado!
Fonte: http://blog.thiagobelem.net/criando-um-sistema-de-destaques-parte-3/
