Jump to content


Photo

Galeria De Fotos


  • Faça o login para participar
11 replies to this topic

#1 André Figueiredo

André Figueiredo

    Novato no fórum

  • Usuários
  • 7 posts
  • Sexo:Masculino
  • Localidade:Brasil
  • Interesses:PHP, Myql, Javscript, àudios

Posted 17/11/2011, 07:53

Galera estou com um problinha que talvez alguns de vocês consigam me ajudar....
Estou com esse código na página principal.php que chama a última galeria de foto cadastrada no site, mas eu queria que aparecesse as 3 últimas, mas não consigo de jeito nenhum, já tentei por LIMIT, coloquei o mesmo código em outra DIV só mudando a id...mas nada funcionou...espero que me ajudem abraços.

<?
$dados = db_dados( "SELECT *, DATE_FORMAT(data,'%d/%m/%Y') as data1 FROM tbgalerias ORDER BY data DESC");
$linha['qtfotos'] = db_linhas(db_consulta("SELECT id_foto FROM tbgalerias_fotos WHERE flag_status=1 AND id_galeria= ".(int)$dados['id_galeria']));
if ($dados['id_galeria']>0) {
?>

<div id="img_galeria"><img src="../img.php?x=100&y=100&corta=1&img=arquivos/galeria/<?=$dados['codigo'];?>/capa.jpg" /></div>

<div id="galeria_dados">
<p class="subtitulo"><a href="?p=galeria_ver&id=<?=$dados['id_galeria'];?>"><?=utf8_decode($dados['titulo']);?></a></p>
<p><?=$dados['data1'];?> - <?=$linha['qtfotos'];?> Fotos</p>
<p id="btgaleria"><a href="?p=galeria_ver&id=<?=$dados['id_galeria'];?>"><img src="../img/bt_galeria.gif" /></a></p>
</div>
<div class="limpar"></div>
<p id="veja"><a href="?p=galeria">Veja outros eventos</a></p>
<?
} else echo '<div style="padding:40px">Nenhuma galeria cadastrada.</div>';
?>


#2 Satoru

Satoru

    Novato no fórum

  • Usuários
  • 24 posts
  • Sexo:Masculino
  • Localidade:Minas Gerais
  • Interesses:PHP, Mysql, Javascript,Asp, HTLM, CSS e AS3

Posted 17/11/2011, 08:13

Da forma que você fez realmente só irá mostrar um resultado, para mostrar mais é necessário utilizar um "while" para que mostre todos resultados da consulta
Exemplo:
<?
//altere a variável $query com a consulta desejada
$query = "SELECT * DATE_FORMAT(data,'%d/%m/%Y') as data1 FROM tbgalerias ORDER BY data DESC";
$result = MYSQL_QUERY($query);

//e na hora de escrever os resultados é necessário fazer um while até os resultados acabarem
while($row = mysql_fetch_array($result)){
?>

<div id="img_galeria"><img src="../img.php?x=100&y=100&corta=1&img=arquivos/galeria/<?=$row['codigo'];?>/capa.jpg" /></div>

<div id="galeria_dados">
<p class="subtitulo"><a href="?p=galeria_ver&id=<?=$row['id_galeria'];?>"><?=utf8_decode($row['titulo']);?></a></p>

<!-- Nesta linha você teria que fazer algo parecido para as quantidade de fotos de cada galeria, deixei como estava, mas é o mesmo princípio -->
<p><?=$dados['data1'];?> - <?=$linha['qtfotos'];?> Fotos</p>

<p id="btgaleria"><a href="?p=galeria_ver&id=<?=$row['id_galeria'];?>"><img src="../img/bt_galeria.gif" /></a></p>
</div>
<div class="limpar"></div>

<?
}
?>

<p id="veja"><a href="?p=galeria">Veja outros eventos</a></p>

Qualquer dúvida estou a disposição.

#3 André Figueiredo

André Figueiredo

    Novato no fórum

  • Usuários
  • 7 posts
  • Sexo:Masculino
  • Localidade:Brasil
  • Interesses:PHP, Myql, Javscript, àudios

Posted 17/11/2011, 12:15

