Ir para conteúdo

Arquivado

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

felipedf

Exibir uma tabela dentro de outra php e mysql

Recommended Posts

Pessoal estou com o seguinte problema:

- Preciso exibir duas tabelas sendo uma dentro de outra, a primeira seria como se fosse um thead da segunda que quando clicasse ela exibiria um outro thead e suas linhas.

 

o Resultado seria esse:

 

_sem_titulo_50.png

 

Sendo que as linhas da segunda tabela deveriam estar associadas a primeira tabela.

 

Para tentar isso eu fiz dois códigos PHP:

 <?php
        require '../connect.php';
        $sql = "SELECT CODIGO_FORMULARIO,REVISAO,NOME_FORMULARIO FROM FORMULARIO  ";
        $resultado = mysql_query($sql);
        
        while ($linha = mysql_fetch_array($resultado)) {
            
          // busca todos os formularios (1º Tabela)
            echo '<tr class="lineclic" >'; // <-- jquery acordion
                echo'<td>'.$linha['CODIGO_FORMULARIO'].'</td>';
                echo'<td>'.$linha['REVISAO'].'</td>';
                echo'<td>'.$linha['NOME_FORMULARIO'].'</td>';
                echo'<td>'.'-'.'</td>';
            echo'</tr>';
 
// imprime o cabecario da segunda tabela
                echo'<tr id="cabecario">';
                    echo'<td> Nº do item</td>';
                    echo'<td>Item de Inspeção </td>';
                    echo'<td>Método de verificação </td>';
                    echo'<td>Resultados e tolerâncias </td>';
                echo'</tr>';           
        }
                ?>

2º código

<?php
            require '../connect.php';
            $sql = "SELECT F.CODIGO_FORMULARIO,F.NOME_FORMULARIO,F.REVISAO,F.idFORMULARIO,I.FORMULARIO_idFORMULARIO, I.N_ITEM,I.ITEM_INSPECAO,I.METODO_VERIFICACAO,I.RESULTADOS_TOLERANCIA FROM FORMULARIO AS F INNER JOIN ITENS_TIS AS I ON F.idFORMULARIO = I.FORMULARIO_idFORMULARIO"; // join com as duas tabelas
            $sql2 = "SELECT * FROM FORMULARIO"; // Select da primeira Tabela
            $resultado = mysql_query($sql2); // Query da 1º Tabela
            $resultado2 = mysql_query($sql); // Query da Segunda tabela

            while ($linha = mysql_fetch_assoc($resultado)) {  // while da primeira tabela

                while ($linha2 = mysql_fetch_assoc($resultado2)) { // while da segunda tabela

                    if ($linha['idFORMULARIO'] == $linha2['FORMULARIO_idFORMULARIO']) { // se id da 1º Tabela for igual o id da 2º Tabela, imprime as linhas da segunda tabela.
                        echo'<tr>';
                        echo'<td>' . $linha2['N_ITEM'] . '</td>';
                        echo'<td>' . $linha2['ITEM_INSPECAO'] . '</td>';
                        echo'<td>' . $linha2['METODO_VERIFICACAO'] . '</td>';
                        echo'<td>' . $linha2['RESULTADOS_TOLERANCIA'] . '</td>';
                        echo'</tr>';
                    } else {
                        break;
                    }
                }
            }
            ?>

O problema é que as linhas da segunda tabela estão sendo exibidas sem estar associadas a primeira tabela, Além da Thead da 2º tabela está se repetindo várias vezes. Sei que está complicado entender esse problema mas se puderem me ajudar ficaria muito grato. Sou bem iniciante em PHP e MYSQL.

// 1º tabela CREATE TABLE `formulario` (
                  `idFORMULARIO` int(10) unsigned NOT NULL AUTO_INCREMENT,
                  `FUNCIONARIOS_VIA_PERFIL_ACESSO_idPERFIL_ACESSO` int(10) unsigned NOT NULL,
                  `FUNCIONARIOS_VIA_idFUNCIONARIOS_VIA` int(10) unsigned NOT NULL,
                  `CODIGO_FORMULARIO` varchar(20) DEFAULT NULL,
                  `NOME_FORMULARIO` varchar(45) DEFAULT NULL,
                  `REVISAO` varchar(5) DEFAULT NULL,
                  PRIMARY KEY (`idFORMULARIO`,`FUNCIONARIOS_VIA_PERFIL_ACESSO_idPERFIL_ACESSO`,`FUNCIONARIOS_VIA_idFUNCIONARIOS_VIA`),
                  KEY `FORMULARIO_FKIndex1` (`FUNCIONARIOS_VIA_idFUNCIONARIOS_VIA`,`FUNCIONARIOS_VIA_PERFIL_ACESSO_idPERFIL_ACESSO`)
                ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;


 2º Tabela  CREATE TABLE `itens_tis` (
                  `idITENS_TIS` int(10) unsigned NOT NULL AUTO_INCREMENT,
                  `FORMULARIO_idFORMULARIO` int(10) unsigned NOT NULL,
                  `ITEM_INSPECAO` varchar(400) DEFAULT NULL,
                  `N_ITEM` int(11) NOT NULL,
                  `METODO_VERIFICACAO` varchar(400) DEFAULT NULL,
                  `RESULTADOS_TOLERANCIA` varchar(200) DEFAULT NULL,
                  PRIMARY KEY (`idITENS_TIS`,`FORMULARIO_idFORMULARIO`),
                  KEY `ITENS_TIS_FKIndex1` (`FORMULARIO_idFORMULARIO`)
                ) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Recomendo usar Ajax!

 

Pensando na questão de desempenho vejamos o seguinte... Você vai exibir uma lista de registro e cada registro tem outra lista de registro e você quer carregar tudo de uma vez. Pensando possivelmente o usuário não vai clicar em todos os registro e você carregou sub-registros desnecessariamente.

 

Recomendo que você exiba apenas os registros principais que é o seu primeiro while() e só quando o usuário clicar nesse registro você chama um AJAX que só traz os sub-registros desse que foi clicado... entendeu???

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.