Criando uma Galeria de fotos via PHP e SQL

5 respostas
S

Olá pessoal…

vou postar uma programação que estou precisando de ajuda.

Estou criando uma galeria de fotos para um amigo, peguei o site já programado, sem documentação e uma programação de qualidade ruim… basicamente as variáveis e a estrutura não possuem comentários ou não levam a nada, pensei em desistir mas acho que devo aprender com este sistema pois vai que um dia pego outro desse jeito né!!!

Bom a programação é feita por constutores, o index puxa o css e o javascript básico e seleciona o conteúdo conforme os clique nos links.
como TUDO é baseado no BD (confuso pra caramba pois a programação aponta para um e pega outro pois tem em algum lugar a indicação e etc… me cheira "remendo").

criei duas tabelas "listaGaleria" e "galeria"
listaGaleria vai ficar a "lista das galerias" claro
galeria vai ficar as imagens da galeria e as outras posteriormente, por hora vamos só a galeria.

Campos listaGaleria
id_galeria[int key AI] / nome [varchar] / qtd_img [int] / publicado [boolean] / endereco [varchar]

Campos galeria
id_img[int key AI] / id_galeria[int key] / foto [varchar] / credito [varchar null] / legenda [varchar null] / dt_foto [datatime null]

Para criar a galeria é preciso programar os seguintes fatores
[list]usar links para chamar as fotos ($_GET[])[/list]
[list]Criar links pela lista de galerias (mostrar array dos nomes da galeria e acrescentar o id_galeria no link)[/list]
[list]Criar links de preview em lista horizontal (das fotos) para o usuário clicar e a imagem passar a área da foto[/list]

ai vai a codificação que estou usando vou tratar de cada item para passar ao próximo
busca da lista de galeria

<?php

include 'connectionBD.php';  //conexão com o banco de dados

$queryLista = 'SELECT * FROM listaGaleria WHERE publicado="s" ORDER BY id';  //busca quais galerias estão disponíveis em publicado
$resultLista = mysql_query($queryLista) or die(mysql_error());  // resultado
$listaGaleria = mysql_fetch_array($resultLista);  // criação do array com a lista

?>

<div id="">
  <ul>
    &lt;?php for($i=0; $i &lt; $resultLista; $i++) { ?&gt;
              <li><a link>&lt;?php echo $listaGaleria[0]; ?&gt;&gt; &lt;?php echo $listaGaleria[1]; ?&gt; </a></li>
    &lt;?php } ?&gt;
  </ul>
&lt;/div&gt;

o problema é que não imprime todos os resultados apenas a primeira linha

5 Respostas

W

Opa, beleza cara ?

o erro basico ta aqui aparentemente:

<?php for($i=0; $i < sizeof($resultLista); $i++) { ?>  
               <li><a link><?php echo $listaGaleria[$i]; ?>> <?php echo $listaGaleria[$i]; ?> </a></li>  
<?php } ?>

sizeof() ou count(): pega tamanho do array, eu particularmente sempre uso sizeof porque é mais fácil de ler. Se possivel, faça isso OOP/DAO que você vai ter muito menos dor de cabeça

outra detalhe importante, quando você faz um mysql_fetch_array, você ta mandando ele montar o resultSet em forma de array, portando, para recuperar valores, você tera que usar:

$nomeDoSeuResultSet[$numeroDaLinha]['nomeDoCampoDaTabela']

portanto, arrume seu codigo ali em cima tb … e toma cuidado com sql inject, que é a coisa fácil de se fazer no php por quase não ter segurança alguma :stuck_out_tongue:

impressões diretas de variaveis você pode fazer:

<?=$minhaVariavel?>
J

Solonbra, a função mysql_fetch_array, retorna apenas uma linha da query que você fez, colocando as colunas da linha num array.
Para pegar todas as linhas, o correto seria você fazer assim:

&lt;?php

include 'connectionBD.php';  //conexão com o banco de dados

$queryLista = 'SELECT * FROM listaGaleria WHERE publicado="s" ORDER BY id';  //busca quais galerias estão disponíveis em publicado
$resultLista = mysql_query($queryLista) or die(mysql_error());  // resultado

?&gt;

&lt;div id=""&gt;
  <ul>
    &lt;?php while($listaGaleria = mysql_fetch_array($resultLista)) { ?&gt;
              <li><a link>&lt;?php echo $listaGaleria[0]; ?&gt;&gt; &lt;?php echo $listaGaleria[1]; ?&gt; </a></li>
    &lt;?php } ?&gt;
  </ul>
&lt;/div&gt;

Uma breve explicação: a função mysql_fetch_array() sempre retornará a próxima linha do resultado da query, quando não tiver mais linhas ele retorna false, saindo do while.

X

bom, usa também PDO ao invés das funções nativas para bancos únicos do php, pois é fácil adaptar outros bancos de dadso

J

Cara, isso devia ser básico, graças a Deus tão prometendo retirar na versão 6 do PHP todo o suporte à essas bibliotecas para que se use só PDO.
Pior que CMS’s como Wordpress e Joomla, que são muito utilizados, ainda vão estar presos a essas implementações.

X

Cara, isso devia ser básico, graças a Deus tão prometendo retirar na versão 6 do PHP todo o suporte à essas bibliotecas para que se use só PDO.
Pior que CMS’s como Wordpress e Joomla, que são muito utilizados, ainda vão estar presos a essas implementações.

realmente, o básico mesmo, pois é muito fácil usar o PDO, e melhor, mais portável, fácil de implementar um factory nas conexões, entre outros…

Criado 5 de fevereiro de 2010
Ultima resposta 18 de fev. de 2010
Respostas 5
Participantes 4