Amigo ainda não deu certo, engraçado que parecia se encaixar, mas dar um erro, justamente na linda do "While", eu conseguir fazer com que as notícias aparecessem com o LIMIT, olha só o codigo chmando as noticias, talvez dê uma luz. Valeu pela ajuda


<div id="noticias">
<ul>
<?
$i=0;

$SQL = "
SELECT
tb1.*,
tbnoticias_categorias.*
FROM
(SELECT * FROM tbnoticias ORDER BY data DESC) as tb1
INNER JOIN tbnoticias_categorias ON (tb1.id_categoria = tbnoticias_categorias.id_categoria)
GROUP BY
tb1.id_categoria
ORDER BY
tb1.data DESC
LIMIT 5;
";


$consulta = db_consulta($SQL);
while ($linha = db_lista($consulta)) { $i++;
?>
<li<? if ($i==1) echo ' class="destaque1"'; else if ($i==2) echo ' class="destaque2"'; else if ($i==5) echo ' style="border:0"'; ?>>
<p>
<?=$linha['categoria'];?>
</p>
<a href="?p=noticias_ver&amp;id=<?=$linha['id_noticia'];?>">
<?
if ($i>2) $tamMax = 60; else $tamMax=43;
echo substr(utf8_decode($linha['titulo']),0,$tamMax);
if (strlen($linha['titulo'])>$tamMax) echo '...';
?>
</a> </li>
<?
}
?>
</ul>
</div>




Da forma que você fez realmente só irá mostrar um resultado, para mostrar mais é necessário utilizar um "while" para que mostre todos resultados da consulta
Exemplo:

<?
//altere a variável $query com a consulta desejada
$query = "SELECT * DATE_FORMAT(data,'%d/%m/%Y') as data1 FROM tbgalerias ORDER BY data DESC";
$result = MYSQL_QUERY($query);

//e na hora de escrever os resultados é necessário fazer um while até os resultados acabarem
while($row = mysql_fetch_array($result)){
?>

<div id="img_galeria"><img src="../img.php?x=100&y=100&corta=1&img=arquivos/galeria/<?=$row['codigo'];?>/capa.jpg" /></div>

<div id="galeria_dados">
<p class="subtitulo"><a href="?p=galeria_ver&id=<?=$row['id_galeria'];?>"><?=utf8_decode($row['titulo']);?></a></p>

<!-- Nesta linha você teria que fazer algo parecido para as quantidade de fotos de cada galeria, deixei como estava, mas é o mesmo princípio -->
<p><?=$dados['data1'];?> - <?=$linha['qtfotos'];?> Fotos</p>

<p id="btgaleria"><a href="?p=galeria_ver&id=<?=$row['id_galeria'];?>"><img src="../img/bt_galeria.gif" /></a></p>
</div>
<div class="limpar"></div>

<?
}
?>

<p id="veja"><a href="?p=galeria">Veja outros eventos</a></p>

Qualquer dúvida estou a disposição.


Amigo dei uma repagina no codigo e fiz isso aqui e conseguir já com linha de pensamento da While que vc meu da luz...agora só quero mesmo colocar elas para aparecerem em coluna..tipo 3 colunas. o codigo que deu certo que refiz é esse aqui:

<?
$i=0;
$SQL = "SELECT *, DATE_FORMAT(data,'%d/%m/%Y') as data1 FROM tbgalerias WHERE flag_status=1 ".$busca." ORDER BY data DESC";
$Lista = new Consulta($SQL,3,$PGATUAL);
while ($linha = db_lista($Lista->consulta)) { $i++;
$linha['qtfotos'] = db_linhas(db_consulta("SELECT id_foto FROM tbgalerias_fotos WHERE flag_status=1 AND id_galeria=".$linha['id_galeria']));
?>


<div class="listagem_galeria">
<div class="img"><img src="../img.php?x=100&y=100&corta=1&img=arquivos/galeria/<?=$linha['codigo'];?>/capa.jpg" /></div>
<div class="galeriatitulo">
<p class="titulo"><a href="?p=galeria_ver&id=<?=$linha['id_galeria'];?>"><?=utf8_decode($linha['titulo']);?></a></p>
<p class="data"><b><?=$linha['data1'];?></b> Fotos: <?=$linha['qtfotos'];?></p>

</div>
</div>
<div class="limpar" style="height:15px"></div>

<?
}
?>





