Ir para conteúdo

Arquivado

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

Aureo Almeida

Problema em definir largura e disposição horizontal de tabelas com resultado de while

Recommended Posts

Problema em definir largura e disposição horizontal de tabelas com resultado de while

Como iniciante em programação estou tendo problemas para estilizar uma tabela dentro de um script PHP. Possuo o seguinte script:

 <?php 
		 $sql = 'SELECT * FROM psd_produtos';
		 $stmt = $conn->query($sql);
		echo '<table>';
		 while($row = $stmt->fetch(PDO::FETCH_OBJ)){
                			echo "
				<td>
				<tr><h1>$row->prd_nome <br /></h1></tr>
				<tr><p>$row->prd_detalhe <br /></p></tr>
				<tr>$row->prd_valor <br /></tr>
				</td>
				";	
            }
			echo '</table>';
		 ?>

Ele funciona perfeitamente, buscando e produzindo um loop das informações que preciso, porém, gostaria que o resultado me retornasse em tabelas que ficasse dispostas horizontalmente lado a lado, e imaginei colocar uma classe CSS que estabelecesse a largura da tabela em 400px com um float que me permitiria alinhar o resultado em “4 colunas”. Porém, essa classe não funciona dentro do script.

Tentei echo '<table class="tabela-produto">'; e não funciona.

A mesma classe, que estabelece uma largura para a tabela, aplicada a uma tabela fora do script funciona e isso tirou minha dúvida se este tópico seria sobre CSS/HTML ou PHP.

Como posso fazer para obter meu objetivo com este script, alinhando horizontalmente o resultado do while em tabelas dispostas horizontalmente em 4 colunas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Aureo Almeida Bom dia,!

 

Cara, seu problema está no seu HTML e no CSS.

 

Tem um erro no HTML no elemento table, você colocou um elemento cell(<td>) antes de um elemento row(<tr>), e dentro do elemento cell(<td>), você colocou 3 elementos row(<tr>), e isso está totalmente errado.

 

Uma tabela simples no HTML ficaria assim:

<table>
  <tr>
    <td>Cell A</td>
    <td>Cell B</td>
  </tr>
</table>

Como você não colocou seu CSS não tem como verificar se tem alguma coisa errada no css.

 

Aqui tem a documentação da tabela do HTML

 

Vou deixa um exemplo de 3 tabelas alinhadas horizontalmente usando HTML e CSS, e colocando os elementos da tabela usando um echo do php.

<?php

$num = -1;
$resultato = [
    array("id"=>1, "name"=>"teste01", "valor"=>200),
    array("id"=>2, "name"=>"teste02", "valor"=>400),
    array("id"=>3, "name"=>"teste03", "valor"=>600),
    array("id"=>4, "name"=>"teste04", "valor"=>800),
    array("id"=>5, "name"=>"teste05", "valor"=>1000)
];

function emularDb()
{
    global $num, $resultato;

    if ($num < (count($resultato) - 1))
    {   
        $num++;
        return(true);
    }else
    {
        return(false);
    }
}

