Ir para conteúdo

POWERED BY:

Arquivado

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

souzvidal

INNER JOIN limitando resultados no php

Recommended Posts

Olá Pessoal,

Ando enfrentando um problema. Preciso apresentar dados de duas tabelas diferentes, tudo inicia com um cadastro de pessoa que as chamo de membros e essa pessoa podem ter nenhum ou mais filhos, então criei no banco duas tabelas membro e membro_filho. Quando vou recuperar esses dados no php para apresentar o cadastro da pessoa fiz a seguinte página:

 

<?php 

//Inicializa Variáveis

/*-----------------------------------------------------------*/

include 'inicializaVariaveis.php';

/*-----------------------------------------------------------*/

?>
<html lang="pt-BR">

<?php include 'head.php';?>

<body>


  <div id="wrap"> 
    <div class="bs-header">
      <div class="container">
      </div>

      <section class="ss-style-zigzag"></section>
    </div><div class="container">

    <br>
    <header>

      <center><h1 style="font-size:25px"><b>Igreja Presbiteriana Betel - Escola dominical</b></h1></center><br>

      <?php include 'conectadocomo.php';?><br><br>

    </header>

    <br><br>


    <?php include 'menu.php';?>

    <div> </div>

    <div id="main-content" class="jumbotron panel panel-default">

      <div id="logo"> 

        <legend class="text-center header">Informação de membro</legend>

        <table class="table table-striped table-bordered" cellspacing="0" cellpadding="5" border="1" align="center" width="100%">

          <tbody>

        <?php 

          if(isset($_GET['idmembro'])){


            $query= mysql_query('SELECT * FROM membro WHERE flagativo="1" AND ID="'.$_GET['idmembro'].'"');


            $retorno= mysql_fetch_array($query); 

            $query2=mysql_query("SELECT * FROM membro_filho INNER JOIN membro ON membro_filho.IDMembro=membro.ID WHERE membro.ID=".$_GET['idmembro']);

            $retorno2=mysql_fetch_assoc($query2); 

            $qtde = mysql_num_rows($query2);         

          }
          print_r($retorno2);
         ?>
              <tr>
                <td>NOME:</td>
                <td><?php echo $retorno['nome'];?></td>
              </tr>
              <tr>
                <td>CEP:</td>
                <td><?php echo $retorno['cep'];?></td>
              </tr>
              <tr>
                <td>ENDEREÇO:</td>
                <td><?php echo $retorno['endereco'];?></td>
              </tr>
              <tr>
                <td>NÚMERO:</td>
                <td><?php echo $retorno['numero'];?></td>
              </tr>
              <tr>
                <td>BAIRRO:</td>
                <td><?php echo $retorno['bairro'];?></td>
              </tr>
              <tr>
                <td>CIDADE:</td>
                <td><?php echo $retorno['cidade'];?></td>
              </tr>
              <tr>
                <td>UF:</td>
                <td><?php echo $retorno['uf'];?></td>
              </tr>
              <tr>
                <td>E-MAIL:</td>
                <td><?php echo $retorno['email'];?></td>
              </tr>
              <tr>
                <td>TELEFONE:</td>
                <td><?php echo $retorno['telefone'];?></td>
              </tr>
              
              <tr>
                <td>CELULAR:</td>
                <td><?php echo $retorno['celular'];?></td>
              </tr>
              <tr>
                <td>DATA DE NASCIMENTO:</td>
                <td><?php echo date('d-m-Y',strtotime(str_replace('-','/',$retorno['datanascimento'])));?></td>
              </tr>
              <tr>
                <td>NOME DO CÔNJUGE:</td>
                <td><?php echo $retorno['nomeconjuge'];?></td>
              </tr>
              <tr>
                <td>E - MAIL DO CÔNJUGE:</td>
                <td><?php echo $retorno['emailC'];?></td>
              </tr>
              <tr>
                <td>DATA DE CASAMENTO:</td>
                <td><?php echo date('d-m-Y',strtotime(str_replace('-','/',$retorno['datacasamento'])));?></td>
              </tr>

              <?php 

              

              if($retorno2){
                $i=1;
                while($i<=$qtde){
                echo  
              '<tr>'.
                '<td>NOME DO FILHO:</td>'.
                '<td>'.$retorno2['nomefilho'].'</td>'.
              '</tr>'.
              '<tr>'.
                '<td>E-MAIL DO FILHO:</td>'.
                '<td>'.$retorno2['emailfilho'].'</td>'.
              '</tr>';
              $i++;
                }
              }else{

              }


                ?>

            </tbody>
          </table>

      </div>

    </div><br><br></div>


    <?php include 'rodape.php';?>

  </body>

  <!-------------------------------------------------------------->

  </html>

O problema é que a query2 está vindo limitada ela só traz o primeiro filho no mysql_fetch_assoc e quando quando dou um mysql_num_rows ele mostrado dois, segue parte no código com print_r e var_dump:
$query2=mysql_query("SELECT * FROM membro_filho INNER JOIN membro ON membro_filho.IDMembro=membro.ID WHERE membro.ID=".$_GET['idmembro']);

            $retorno2=mysql_fetch_assoc($query2); 

            $qtde = mysql_num_rows($query2);         

          }
          print_r($retorno2);

          var_dump($qtde);
Estou utilizando php puro, já aconteceu algo parecido com alguém ?
Desde já agradeço a ajuda e as dicas.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, não entendi essa sua JOIN ai.

Se você já tem o id do membro, basta montar uma query simples para o filho. Ex:

SELECT * FROM membro_filho WHERE IDMembro =".$_GET['idmembro']

Pronto, assim ele vai te trazer todos os filhos do membro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acabou ficando a mesma coisa...

 

Olha o que trouxe no resultado do print_r com o mysql_fetch_assoc:

 

Array ([iD] => 43 [nomefilho => danielfilho1 [emailfilho] => danielfilho1@email.com [flagativo] => 1 {IDMembro] => 73)

 

E no var_dump mostra que trouxe dois com o mysql_num_rows:

 

int(2)

 

Não traz as duas consultas vindas da query do mysql_fetch_assoc.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque o mysql_fetch_assoc por mysql_fetch_array

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tinha tentado isso anteriormente com a query antiga e agora o mesmo resultado, só traz a primeira linha, segue resultado:

 

Array ( [0] => 43 [iD] => 43 [1] => danielfilho1 [nomefilho] => danielfilho1 [2] => danielfilho1@email.com [emailfilho] => danielfilho1@email.com [3] => 1 [flagativo] => 1 [4] => 73 [iDMembro] => 73 ) int(2)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, se você der um var_dump ou até mesmo um print_r no mysql_fetch_array ou assoc, ele só vai mostrar o primeiro mesmo.

Para pegar tudo o que ele traz, tem que colocá-lo em um while. Ex:

while( $row = mysql_fetch_array($resultado)){
echo $row['nomefilho'] .'<br>';
}

Assim você terá todos os registros trazidos pela query.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu certo!!! Obrigado pela ajuda, era isso estava fazendo o while errado, deu certo puxando o mysql_fetch_array direto nele na clausula:

while($retorno2=mysql_fetch_array($query2)){
echo
'<tr>'.
'<td>'.$retorno2['nomefilho'].'</td>'.
'</tr>'.

...

}

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.