Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Yasser Anuar Lima

Criando lista de Produtos com Divs

Recommended Posts

Olá, estou tentando criar uma lista de produtos para um site, porém, gostaria de fazê-la com divs ao invés de fazer com tabelas.

Estou usando PHP com MySQL para armazenar os dados dos produtos, mas não sei como transpor este conteúdo para o HTML de forma dinâmica.

 

Um outro problema é a paginação, pois cada página só exibe 12 produtos por vez(12 divs ).

 

A estrutura seria mais ou menos esta:

 

<div id="container">
      <div id="linha1">
           <div id = "produto1"> <!-- Todo o conteúdo vai aqui --> </div>
           <div id = "produto2"> <!-- Todo o conteúdo vai aqui --> </div>
           <div id = "produto3"> <!-- Todo o conteúdo vai aqui --> </div>
      </div>

      <div id="linha2">
           <div id = "produto4"> <!-- Todo o conteúdo vai aqui --> </div>
           <div id = "produto5"> <!-- Todo o conteúdo vai aqui --> </div>
           <div id = "produto6"> <!-- Todo o conteúdo vai aqui --> </div>
      </div>

      <div id="linha3">
           <div id = "produto7"> <!-- Todo o conteúdo vai aqui --> </div>
           <div id = "produto8"> <!-- Todo o conteúdo vai aqui --> </div>
           <div id = "produto9"> <!-- Todo o conteúdo vai aqui --> </div>
      </div>

      <div id="linha4">
           <div id = "produto10"> <!-- Todo o conteúdo vai aqui --> </div>
           <div id = "produto11"> <!-- Todo o conteúdo vai aqui --> </div>
           <div id = "produto12"> <!-- Todo o conteúdo vai aqui --> </div>
      </div>
</div>

 

Pesquisei em vários fóruns e não encontrei alguma solução concreta.

 

Agradeço desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

em relação ao conteudo dinaminaco, você já fez a conexão com o banco?

já tem a query feita?

 

você pode dar uma estudada em while, provavelmente ele irá te ajudar.

 

http://www.php.net/manual/pt_BR/control-structures.while.php

 

Para paginação da uma olhada nesses artigos

 

http://blog.thiagobelem.net/entendendo-a-paginacao-de-registros-no-mysql/

http://blog.thiagobelem.net/sistema-de-busca-em-php-e-mysql/

 

abç

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Gui0, Dellacurtais na verdade, as duas hehehehe, pois não sei como posso fazer o loop while do PHP gerar o HTML pra mim, se fosse com uma tabela, eu faria algo como:

while(){
echo "
<tr>
    <td>$atrib1 </td>
</tr>


";
}

 

Porém não sei como fazer com divs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como você trás do banco de dados você pode trazer um array com todos os dados e fazer o seguinte

 
$contador = 1;
foreach ($array as $chave => $valor) {
echo "<div id = \"produto$contador\">  $valor </div>";
++$contador;
}


Acima é um exemplo de como você pode fazer, para resolver o seu problema eu faria assim (não sei se é o mais indicado pois fiz rapidamente, já que dá para fazer com outros tipos de operadores nos if como && , || e assim por diante, mas fiz aqui no trampo só para ver se te ajuda, se tivesse mais tempo ajudaria a chegar na resolução ideal, mas acho que isso já te ajuda a resolver seu problema ai é só adaptar

 
<?php
 
$contalinha = 1;
$contador = 1;
foreach ($array as $chave => $valor) {
 
if($contalinha == 1){
echo "<div id=\"linha1\">";
}else if($contalinha == 4){
echo "<div id=\"linha2\">";
}else if($contalinha == 7){
echo "<div id=\"linha3\">";
}
 
echo "<div id = \"produto$contador\">  $valor </div>";
 
if($contalinha == 3){
echo "</div>";
}else if($contalinha == 6){
echo "</div>";
}else if($contalinha == 9){
echo "</div>";
}
 
++$contalinha;
++$contador;
}
 


Veja se isso resolve o seu problema..

o que ele faz, se for o primeiro ele adiciona uma linha, adiciona os produtos, ai quando for o 3 ele vai fechar a linha e abrir uma nova e por mais 3 produtos, se precisar de mais é só adaptar que isso vai resolver o que você precisa, faz o teste e vê se funciona.

Lembrando que faço um foreach, de uma array que você vai trazer quando fizer o select com os valores (mas acho que isso vc vai entender rsrs.)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu faria de outro jeito (provavelmente mais burro! lol)..

 

 

<?php
 
echo "<div id=\"container\">";
 
$i = 1;
 
do
{
    $query2 = "SELECT * FROM produtos";
    $sql2 = mysql_query($query2) or die("A query falhou: " . mysql_error());
 
    $lpp = 3; // número de colunas
    $total = mysql_num_rows($sql2);
    $inteiro = intval($total/$lpp);
    $resto = $total % $lpp;
 
    $de = ($i-1) * $lpp;
    if ($i <= $inteiro) {$por = $lpp;} else {$por = $resto;}
 
    $query = "SELECT * FROM produtos ORDER BY id DESC LIMIT $de,$por";
    $sql = mysql_query($query) or die("A query falhou: " . mysql_error());
 
    $linhas = mysql_num_rows($sql);
 
    echo "<div id=\"linha" . $i . "\">";
 
    if ($linhas == 0)
    {
        echo "<div align=\"center\">Não há produtos</div>";
    }
    else
    {
        while ($dados = mysql_fetch_array($sql))
        {
            $id = $dados['id'];
            $produto = $dados['produto'];
 
            echo "<div id=\"produto" . $id . "\">Produto $id</div>";
        }
    }
 
    echo "</div>";
    $i++;
 
    if ($resto == "0")
    {
        $condicoes = (($linhas == $lpp) && ($i <= $inteiro));
    }
    else
    {
        $condicoes = ($linhas == $lpp);
    }
 
} while ($condicoes);
 
echo "</div>";
 
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é necessário utilizar o contador, a menos que suas divs dependam de IDs diferentes para uma possível interação com jQuery o funções JS

 

Desta forma ele vai repetir os produtos em 3 blocos. de 3 em 2. se quiser de 1 em 1 deixe apenas a div linha e uma div do produto.



<?php
$i=1;
while()
{
?>
<div id="linha<?php print $i++; ?>">
<div id = "produto<?php print $i++; ?>"> <?php print $var; ?> </div>
<div id = "produto<?php print $i++; ?>"> <?php print $var; ?> </div>
<div id = "produto<?php print $i++; ?>"> <?php print $var; ?> </div>
</div>
<?php
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assim amigo uma dica, não tem a ver com sua duvida em si.

Mais no caso como você mesmo disse no topico do post "Criando Lista de Produtos", por que não usa os elemtos apropriados para criar listas, <ul> e <li>.

Fica mais semantico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.