Amigo ainda não deu certo, engraçado que parecia se encaixar, mas dar um erro, justamente na linda do "While", eu conseguir fazer com que as notícias aparecessem com o LIMIT, olha só o codigo chmando as noticias, talvez dê uma luz. Valeu pela ajuda


<div id="noticias">
<ul>
<?
$i=0;

$SQL = "
SELECT
tb1.*,
tbnoticias_categorias.*
FROM
(SELECT * FROM tbnoticias ORDER BY data DESC) as tb1
INNER JOIN tbnoticias_categorias ON (tb1.id_categoria = tbnoticias_categorias.id_categoria)
GROUP BY
tb1.id_categoria
ORDER BY
tb1.data DESC
LIMIT 5;
";


$consulta = db_consulta($SQL);
while ($linha = db_lista($consulta)) { $i++;
?>
<li<? if ($i==1) echo ' class="destaque1"'; else if ($i==2) echo ' class="destaque2"'; else if ($i==5) echo ' style="border:0"'; ?>>
<p>
<?=$linha['categoria'];?>
</p>
<a href="?p=noticias_ver&amp;id=<?=$linha['id_noticia'];?>">
<?
if ($i>2) $tamMax = 60; else $tamMax=43;
echo substr(utf8_decode($linha['titulo']),0,$tamMax);
if (strlen($linha['titulo'])>$tamMax) echo '...';
?>
</a> </li>
<?
}
?>
</ul>
</div>





Da forma que você fez realmente só irá mostrar um resultado, para mostrar mais é necessário utilizar um "while" para que mostre todos resultados da consulta
Exemplo:

<?
//altere a variável $query com a consulta desejada
$query = "SELECT * DATE_FORMAT(data,'%d/%m/%Y') as data1 FROM tbgalerias ORDER BY data DESC";
$result = MYSQL_QUERY($query);

//e na hora de escrever os resultados é necessário fazer um while até os resultados acabarem
while($row = mysql_fetch_array($result)){
?>

<div id="img_galeria"><img src="../img.php?x=100&y=100&corta=1&img=arquivos/galeria/<?=$row['codigo'];?>/capa.jpg" /></div>

<div id="galeria_dados">
<p class="subtitulo"><a href="?p=galeria_ver&id=<?=$row['id_galeria'];?>"><?=utf8_decode($row['titulo']);?></a></p>

<!-- Nesta linha você teria que fazer algo parecido para as quantidade de fotos de cada galeria, deixei como estava, mas é o mesmo princípio -->
<p><?=$dados['data1'];?> - <?=$linha['qtfotos'];?> Fotos</p>

<p id="btgaleria"><a href="?p=galeria_ver&id=<?=$row['id_galeria'];?>"><img src="../img/bt_galeria.gif" /></a></p>
</div>
<div class="limpar"></div>

<?
}
?>

<p id="veja"><a href="?p=galeria">Veja outros eventos</a></p>

Qualquer dúvida estou a disposição.



#4 Satoru

Satoru

    Novato no fórum

  • Usuários
  • 24 posts
  • Sexo:Masculino
  • Localidade:Minas Gerais
  • Interesses:PHP, Mysql, Javascript,Asp, HTLM, CSS e AS3

Posted 17/11/2011, 12:28

Se eu entendi bem, você quer colocar uma div do lado da outra né?

se for isso basta acrescentar float:left na classe da div no css:
exemplo:
.listagem_galeria{
float:left;
}

Também existe a possibilidade de fazer uma tabela para isso.

#5 André Figueiredo

André Figueiredo

    Novato no fórum

  • Usuários
  • 7 posts
  • Sexo:Masculino
  • Localidade:Brasil
  • Interesses:PHP, Myql, Javscript, àudios

Posted 17/11/2011, 13:33

Engraçado que não funcionou...deveria funcionar, será que existe outra forma


Se eu entendi bem, você quer colocar uma div do lado da outra né?

