Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Preciso fazer uma listagem de dados do mysql da seguinte maneira:
<div class="item">
<div class="foto"> </div>
<div class="foto"> </div>
<div class="foto"> </div>
</div>
<div class="item">
<div class="foto"> </div>
<div class="foto"> </div>
<div class="foto"> </div>
</div>
ou seja preciso que cada #item tenha 3 fotos diferentes, mas só que quando vou fazer a listagem do mysql, ele retorna 3 imagens iguais.
Sei que a pergunta é um pouco primaria... e é mais questão de lógica... como devo fazer para essas imagens não repetirem ?
Williams,
<?php
$sql = mysql_query("SELECT * FROM fotos");
while($listar = mysql_fetch_assoc($sql)){
echo "<div class='item'>";
echo "<div class='foto'>".$listar[foto]."</div>"; // IMG 1
echo "<div class='foto'>".$listar[foto]."</div>"; // IMG 2
echo "<div class='foto'>".$listar[foto]."</div>"; // IMG 3
// A imagem 1 esta repetindo para a img 2 e 3
echo "</div>";
}
?><?php
$sql = mysql_query("SELECT * FROM fotos");
while($listar = mysql_fetch_assoc($sql)){
echo "<div class='item'>";
echo "<div class='foto'>".$listar['foto']."</div>"; // IMG 1
echo "<div class='foto'>".$listar['foto']."</div>"; // IMG 2
echo "<div class='foto'>".$listar['foto']."</div>"; // IMG 3
// A imagem 1 esta repetindo para a img 2 e 3
echo "</div>";
}
?>
Quando você coloca a variável que vem do banco sem aspas (' ' ou " ") dentro de um loop, esta passa receber o valor da linha anterior, como se fosse uma constante, já com aspas processa o valor da variável que esta na fila, basicamente isso.
Já que está usando matriz associativa prefira mysql_fetch_array
Só que recomendo migrar para PDO
Na realidade o problema não está na falta das " ou ', o que faz a foto ser outra é o fetch, logo, dentro do mesmo fetch a imagem será a mesma sempre. A solução tabajara:
<?php
$sql = mysql_query("SELECT * FROM fotos");
while($listar = mysql_fetch_assoc($sql)){
echo "<div class='item'>";
echo "<div class='foto'>".$listar['foto']."</div>"; // IMG 1
$listar = mysql_fetch_assoc($sql);
echo "<div class='foto'>".$listar['foto']."</div>"; // IMG 2
$listar = mysql_fetch_assoc($sql);
echo "<div class='foto'>".$listar['foto']."</div>"; // IMG 3
// A imagem 1 esta repetindo para a img 2 e 3
echo "</div>";
}
?>
A solução mais adequada na minha visão, seria contar a quantidade de itens retornados na query, dividir por 3, com esta informação montar um for (onde está o while agora) e dentro do for colocar o while, dando um break nele a cada 3 voltas.
Observe que na solução tabajara é necessário verificar se no fetch veio alguma coisa, pois se houver, por exemplo, 5 registros, o último fetch não vai retornar nada.
Imagem está repetindo como?
Há um relacionamento entre tabelas?
Sua pergunta não está primaria, mas sim descontextualizada!