felipedf 0 Denunciar post Postado Setembro 9, 2014 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: 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
adriano.lopes 1 Denunciar post Postado Setembro 10, 2014 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