How to hide table columns if there is no record in the database?

Asked

Viewed 819 times

0

<?php 
    // Pega o id do produto vindo da URL
    $id_produto = $_GET['produto'];
?>

<table width="100%" class="table table-bordered table-inverse table-hover table-responsive text-uppercase" id="tb_dados_produtos">
  <tr>
    <th scope="col">CÓD/FABRICAÇÃO</th>
    <th scope="col">Tamanho</th>
    <th scope="col">Peso</th>
    <th scope="col">Unidades</th>
    <th scope="col">Cor</th>
    <th scope="col">Nº</th>
    <th scope="col">Matérias</th>
    <th scope="col">Folhas</th>
  </tr>
<?php if(isset($id_produto)) { $D = $Exibir->VerDados($id_produto); if(is_array($D)) { foreach($D as $d) { // Repetir linha conforme registros do BD ?>   
  <tr>
   <?php if(!empty ($d['Codigo_Fabricacao'])){ // Se não estiver vasio exiba os dados ?>
    <td align="center"> <?php echo utf($d['Codigo_Fabricacao']);  ?> </td>
    <?php }else{ // Se estiver vasio não exibir?>
    <td align="center" scope="row">-</td>
    <?php } ?>

    <?php if(!empty ($d['Tamanho'])){ ?>
    <td align="center"><?php echo utf($d['Tamanho']);  ?></td>
    <?php }else{ ?>
    <td align="center" scope="row">-</td>
    <?php } ?>

    <?php if(!empty ($d['Peso'])){ ?>
    <td align="center"><?php echo utf($d['Peso']);  ?></td>
    <?php }else{ ?>
    <td align="center" scope="row">-</td>
    <?php } ?>

    <?php if(!empty ($d['Unidades'])){ ?>
    <td align="center"><?php echo utf($d['Unidades']);  ?></td>
    <?php }else{ ?>
    <td align="center" scope="row">-</td>
    <?php } ?>

    <?php if(!empty ($d['Cor'])){ ?>
    <td width="385" align="center"><?php echo utf($d['Cor']);  ?></td>
    <?php }else{ ?>
    <th width="40" align="center" scope="row">-</th>
    <?php } ?>

    <?php if(!empty ($d['Numero'])){ ?>
    <td width="98" align="center"><?php echo utf($d['Numero']);  ?></td>
    <?php }else{ ?>
    <th width="40" align="center" scope="row">-</th>
    <?php } ?>

    <?php if(!empty ($d['Materias'])){ ?>
    <td width="98" align="center"><?php echo utf($d['Materias']);  ?></td>
    <?php }else{ ?>
    <th width="40" align="center" scope="row">-</th>
    <?php } ?>

    <?php if(!empty ($d['Folhas'])){ ?>
    <td width="98" align="center"><?php echo utf($d['Folhas']);  ?></td>
    <?php }else{ ?>
    <th width="44" align="center" scope="row">-</th>
    <?php } ?>

  </tr>
<?php } } } // Fecha While de repetição ?>  
<?php  if(empty ($d['Codigo_Fabricacao'])){ // Se não existir código de fabricação exiba linha de erro. ?> 
  <tr>
    <td colspan="8" align="center"><span class="text-center text-danger"><strong>Desculpe mas não existe informações para esse produto !!! </strong></span></td>
  </tr>
<?php } ?>
</table>
  • Beware of the function empty(), for example, if some of the values are "0", you might want to show, however it will not show why empty(0) == true

1 answer

0


@EDIT

<?php 
    // Pega o id do produto vindo da URL
    $id_produto = $_GET['produto'];
?>
<?php if(isset($id_produto)) { $D = $Exibir->VerDados($id_produto); if(is_array($D)) { foreach($D as $d) { // Repetir linha conforme registros do BD ?>
    <table width="100%" class="table table-bordered table-inverse table-hover table-responsive text-uppercase" id="tb_dados_produtos">
        <tr>
            <th style="<?php if (empty ($d['Tamanho'])) { echo 'display: none;';} ?>" scope="col">Tamanho</th>
        </tr>
        <tr>
            <?php if(!empty ($d['Tamanho'])){ ?>
                <td align="center"><?php echo utf($d['Tamanho']);  ?></td>
            <?php }else{ ?>
                <td align="center" style="display: none;"></td>
            <?php } ?>
        </tr>
    </table>
<?php } } } // Fecha While de repetição ?>  
<?php  if(empty ($d['Codigo_Fabricacao'])){ // Se não existir código de fabricação exiba linha de erro. ?> 
    <table>
        <tr>
            <td colspan="8" align="center"><span class="text-center text-danger"><strong>Desculpe mas não existe informações para esse produto !!! </strong></span></td>
        </tr>
    </table>
<?php } ?>

As you can see in the code:

se (o tamanho retornar vazio) faça
    adicionar style="display: none;" ao elemento th
fim

Same for the td element

  • I’m on it but in the header it has to do some schematic before the while that repeats the lines ?

  • Do you want to make the <th> disappear too if you don’t have values in that column? That’s it?

  • Exactly bro.

  • I edited the code.

  • (Y) Vlew I will check.

  • If possible say if it worked or not.

  • Hey, buddy, so I managed to get the table header at the end of it to make it work. Your code works but cannot repeat if you have more data in this table. But vlew by tip.

  • For nothing, if you can post the code that worked correctly, it could help people with the same doubt in the future.

Show 3 more comments

Browser other questions tagged

You are not signed in. Login or sign up in order to post.