Ir para conteúdo

POWERED BY:

Arquivado

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

EMSO.EXE

[Resolvido] Exibir dados de 2 tabelas

Recommended Posts

Pessoal estou com o seguinte problema em php+mysql... tenho 2 tabelas e quero exibir os dados conforme exemplo abaixo:

 

tb_ativo

cod_ativo cod_tipo

1 1

2 1

3 2

4 2

 

tb_tipo

cod_tipo nm_tipo

1 monitor

2 teclado

 

na listagem deve aparecer assim:

 

página php

cod_ativo nm_tipo

1 monitor

2 monitor

3 teclado

4 teclado

 

porém ocorre o seguinte erro:

 

Warning: mysql_result(): Unable to jump to row 1 on MySQL result index 9 in /files/portal/documentox/listagem_ativo.php on line 42

 

e a primeira linha funciona e as demais ficam sem dados:

 

página php

cod_ativo nm_tipo

1 monitor

2

3

4

 

segue o código:

 

<?php

       include ('conexao_bd.php');

       include ('cabecalho.php');

       include ('menu.php');

       $resultado = mysql_query("select * from docx_tb_ativo;") or die (mysql_error());

       $linha = mysql_num_rows($resultado);

       if ( $linha == 0 ) {
               if ( isset( $conexao ) and $conexao ) {
                            mysql_close($conexao);
                  }
               die('table  vazia');
           }

       echo '
               <table>
                       <tr>
                          <th class="titulo"><p>EDITAR</p></th>
                         <th class="titulo"><p>EXCLUIR</p></th>
                          <th class="titulo"><p>Código ativo</p></th>
                         <th class="titulo"><p>Tipo de ativo</p></th>
                         <th class="titulo"><p>Modelo</p></th>
                         <th class="titulo"><p>Data de entrada</p></th>
                         <th class="titulo"><p>Número de série</p></th>
                         <th class="titulo"><p>PIP</p></th>
                       </tr>
       ';


       for( $x = 0 ; $x < $linha ; $x++ ) {
               $cod_ativo = mysql_result($resultado, $x, 'cod_ativo');
               $cod_tipo = mysql_result($resultado, $x, 'cod_tipo');

// O ERRO OCORRE AQUI!!!!!

               $resultado1 = mysql_query("select * from docx_tb_tipo where cod_tipo = $cod_tipo;");

               $nm_tipo = mysql_result($resultado1, $x, 'nm_tipo');

               $cod_subtipo = mysql_result($resultado, $x, 'cod_subtipo');
               $dt_entrada = mysql_result($resultado, $x, 'dt_entrada');
               $num_serie = mysql_result($resultado, $x, 'num_serie');
               $num_pip = mysql_result($resultado, $x, 'num_pip');

                  $icone_editar = "<a href='alterar_cadastro.php?cod_ativo=$cod_ativo'>
                                       <img src=\"imagens/alterar_01.png\" alt=\"Clique para editar\" />
                                       </a>";
             $icone_excluir = "<a href='excluir_cadastro.php?cod_ativo=$cod_ativo'
                                       onClick=\"return confirm('Deseja excluir o ativo:$cod_ativo?');\">
                                       <img src=\"imagens/excluir_01.png\" alt=\"Clique para excluir\" />
                                       </a>";

       $y = 0;
       $y = floor(fmod($x,2));

       if ($y == 0)
               $y = 1;
       else
               $y = 2;

       echo '
                           <tr class="linha'.$y.'">
                      <td><center>'.$icone_editar.'</center></td>
                     <td><center>'.$icone_excluir.'</center></td>
                     <td><center>'.$cod_ativo.'</center></td>
                     <td>'.$nm_tipo.'</td>
                     <td>'.$cod_subtipo.'</td>
                     <td>'.$dt_entrada.'</td>
                     <td>'.$num_serie.'</td>
                     <td>'.$num_pip.'</td>
                       </tr>
       ';
       }                

       echo '</table>';                
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue o sql, vou tentar utilizar o inner join...

 

CREATE SCHEMA IF NOT EXISTS `test` ;
USE `test`;

-- -----------------------------------------------------
-- Table `test`.`docx_tb_tipo`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `test`.`docx_tb_tipo` (
 `cod_tipo` INT NOT NULL AUTO_INCREMENT ,
 `cod_subtipo` INT NOT NULL ,
 `nm_tipo` VARCHAR(25) NOT NULL ,
 PRIMARY KEY (`cod_tipo`) );

-- -----------------------------------------------------
-- Table `test`.`docx_tb_ativo`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `test`.`docx_tb_ativo` (
 `cod_ativo` INT NOT NULL AUTO_INCREMENT ,
 `cod_tipo` INT NOT NULL ,
 `cod_subtipo` INT NOT NULL ,
 `dt_entrada` DATE NOT NULL ,
 `num_serie` VARCHAR(30) NOT NULL ,
 `num_pip` INT NOT NULL ,
 `txt_obs` VARCHAR(99) NOT NULL ,
 PRIMARY KEY (`cod_ativo`) ,
 INDEX `fk_tipo_ativo` (`cod_tipo` ASC, `cod_subtipo` ASC) ,
 CONSTRAINT `fk_tipo_ativo`
   FOREIGN KEY (`cod_tipo` , `cod_subtipo` )
   REFERENCES `test`.`docx_tb_tipo` (`cod_subtipo` , `cod_subtipo` )
   ON DELETE NO ACTION
   ON UPDATE CASCADE);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu certo, está exibindo o nm_tipo no lugar de cod_tipo, agora quero exibir também o nm_tipo em cod_subtipo, essa tabela tipo fiz da seguinte forma:

 

