PagSeguro
Canais iMasters

Dreamweaver

Sistema de publicação de fotos com comentários (configurando os Recordsets para exibição das fotos)

Olá pessoal! Depois de toda euforia carnavalesca, estamos de volta com esta série de artigos. E neste de hoje desenvolveremos a página principal do sistema (index.php), ou seja, a página visível aos visitantes do nosso sistema de publicação de fotos com comentários.

Nesta página os usuários verão a última foto postada, uma relação das postagem anteriores, e os comentários referente à última foto. Devido à quantidade de tarefas a ser realizada, iremos somente configurar os Recordsets que serão utilizados.

Para quem curtiu bastante o carnaval e não acompanhou a série por completo, segue a relação dos artigos referente a ela:

Relação dos artigos desta série:

  1. Sistema de publicação de fotos com comentários (sugestões)
  2. Sistema de publicação de fotos com comentários (planejamento)
  3. Sistema de publicação de fotos com comentários (postar fotos)
  4. Sistema de publicação de fotos com comentários (alterar dados e foto)
  5. Sistema de publicação de fotos com comentários (excluir dados e foto)

Para esta página necessitaramos de quatro Recordsets, e eles terão as seguintes funcionalidades:

  1. Listar a última foto;
  2. Listar a foto que o usuário escolheu na relação das últimas fotos;
  3. Relação das últimas fotos;
  4. Comentários referente a foto em questão (exibição).

No painel Application e na opção: Bindings (Ctrl + F10), temos a opção Recordset (Query), opção essa que nos possibilita a criação dos Recordsets. Veja uma imagem com sua localização:

Agora veja o Recordset que listará a última foto na imagem abaixo:

Explicando:

Name: o nome do nosso recordset (rsUltimaFoto). Dica: utilize o prefixo: rs. Para uma melhor identificação de tudo que se trata do recordset.

Connection: escolha a conexão que criamos (connSisFotos).

Table: tabela (fotos) onde se localiza os dados.

Columns: resgataremos todas as colunas da tabela.

Sort: ordenaremos o campo foto_id de forma Desceding, o que significa dizer, que a foto com o id maior será exibido, ou seja, a última foto postada.

Teremos dois Recordsets com o mesmo nome: rsUltimaFoto, uma para exibir a última foto postada no sistema, isto quando entrarmos na página; outro para exibir a foto que o usuário escolheu na relação das últimas fotos, então, quando isto ocorrer teremos uma variável na URL desta forma: index.php?foto_id=1, com isto, verificamos em nosso código PHP se essa variável (foto_id) exisite, caso sim, trabalharemos com o Recordset que utiliza a opção de filtragem.

Vamos realizar esta operação, passo a passo, primeiro, copie e cole o Recordset para duplicá-lo. Veja:

Agora trabalharemos com a condição if, afim de ocultar um Recordset quando necessário e exibir o outro; filtrar pelo id presente na variável foto_id que será exibida na URL, o Recordset que exibirá a foto requisitada pelo usuário. Observe novamente:

Explicando:

1º - Criamos a condição if e utilizamos a função isset em conjunto. Com isto, trabalharemos com este Recordset somente quando existir a variável foto_id na URL;

2º - Criamos a variável: $fotoRequisitada que receberá o valor presente na variável foto_id;

3º - Filtramos nosso Recordset pelo campo: foto_id, sendo que este precisará ter o valor semelhante ao presente na variável: $fotoRequisitada;

4º - Quando não existir a variável foto_id na URL, será utilizado o segundo Recordset;

5º - Fechamos a } (chave) utilizada pela condição if.

Agora vejamos o Recordset que exibirá a relação das últimas fotos:

Explicando:

Name: o nome do nosso recordset (rsUltimasFoto). Dica: utilize o prefixo: rs. Para uma melhor identificação de tudo que se trata do recordset.

Connection: escolha a conexão que criamos (connSisFotos).

Table: tabela (fotos) onde se localiza os dados.

Columns: resgataremos todas as colunas da tabela.

Sort:. ordenaremos o campo foto_id de forma Desceding, o que significa dizer, que somente as últimas fotos serão exibidas.

Precisaremos realizar algumas modificações nesse Recordset para atingirmos os seguintes objetivos: não exibir a última foto postada na relação, visto que ela já será exibida como a principal; limitar a quantidade de fotos que será exibida na relação. Então, vejamos:

Para atingirmos tais objetivos, utilizamos apenas o LIMIT 1,5, ou seja, pular a primeira foto (1,) e exibir no máximo 5 (1,5).

Criaremos agora o Recordset para exibirmos os comentários referente a foto que estamos exibindo, veja:

Explicando:

Name: o nome do nosso recordset (rsComentarios). Dica: utilize o prefixo: rs. Para uma melhor identificação de tudo que se trata do recordset.

Connection: escolha a conexão que criamos (connSisFotos).

Table: tabela (fotos_comentarios) onde se localiza os comentarios referente as fotos.

Columns: resgataremos todas as colunas da tabela.

Filter: Para termos os comentários específicos da foto em questão, precisamos filtrar nosso Recordset, então, vamos filtrá-lo pela coluna: com_id_foto, pois nela está armazenado a identificação única de cada foto; dizemos que a coluna (com_id_foto) precisa ser igual (=) ao valor presente na variável $fotoRequisitada. O que significa dizer, que os comentários que serão exibidos precisarão ter um valor no campo com_id_foto idêntico ao localizado na variável: $fotoRequisitada.