se for isso basta acrescentar float:left na classe da div no css:
exemplo:

.listagem_galeria{
float:left;
}

Também existe a possibilidade de fazer uma tabela para isso.



#6 Satoru

Satoru

    Novato no fórum

  • Usuários
  • 24 posts
  • Sexo:Masculino
  • Localidade:Minas Gerais
  • Interesses:PHP, Mysql, Javascript,Asp, HTLM, CSS e AS3

Posted 17/11/2011, 13:49

Tenta tabelar então:
<table cellspacing="0" cellspacing="0">
<tr>
<?
$i=0;
$SQL = "SELECT *, DATE_FORMAT(data,'%d/%m/%Y') as data1 FROM tbgalerias WHERE flag_status=1 ".$busca." ORDER BY data DESC";
$Lista = new Consulta($SQL,3,$PGATUAL);
while ($linha = db_lista($Lista->consulta)) { $i++;
$linha['qtfotos'] = db_linhas(db_consulta("SELECT id_foto FROM tbgalerias_fotos WHERE flag_status=1 AND id_galeria=".$linha['id_galeria']));
?>
<td>

<div class="listagem_galeria">
<div class="img"><img src="../img.php?x=100&y=100&corta=1&img=arquivos/galeria/<?=$linha[' codigo'];?>/capa.jpg" /></div>
<div class="galeriatitulo">
<p class="titulo"><a href="?p=galeria_ver&id=<?=$linha['id_galeria'];?>"><?=utf8_decode($ linha['titulo']);?></a></p>
<p class="data"><b><?=$linha['data1'];?></b> Fotos: <?=$linha['qtfotos'];?></p>

</div>
</div>
<div class="limpar" style="height:15px"></div>
</td>
<?
}
?> 
</tr>
</table>


#7 André Figueiredo

André Figueiredo

    Novato no fórum

  • Usuários
  • 7 posts
  • Sexo:Masculino
  • Localidade:Brasil
  • Interesses:PHP, Myql, Javscript, àudios

Posted 17/11/2011, 14:32

trem doido, nunca vi isso em toda minha vida...aiaiai não deu certo com tabela tbm...

to mandando o arquivo em anexo pra vc dar uma olhada

Tenta tabelar então:

<table cellspacing="0" cellspacing="0">
<tr>
<?
$i=0;
$SQL = "SELECT *, DATE_FORMAT(data,'%d/%m/%Y') as data1 FROM tbgalerias WHERE flag_status=1 ".$busca." ORDER BY data DESC";
$Lista = new Consulta($SQL,3,$PGATUAL);
while ($linha = db_lista($Lista->consulta)) { $i++;
$linha['qtfotos'] = db_linhas(db_consulta("SELECT id_foto FROM tbgalerias_fotos WHERE flag_status=1 AND id_galeria=".$linha['id_galeria']));
?>
<td>

<div class="listagem_galeria">
<div class="img"><img src="../img.php?x=100&y=100&corta=1&img=arquivos/galeria/<?=$linha[' codigo'];?>/capa.jpg" /></div>
<div class="galeriatitulo">
<p class="titulo"><a href="?p=galeria_ver&id=<?=$linha['id_galeria'];?>"><?=utf8_decode($ linha['titulo']);?></a></p>
<p class="data"><b><?=$linha['data1'];?></b> Fotos: <?=$linha['qtfotos'];?></p>

</div>
</div>
<div class="limpar" style="height:15px"></div>
</td>
<?
}
?> 
</tr>
</table>


Opa o arquivo certo é esse aqui!

valeuuu

Attached Files



#8 Satoru

Satoru

    Novato no fórum

  • Usuários
  • 24 posts
  • Sexo:Masculino
  • Localidade:Minas Gerais
  • Interesses:PHP, Mysql, Javascript,Asp, HTLM, CSS e AS3

Posted 17/11/2011, 14:43

Já vi o erro no arquivo, você esta abrindo e fechando a tag <td> fora do while

Substitua:
<table width="293" border="0" cellspacing="0" cellpadding="0">
		  <tr>
		    <td width="293"><!-- GALERIA -->  <!-- AQUI O ERRO (abrindo antes do while) -->
