Ir ao conteúdo

Posts recomendados

Postado

Gente, é o seguinte, no dever da professora ela pediu pra criar um site e pediu pra fazer uma listagem dos dados que estão no banco, mas eu nao quero que apareça o id das chaves estrangeiras, mas o nome delas, por exemplo, nao quero que mostre o id do autor e do tradutor, mas o nome do autor e do tradutor, eu tentei usar inner join olhando na internet mas nao consegui. Agradeceria se alguem me ajudar com isso. 

to colocando a imagem do do diagrama do banco e o codigo do arquivo php responsavel pela listagem do jeito que tava antes, mostrando os id's.

<html>
 <head><title>Listagem NovelCN</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  
 </head>

  <body>

    <?php

    $con=mysqli_connect("localhost","root","","trabalhophp");

    if (mysqli_connect_errno())
      { echo "Failed to connect to MySQL:".mysqli_connect_error();}

    $result=mysqli_query($con, "SELECT * FROM novelchinesa");

    ?>

    <p> <center>

    <table border="2" bordercolor="blue">

    <tr>

      <th>Id</th>
      <th>Titulo</th> 
      <th>Ano</th> 
      <th>Descrição</th> 
	  <th>Gênero</th>
  	  <th>Idioma</th>
	  <th>Autor</th>
      <th>Tradutor</th>
      <th>Deleta</th>
      <th>Alt</th>


    </tr>

    <?php while($row = mysqli_fetch_array($result)){?>


    <tr>  

    <td><?php echo $row['idNovel']; ?>  </td>  
    <td><?php echo $row['titulo']; ?></td>
    <td><?php echo $row['ano']; ?> </td>
    <td><?php echo $row['descricao']; ?></td>
    <td><?php echo $row['genero']; ?></td>  
    <td><?php echo $row['idioma']; ?></td>  
    <td><?php echo $row['Autor_idAutor']; ?></td>  
    <td><?php echo $row['Tradutor_idTradutor']; ?></td>  

    <td>
      <form action="realizadelnovelcn.php" method="post">
      <input type="hidden" name="id" value="<?php echo $row["id"]; ?>"/>
      <button type="submit" name="botdelnovelcn" value="ok">Del</button>
      </form>
    </td>

    <td>
      <form action="formaltnovelcn.php" method="post">
      <input type="hidden" name="id" value="<?php echo $row["id"]; ?>"/>
      <button type="submit" name="botaltnovelcn" value="ok">Alt</button>
      </form>
    </td>
    </tr>

        <?php }   mysqli_close($con);?>  

   </table></p>


   <center><h2><a href="index.php"><button>VOLTAR</button></a></h2></center>






</body>
</html>


 

diagrama.PNG

  • Moderador
Postado

@Lucio Carvalho Olá, 

Então. A solução é mesmo usar INNER JOIN.

Porém para dar certo é necessário que as tabelas na qual você fará a consulta tenha um índice para ele.(index)

 

Basicamente a sua consulta deveria ser:

SELECT
      NovelChinesa.titulo,
      NovelChinesa.ano,
      NovelChinesa.descricao,
      NovelChinesa.genero,
      NovelChinesa.idioma,
      Autor.nome,
      Tradutor.nome
FROM NovelChinesa
INNER JOIN Autor ON Autor.idAutor = NovelChinesa.Autor_idAutor
INNER JOIN Tradutor ON Tradutor.idTradutor = NovelChinesa.Tradutor_idTradutor 

No inner join, você deve associar id da tabela que é chave primária com o id da chave estrangeira.

 

Você fará esta mesma consulta mas trocando o NovelChinesa por NovelCoreana. 

 

Se você quiser ter um banco melhor modelado, deve-se criar uma tabela para o tipo de novel por exemplo tipo_novel, no caso Chinesa ou Coreana e incluir os ids na tabela que for fazer a consulta.

Destrinchar as tabelas,faz parte das normas formais.

  • Curtir 1
Postado

eu estou com 2 dúvidas, 

uma é com relação ao inner join, em um post anterior alguem me explicou e ate me deu o codigo, eu não vi problema no codigo, contudo ele duplica os dados.

eu tenho primeiro o nome do autor e depois o nome do tradutor, mas ta mostrando o nome do tradutor no campo de autor e  no campo do tradutor.

 

a segunda dúvida que tenho é sobre usar php pra alterar dados no formulario, como :

                     

   <tr>
                            <td>Nome:</td> 
                        <td>
                            <input type="text" name="nome" value="<?php    
                            echo $row['nome']; ?>" />    
                        </td>
                        </tr>

onde vai no formulario mostrar o nome ja cadastrado, mas e se eu quiser usar isso pra select que ja tem um php pra pegar dados do banco? Alguem tem um bom site ou conteudo pra eu estudar sobre isso?

 

segue o código pra listar os dados com inner join:

 

<html>
 <head><title>Listagem NovelCN</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  
 </head>

  <body>

    <?php

    $con=mysqli_connect("localhost","root","","trabalhophp");

    if (mysqli_connect_errno())
      { echo "Failed to connect to MySQL:".mysqli_connect_error();}

    $result=mysqli_query($con,"SELECT
      NovelChinesa.titulo,
      NovelChinesa.ano,
      NovelChinesa.descricao,
      NovelChinesa.genero,
      NovelChinesa.idioma,
      autor.nome,
      tradutor.nome
    FROM NovelChinesa
    INNER JOIN autor ON autor.idAutor = novelchinesa.Autor_idAutor	
    INNER JOIN tradutor ON tradutor.idTradutor = novelchinesa.Tradutor_idTradutor");

    ?>

    <p> <center>

    <table border="2" bordercolor="blue">

    <tr>

 
      <th>Titulo</th> 
      <th>Ano</th> 
      <th>Descrição</th> 
	  <th>Gênero</th>
  	  <th>Idioma</th>
	  <th>Autor</th>
      <th>Tradutor</th>
      <th>Deleta</th>
      <th>Alt</th>


    </tr>

    <?php while($row = mysqli_fetch_array($result)){?>


    <tr>  

 
    <td><?php echo $row['titulo']; ?></td>
    <td><?php echo $row['ano']; ?> </td>
    <td><?php echo $row['descricao']; ?></td>
    <td><?php echo $row['genero']; ?></td>  
    <td><?php echo $row['idioma']; ?></td>  
    <td><?php echo $row['nome']; ?></td>  
    <td><?php echo $row['nome']; ?></td>  

    <td>
      <form action="realizadelnovelcn.php" method="post">
      <input type="hidden" name="id" value="<?php echo $row["id"]; ?>"/>
      <button type="submit" name="botdelnovelcn" value="ok">Del</button>
      </form>
    </td>

    <td>
      <form action="formaltnovelcn.php" method="post">
      <input type="hidden" name="id" value="<?php echo $row["id"]; ?>"/>
      <button type="submit" name="botaltnovelcn" value="ok">Alt</button>
      </form>
    </td>
    </tr>

        <?php }   mysqli_close($con);?>  

   </table></p>


   <center><h2><a href="index.php"><button>VOLTAR</button></a></h2></center>






</body>
</html>


 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...