cod_tipo - cod_subtipo - nm_tipo

1 ........ 10 .......... monitor

2 ........ 10 .......... mouse

3 ........ 10 .......... teclado

4 ........ 1 ........... LG

5 ........ 1 ........... Samsung

6 ........ 2 ........... Genius

7 ........ 2 ........... microsoft

 

e estou o usando este sql:

 

SELECT * FROM `docx_tb_tipo` INNER JOIN `docx_tb_ativo` ON `docx_tb_tipo`.`cod_tipo` = `docx_tb_ativo`.`cod_tipo` 
							OR `docx_tb_tipo`.`cod_tipo` = `docx_tb_ativo`.`cod_subtipo`;

 

porém está exibindo uma linha com cod_tipo e outra com cod_subtipo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então quero que apareça o lugar de cod_tipo e cod_subtipo a descrição que está em nm_tipo, mas o modo com tentei da um resultado como esse:

 

cod_ativo - cod_tipo(nm_tipo) - cod_subtipo(nm_tipo)

01...........monitor.............04

01...........01..................LG

 

e quero chegar a esse resultado:

 

cod_ativo - cod_tipo(nm_tipo) - cod_subtipo(nm_tipo)

01...........monitor.............LG

Compartilhar este post


Link para o post
Compartilhar em outros sites

problema resolvido!! segue a solução

 

<?php

include ('conexao_bd.php');

include ('cabecalho.php');

include ('menu.php');

$resultado_tipo = mysql_query("SELECT * FROM `docx_tb_tipo` INNER JOIN `docx_tb_ativo` ON `docx_tb_tipo`.`cod_tipo` = `docx_tb_ativo`.`cod_tipo`;") or die (mysql_error());

$resultado_subtipo = mysql_query("SELECT * FROM `docx_tb_tipo` INNER JOIN `docx_tb_ativo` ON `docx_tb_tipo`.`cod_tipo` = `docx_tb_ativo`.`cod_subtipo`;") or die (mysql_error());

$linha = mysql_num_rows($resultado_tipo);

if ( $linha == 0 ) {
	if ( isset( $conexao ) and $conexao ) {
    			mysql_close($conexao);
  		}
	die('table  vazia');
   	}

echo '
	<table>
		<tr>
  			<th class="titulo"><p>EDITAR</p></th>
 			<th class="titulo"><p>EXCLUIR</p></th>
  			<th class="titulo"><p>Código ativo</p></th>
 			<th class="titulo"><p>Tipo de ativo</p></th>
 			<th class="titulo"><p>Modelo</p></th>
 			<th class="titulo"><p>Data de entrada</p></th>
 			<th class="titulo"><p>Número de série</p></th>
 			<th class="titulo"><p>PIP</p></th>
		</tr>
';


for( $x = 0 ; $x < $linha ; $x++ ) {
	$cod_ativo = mysql_result($resultado_tipo, $x, 'cod_ativo');
	$nm_tipo = mysql_result($resultado_tipo, $x, 'nm_tipo');
	$nm_subtipo = mysql_result($resultado_subtipo, $x, 'nm_tipo');
	$dt_entrada = mysql_result($resultado_tipo, $x, 'dt_entrada');
	$num_serie = mysql_result($resultado_tipo, $x, 'num_serie');
	$num_pip = mysql_result($resultado_tipo, $x, 'num_pip');

  		$icone_editar = "<a href='alterar_cadastro.php?cod_ativo=$cod_ativo'>
				<img src=\"imagens/alterar_01.png\" alt=\"Clique para editar\" />
				</a>";
     	$icone_excluir = "<a href='excluir_cadastro.php?cod_ativo=$cod_ativo' 
				onClick=\"return confirm('Deseja excluir o ativo:$cod_ativo?');\">
				<img src=\"imagens/excluir_01.png\" alt=\"Clique para excluir\" />
				</a>";

$y = 0;
$y = floor(fmod($x,2));

if ($y == 0)
	$y = 1;
else
	$y = 2;

echo '
   			<tr class="linha'.$y.'">
      		<td><center>'.$icone_editar.'</center></td>
     		<td><center>'.$icone_excluir.'</center></td>
     		<td><center>'.$cod_ativo.'</center></td>
     		<td>'.$nm_tipo.'</td>
     		<td>'.$nm_subtipo.'</td>
     		<td>'.$dt_entrada.'</td>
     		<td>'.$num_serie.'</td>
	      <td>'.$num_pip.'</td>
		</tr>
';
}		

echo '</table>';		
?>

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.