<?
	$i=0;
	$SQL = "SELECT *, DATE_FORMAT(data,'%d/%m/%Y') as data1 FROM tbgalerias WHERE flag_status=1 ".$busca." ORDER BY data DESC";
	$Lista = new Consulta($SQL,6,$PGATUAL);
	while ($linha = db_lista($Lista->consulta)) { $i++;
		$linha['qtfotos'] = db_linhas(db_consulta("SELECT id_foto FROM tbgalerias_fotos WHERE flag_status=1 AND id_galeria=".$linha['id_galeria']));
?>
                                
    
    <div class="listagem_galeria">
        <div class="img"><img  src="../img.php?x=100&y=100&corta=1&img=arquivos/galeria/<?=$linha['codigo'];?>/capa.jpg" /></div>
        <div class="galeriatitulo">
            <p class="data"><b><?=$linha['data1'];?></b>  Fotos: <?=$linha['qtfotos'];?></p>
            <p class="titulo"><a href="?p=galeria_ver&id=<?=$linha['id_galeria'];?>"><?=utf8_decode($linha['titulo']);?></a></p>
        </div>
        </div>
    <div class="limpar" style="height:15px"></div>
    
<?
}
?>    
    <!-- GALERIA FIM -->&nbsp;</td>   <!-- AQUI O ERRO -->
	      </tr>
</table>


Por:
<table width="293" border="0" cellspacing="0" cellpadding="0">
		  <tr>
		   <!-- GALERIA -->
<?
	$i=0;
	$SQL = "SELECT *, DATE_FORMAT(data,'%d/%m/%Y') as data1 FROM tbgalerias WHERE flag_status=1 ".$busca." ORDER BY data DESC";
	$Lista = new Consulta($SQL,6,$PGATUAL);
	while ($linha = db_lista($Lista->consulta)) { $i++;
		$linha['qtfotos'] = db_linhas(db_consulta("SELECT id_foto FROM tbgalerias_fotos WHERE flag_status=1 AND id_galeria=".$linha['id_galeria']));
?>
       
    <td width="293">  <!-- ABRA A TAG TD AQUI -->
    
    <div class="listagem_galeria">
        <div class="img"><img  src="../img.php?x=100&y=100&corta=1&img=arquivos/galeria/<?=$linha['codigo'];?>/capa.jpg" /></div>
        <div class="galeriatitulo">
            <p class="data"><b><?=$linha['data1'];?></b>  Fotos: <?=$linha['qtfotos'];?></p>
            <p class="titulo"><a href="?p=galeria_ver&id=<?=$linha['id_galeria'];?>"><?=utf8_decode($linha['titulo']);?></a></p>
        </div>
        </div>
    <div class="limpar" style="height:15px"></div>
    
     </td>   <!-- FECHE A TAG TD AQUI -->
<?
}
?>    
    <!-- GALERIA FIM -->
	      </tr>
</table>


#9 André Figueiredo

André Figueiredo

    Novato no fórum

  • Usuários
  • 7 posts
  • Sexo:Masculino
  • Localidade:Brasil
  • Interesses:PHP, Myql, Javscript, àudios

Posted 17/11/2011, 14:57

Cara puts...perfeito.. funcionou.rs
só tem um problema rs não existe a definição de quantas colunas né.
tipo assim...3 colunas...para 6 fotos
ficam 3 em cima e 3 em baixo

#10 Satoru

Satoru

    Novato no fórum

  • Usuários
  • 24 posts
  • Sexo:Masculino
  • Localidade:Minas Gerais
  • Interesses:PHP, Mysql, Javascript,Asp, HTLM, CSS e AS3

Posted 17/11/2011, 15:03

Cara puts...perfeito.. funcionou.rs
só tem um problema rs não existe a definição de quantas colunas né.
tipo assim...3 colunas...para 6 fotos
ficam 3 em cima e 3 em baixo


Nesse caso você pode fazer um if
exemplo:
//a variavel coluna possui o mesmo princípio da variavel $i , ou seja é somada a cada passagem do while: $colunas++