?>
<!DOCTYPE html>
<html>
    <head>
        <title>Tabela</title>
        <style>

            html, body{
                width: 100%;
                height: 100%;
                margin: 0px;
                padding: 0px;
            }

            .contaier{
                width: 100%;
                padding: 0px;
                margin: 0px;
            }

            table.table-cotanier{
                width: 400px;
                float: left;
                margin: 5px;
                border: #272727 1px solid;
            }

            table.table-cotanier > tbody:first-child > tr > th{
                background: #272727!important;
                padding: 5px 10px;
                color: #fff;
                width: 100%;
            }

            table.table-cotanier > tbody > tr > td{
                padding: 5px 10px;
                color: #000;
                width: 100%;
                border-bottom: 1px solid #ccc;
            }

        </style>
    </head>
    <body>
        <div class="container">
            <table class="table-cotanier">
                <tbody>
                    <tr>
                        <th>ID</th>
                        <th>NOME</th>
                        <th>VALOR</th>
                    </tr>
                </tbody>
                <tbody>
                <?php
                    while(emularDb())
                    {
                        echo("<tr>");
                        echo('<td>'.$resultato[$num]['id'].'</td>');
                        echo('<td>'.$resultato[$num]['name'].'</td>');
                        echo('<td>'.$resultato[$num]['valor'].'</td>');
                        echo("</tr>");
                    }
                ?>
                </tbody>
            </table>
            <table class="table-cotanier">
                <tbody>
                    <tr>
                        <th>ID</th>
                        <th>NOME</th>
                        <th>VALOR</th>
                    </tr>
                </tbody>
                <tbody>
                <?php

                    $num = -1;

                    while(emularDb())
                    {
                        echo("<tr>");
                        echo('<td>'.$resultato[$num]['id'].'</td>');
                        echo('<td>'.$resultato[$num]['name'].'</td>');
                        echo('<td>'.$resultato[$num]['valor'].'</td>');
                        echo("</tr>");
                    }
                ?>
                </tbody>
            </table>
            <table class="table-cotanier">
                <tbody>
                    <tr>
                        <th>ID</th>
                        <th>NOME</th>
                        <th>VALOR</th>
                    </tr>
                </tbody>
                <tbody>
                <?php

                    $num = -1;

                    while(emularDb())
                    {
                        echo("<tr>");
                        echo('<td>'.$resultato[$num]['id'].'</td>');
                        echo('<td>'.$resultato[$num]['name'].'</td>');
                        echo('<td>'.$resultato[$num]['valor'].'</td>');
                        echo("</tr>");
                    }
                ?>
                </tbody>
            </table>
        </div>
    </body>
</html>

Obs..: Muito web design não gosta do resultado da tabela do html quando o site é responsivo, pro isso muitos optam por usar flex-box ou css grid em um elemento div para fazer a tabela.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Pessoal. Quero dizer que eu consegui resolver o problema que postei aqui com o seguinte código, adicionando ao echo que insere a tabela uma div no entorno:

while($row = $stmt->fetch(PDO::FETCH_OBJ)){
		 	$imagem = $caminho . $row->prd_foto1;
			 echo"
			 	<div class='tabela-produtos'>
				<table border='0' cellspacing='5px'>
  				<tbody>
    			<tr class='tabela-produtos-td1'>
      			<td><img src='$imagem'/></td>
    			</tr>
    			<tr class='tabela-produtos-td2'>
      			<td><br/><br/><h1>$row->prd_nome</h1><br/></td>
    			</tr>
    			<tr class='tabela-produtos-td3'>
      			<td><h2>R$$valor</h2><br/></td>
    			</tr>
    			<tr class='tabela-produtos-td4'>
      			<td><p>$row->prd_detalhe</p><br/></td>
    			</tr>
    			<tr class='tabela-produtos-td5'>
      			<td>
                  <form>
                    <input name='COMPRAR' type='button' class='align-center' id='COMPRAR' value='Ver Detalhes'>
                  </form></td>
    			</tr>
 			 	</tbody>
				</table>
				</div>
				";
            	}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por juliosonic
      Boa noite..
      Estou desenvolvendo um site de https://www.maithunatantra.com.br/ e estou com um duvida sobre o menu de navegação da versão mobile.
      O menu que tem o dropdown "Terapeutas" e "Terapias" quando clico em cima ele expande como deve ser, mas quando clico denovo para recolher os submenus
      nao acontece nada.. segue o trecho do codigo do menu..
      <div class="collapse navbar-collapse" id="navbarsExample09">             <ul class="navbar-nav ml-auto">               <li class="nav-item  active"><a class="nav-link" href="index.html">Home</a></li>               <li class="nav-item  active"><a class="nav-link" href="about-us.html">Quem Somos</a></li>               <li class="nav-item dropdown1">                     <a class="nav-link dropdown-toggle" data-toggle="dropdown1" href="#">Terapeutas</a>                     <ul class="dropdown-menu">                         <li><a class="dropdown-item" href="terapeuta-julio-cezar.html">Julio Cezar</a></li>                         <li><a class="dropdown-item" href="terapeuta-pamela-priscila.html">Pamela Priscila</a></li>                     </ul>                                    </li>               <li class="nav-item dropdown">                     <a class="nav-link dropdown-toggle" data-toggle="dropdown1" href="#">Terapias</a>                     <ul class="dropdown-menu" aria-labelledby="dropdown01">                         <li><a class="dropdown-item" href="o-que-e-reiki.html">O que é Reiki</a></li>                         <li><a class="dropdown-item" href="beneficios-reiki.html">Benefícios do Reiki</a></li>                         <li><a class="dropdown-item" href="principios-reiki.html">Princípios do Reiki</a></li>                         <li><a class="dropdown-item" href="animais-reiki.html">Reiki em Animais</a></li>                         <li><a class="dropdown-item" href="animais-reiki.html">Estudos Sobre Reiki</a></li>                         <li><a class="dropdown-item" href="terapia-massagem-tantrica.html">Terapia Tântrica</a></li>                     </ul>               </li>               <li class="nav-item  active"><a class="nav-link" href="blog.html">Blog</a></li>                <li class="nav-item"><a class="nav-link" href="contato.html">Contato</a></li>             </ul>         </div>  
      Massagem Tantrica em Curitiba
      Tantra Curitiba
      Massagem Tântrica
      Tantra
      Julio Darshan

      Obrigado
      Att
      Julio Cezar
       
       
       
    • Por Felipe Medeiros
      Bom, criei um tema filho e o que aprendi é que para alterar qualquer coisa do tema filho eu preciso copiar o arquivo do tema pai o colocar dentro da pasta do tema filho.
       
      No meu caso, estou usando o tema "Astra" bem famosinho. O arquivo css que quero modificar não está dentro da pasta do tema pai, está em "wp-content/uploads/uag-plugin/assets/0/uag-css-10.css" sendo que o diretorio do tema pai é "wp-content/themes/Astra"
       
      O problema é o seguinte, preciso modificar a barra de pesquisa da pagina inicial, porem o inspetor de elementos do chrome ta acusando que esse arquivo é o responsavel por estilizar a barra de pesquisa. Será que isso tem a ver com "Cache de objetos", eu sei que o plugin liteSpeed Cache, AMP, Rank Math, todos eles tem essas paradas de criar arquivos css e js para tornar o site mais rapido.
    • Por Alessandro Bodão
      Fala galerinha, 
       
      Tenho um container com um título (h1) no cabeçalho do meu site, esse container ocupa metade da tela (50vw), e eu gostaria que esse título ocupasse toda a largura desse container, independente do seu tamanho ou do tamanho do monitor, de forma com que a palavra tenha exactamente o mesmo tamanho do container (vou anexar uma foto de exemplo). Já tentei todos os valores pra essa h1, como % e vw... mas nada parece fazer sentido.
       
       

    • Por FabianoSouza
      Gente, tenho as TRs da minha tabele já com os cantos arredondados (através das TDs first-child e last-child). Fiz dessa forma porque desconheço uma maneira de aplicar radius diretamente na TR.
       
      O problema é que ao colorir a TR com o over do CSS, perde-se a formatação do border radius das TDs e exibe a TR com os cantos quadrados.
       
      Preciso que os cantos fiquem arredondados mesmo ao passar o mouse sobre a TR.
       
      Como resolvo isso?
    • Por viniciusfroner
      Tenho um pequeno sistema de envio, estou utilizando o "PHPMailerAutoload". Após o usuário inserir as informações e clicar em enviar a mensagem é enviada com sucesso, o único problema é que apresentado ao usuário a seguinte mensagem:
      if ($enviado){ echo "E-mail enviado com sucesso!"; } else { echo "Não foi possível enviar o e-mail."; echo "<b>Informações do erro:</b> " . $msg->ErrorInfo; } Acabei procurando e não achei como posso remover a mensagem "Error:"
×

Informação importante

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