Bom, você deve estar se perguntado: a variável $fotoRequisitada existe apenas no Recordset que será utilizado quando tivermos a variável foto_id na URL, certo? Sim, perfeita observação. Então, precisamos criar essa mesma variável, para quando o referido Recordset não estiver em uso, termos a variável, afinal o Recordset que exibe os comentários necessita de sua existência. Veja a alteração realizada:

Ufa, quanto Recordset, mas finalizamos a configuração de todos eles. Veja a página index.php até este momento.

Um abraço a todos e até o próximo.


Comente também

10 Comentários

Renan Barbalho
Renan Barbalho

Ainda nao resolveram o meu problema passado mais fmz agora esta tendo esse problema aqui da uma força galera: Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in c:\arquivos de programas\apache group\apache\htdocs\foto\tmpwx5jmw3gng.php on line 50


fico no aguardo

Wagner Vieira
Wagner Vieira

Aparece o seguinte erro:

Fatal error: Call to undefined function imagecreatetruecolor() in C:\wamp\www\imasters_sistema_fotos\admin\insere_foto.php on line 60

e a linha 60 é esta:

$image_p = imagecreatetruecolor($tamanho_x, $tamanho_y);

estou postando uma imagem jpeg

parabéns pela matéria

elvissonm
elvissonm

Warning: imagejpeg(): Unable to open '../fotos/anivers1.jpg' for writing in c:\apache\htdocs\sistema_fotos\insere_foto2.php on line 63

Warning: Cannot modify header information - headers already sent by (output started at c:\apache\htdocs\sistema_fotos\insere_foto2.php:63) in c:\apache\htdocs\sistema_fotos\insere_foto2.php on line 77

Fernando Pimentel
Fernando Pimentel

Caro Leandro parabens pelo tutorial e pelo cd estou com um erro semelhante ao do amigo acima Warning: imagejpeg(): Unable to open '../fotos/earthhands.jpg' for writing in /var/www/williamcursospetshop.com.br/fotosimasters/insere_foto.php on line 63

Warning: Cannot modify header information - headers already sent by (output started at /var/www/williamcursospetshop.com.br/fotosimasters/insere_foto.php:2) in /var/www/williamcursospetshop.com.br/fotosimasters/insere_foto.php on line 77
aguardo resposta

Fernando Pimentel
Fernando Pimentel

Caro Leandro parabens pelo tutorial e pelo cd estou com um erro semelhante ao do amigo acima Warning: imagejpeg(): Unable to open '../fotos/earthhands.jpg' for writing in /var/www/williamcursospetshop.com.br/fotosimasters/insere_foto.php on line 63

Warning: Cannot modify header information - headers already sent by (output started at /var/www/williamcursospetshop.com.br/fotosimasters/insere_foto.php:2) in /var/www/williamcursospetshop.com.br/fotosimasters/insere_foto.php on line 77
aguardo resposta

juan hafliger
juan hafliger

Parabéns Leandro... estou fazendo a serie de tutoriais e em menos de 2 horas já cheguei até aqui, fazendo mesmo sem o famoso Ctrl c...rs
O que eu quero dizer com isto é que a metodologia de ensino é muito boa.
Parabéns mais uma vez!

juan hafliger
juan hafliger

Parabéns Leandro... estou fazendo a serie de tutoriais e em menos de 2 horas já cheguei até aqui, fazendo mesmo sem o famoso Ctrl c...rs
O que eu quero dizer com isto é que a metodologia de ensino é muito boa.
Parabéns mais uma vez!

juan hafliger
juan hafliger

Parabéns Leandro... estou fazendo a serie de tutoriais e em menos de 2 horas já cheguei até aqui, fazendo mesmo sem o famoso Ctrl c...rs
O que eu quero dizer com isto é que a metodologia de ensino é muito boa.
Parabéns mais uma vez!

Rogério  Corrêa dos Santos
Rogério Corrêa dos Santos

Olá, utilizei parte do seu sistema para criar um outro,acrescentei o código--- if($original_x > $original_y) { geraImg($fotoTmp, 640, 480, "../fotos/".$foto); } else { geraImg($fotoTmp, 480, 640, "../fotos/".$foto); }--- para ele gerar nos dois formatos. Agora quero exibir no formato salvo.Tipo se a foto for 640x480 a imagem exibida deve ser no mesmo tamanho e vice-verça. Como faço para que a foto exibida se ajuste ao tamanho real da foto que foi gerada?Se puder me ajudar agradeço.

Mariana Vidal
Mariana Vidal

Estou com um erro nessa linha -
if (isset($_GET["foto_id"])) {
$fotoRequisitada = $_GET["foto_id"];-
Parse error: syntax error, unexpected T_VARIABLE in
Já tentei de várias formas modificar, mas não saio da estaca zero, gostaria de saber se alguém tem como me dar uma ajudinha, rs...
Agradeço muitoooo se alguém me der uma luz
Att
Mariana (marianakv@gmail.com)

Qual a sua opinião?

Comentários considerados ofensivos serão moderados.

Parceiros

IBM
PagSeguro
Internet Innovation
Dialhost
HostNet
Tecla
KingHost
DotStore
Dinamize