//assim basta fazer a verificação
if($colunas==3){
//fecha a linha e começa outra linha
echo "</td></tr><tr><td>"
//é importante zerar a variável $colunas para que se possa fazer novamente uma quebra de linha quando chegar nas fotos 6 a 9
$colunas = 0;
}


#11 André Figueiredo

André Figueiredo

    Novato no fórum

  • Usuários
  • 7 posts
  • Sexo:Masculino
  • Localidade:Brasil
  • Interesses:PHP, Myql, Javscript, àudios

Posted 17/11/2011, 15:19

Acho que num deu nao..rs esses codigos me deixam loko...mas vamos lá..

tentei dessas duas formas:

<?
$i=0;
$SQL = "SELECT *, DATE_FORMAT(data,'%d/%m/%Y') as data1 FROM tbgalerias WHERE flag_status=1 ".$busca." ORDER BY data DESC";
$Lista = new Consulta($SQL,4,$PGATUAL);
while ($linha = db_lista($Lista->consulta)) { $i++;
$linha['qtfotos'] = db_linhas(db_consulta("SELECT id_foto FROM tbgalerias_fotos WHERE flag_status=1 AND id_galeria=".$linha['id_galeria']));

//a variavel coluna possui o mesmo princípio da variavel $i , ou seja é somada a cada passagem do while: $colunas++

//assim basta fazer a verificação
if($colunas==2){
//fecha a linha e começa outra linha
echo "</td></tr><tr><td>"
//é importante zerar a variável $colunas para que se possa fazer novamente uma quebra de linha quando chegar nas fotos 6 a 9
$colunas = 0;
}
?>



-----------------

e tbm assim:

<?
$i=0;
$SQL = "SELECT *, DATE_FORMAT(data,'%d/%m/%Y') as data1 FROM tbgalerias WHERE flag_status=1 ".$busca." ORDER BY data DESC";
$Lista = new Consulta($SQL,4,$PGATUAL);
while ($linha = db_lista($Lista->consulta)) { $i++;
$linha['qtfotos'] = db_linhas(db_consulta("SELECT id_foto FROM tbgalerias_fotos WHERE flag_status=1 AND id_galeria=".$linha['id_galeria']));
?>

<?php
//a variavel coluna possui o mesmo princípio da variavel $i , ou seja é somada a cada passagem do while: $colunas++

//assim basta fazer a verificação
if($colunas==2){
//fecha a linha e começa outra linha
echo "</td></tr><tr><td>"
//é importante zerar a variável $colunas para que se possa fazer novamente uma quebra de linha quando chegar nas fotos 6 a 9
$colunas = 0;
}
?>

#12 Satoru

Satoru

    Novato no fórum

  • Usuários
  • 24 posts
  • Sexo:Masculino
  • Localidade:Minas Gerais
  • Interesses:PHP, Mysql, Javascript,Asp, HTLM, CSS e AS3

Posted 17/11/2011, 15:24

Não vi você declarar em lugar algum a variável coluna rsrs

logo abaixo de:
$i=0;
coloque:
$colunas = 0;

e em baixo de:
$i++;
coloque:
$colunas++;

ficaria assim:
<?
$i=0;
$colunas=0; //declaração da variavel recebnedo ZERO

$SQL = "SELECT *, DATE_FORMAT(data,'%d/%m/%Y') as data1 FROM tbgalerias WHERE flag_status=1 ".$busca." ORDER BY data DESC";
$Lista = new Consulta($SQL,4,$PGATUAL);
while ($linha = db_lista($Lista->consulta)) {

$i++;
$colunas++;   //SOMA-SE 1 a cada passagem no while

$linha['qtfotos'] = db_linhas(db_consulta("SELECT id_foto FROM tbgalerias_fotos WHERE flag_status=1 AND id_galeria=".$linha['id_galeria']));

//a variavel coluna possui o mesmo princípio da variavel $i , ou seja é somada a cada passagem do while: $colunas++

//assim basta fazer a verificação
if($colunas==2){
//fecha a linha e começa outra linha
echo "</td></tr><tr><td>"
//é importante zerar a variável $colunas para que se possa fazer novamente uma quebra de linha quando chegar nas fotos 6 a 9
$colunas = 0;
}
?> 





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq