Ir para conteúdo
Fórum Script Brasil
  • 0

MOSTRAR CAMPO NOME BUSCADO NA VARIÁVEL $_GET['id']


Lucimara Moquenco Canhiato

Pergunta

Alguém consegue me ajudar?

Estou criando uma consulta, e ela funciona direitinho. Ela vem de um link de outra consulta que mostra registros relacionados ao id escolhido. Acontece que consigo mostrar o id na página, mas gostaria de mostrar o nome em vez do id. Até consegui colocar o nome, mas minha consulta começa a não mostrar o 1º registro. Segue o código

 
<?php
$id = $_GET['id'];



 
$result_guias = "SELECT  pac.id_paciente, p.id_posto, t.id_tipo, a.id_atend, g.id_guia, pac.nome_paciente, p.apelido_posto, t.nome_tipo, a.nome_atend, g.dt_cadastro_guia, g.peso_guia, g.alt_guia, g.urg_guia
FROM guia g
INNER JOIN paciente pac ON pac.id_paciente = g.id_paciente
INNER JOIN posto p ON p.id_posto = g.id_posto
INNER JOIN tipo_atend t ON t.id_tipo = g.id_tipo
INNER JOIN atend a ON a.id_atend = g.id_atend
WHERE pac.id_paciente = '$id'";
 
$resultado_guias = mysqli_query($conn, $result_guias);
$nome = mysqli_fetch_array($resultado_guias);
 
if (mysqli_num_rows($resultado_guias) == 0){
 
    echo   "<div class='form col-sm-4 offset-1'>
                <label style='padding-left:100px; margin-top:20px; color:red; font-size:20px'>Nenhuma guia encontrada!</label>
            </div>";
    }else{
       
 
echo '
   
    <div class="container" id="contcadPaciente">
         
       
        <div class="title" id="divTitulo">
            <h3>'.$_GET['id'].'</h3>
            <br>
            <h3>'.$nome['nome_paciente'].'</h3>
            <br>
        </div>
 
        <div class="container">
            <table class="table table-hover table-sm" id="tabela">
                <thead class="thead-dark">
                    <tr>
                    <th scope="col-sm-1" style="text-align: center; width:30px; color:#003893; font-size:12px">Data Cadastro</th>
                    <th scope="col-sm-2" style="text-align: center; width:80px; color:#003893; font-size:12px">Posto Emissor</th>
                    <th scope="col-sm-3" style="text-align: center; width:100px; width:100px; color:#003893; font-size:12px">Tipo Especialidade</th>
                    <th scope="col-sm-3" style="text-align: center; width:100px; width:50px; color:#003893; font-size:12px">Especialidade</th>
                    <th scope="col-sm-1" style="text-align: center; width:20px; color:#003893; font-size:12px">Peso</th>
                    <th scope="col-sm-1" style="text-align: center; width:20px; color:#003893; font-size:12px">Altura</th>
                    <th scope="col-sm-1" style="text-align: center; width:20px; color:#003893; font-size:12px">Urgente</th>
                    <th scope="col-sm-1" style="text-align: center; color:#003893; font-size:12px">Ação</th>
                    </tr>
                </thead>';
 
while ($linha = mysqli_fetch_array($resultado_guias)){
$date = new DateTime($dt_cadastro=$linha['dt_cadastro_guia'] );
$interval = $date->diff( new DateTime( date('Y-m-d') ) );
 
echo'
                <tbody class="" id="tbl_guia">
                    <tr>
                        <td scope="row" style="text-align: center; width:30px; font-size:10px; color:#003893">'. $dt_cadastro = $linha['dt_cadastro_guia'].'</td>
                        <td scope="row" style="text-align: center; width:80px; font-size:10px; color:#003893">'.$id_posto = $linha['apelido_posto'].'</td>
                        <td scope="row" style="text-align: center; text-transform:uppercase; width:100px; font-size:10px; color:#003893">'.$id_tipo = $linha['nome_tipo'].'</td>
                        <td scope="row" style="text-align: center; text-transform:uppercase; width:50px; font-size:10px; color:#003893">'.$id_atend = $linha['nome_atend'].'</td>
                        <td scope="row" style="text-align: center; text-transform:uppercase; width:20px; font-size:10px; color:#003893">'.$peso = $linha['peso_guia'].'</td>
                        <td scope="row" style="text-align: center; text-transform:uppercase; width:20px; font-size:10px; color:#003893">'.$alt = $linha['alt_guia'].'</td>
                        <td scope="row" style="text-align: center; text-transform:uppercase; width:50px; font-size:10px; color:#003893">'.$urg = $linha['urg_guia'].'</td>
                        <td width="15%" style="text-align: center; color:#003893; font-size:10px"><a href=edtPaciente.php?id='.$linha['id_guia'].'>Editar</a> | <a href=pesqGuia.php?id='.$linha['id_guia'].'>Guias</a>
                    </tr>
                </tbody>';
}
echo    '</table>';
 
}
?>
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

O problema está justamente no momento em que você pegou o nome do paciente no primeiro registro, restando apenas as outras guias para serem listadas. Para resolver isso, defini o $nome como o conjunto de todos os registros.

Para pegar o nome do paciente, usei $nome[0]['nome_paciente'], onde [0] é o primeiro registro.

Olhando o resultado final, eu senti uma falta danada do número da guia na relação.

Ao invés de usar while, eu usei foreach:

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" 
  rel="stylesheet">
<?php
$conn=new mysqli("localhost","root","","teste");
if(!isset($_GET['id']))
{
  ?>
  <form>
  Digite o id do Paciente
  <input name=id>
  <input type=submit>
  </form>
  <?php
  exit;
}
$id = $_GET['id']; 
$result_guias = "SELECT  pac.id_paciente, p.id_posto, t.id_tipo, a.id_atend, g.id_guia, 
  pac.nome_paciente, p.apelido_posto, t.nome_tipo, a.nome_atend, g.dt_cadastro_guia,
  g.peso_guia, g.alt_guia, g.urg_guia
FROM guia g
INNER JOIN paciente pac ON pac.id_paciente = g.id_paciente
INNER JOIN posto p ON p.id_posto = g.id_posto
INNER JOIN tipo_atend t ON t.id_tipo = g.id_tipo
INNER JOIN atend a ON a.id_atend = g.id_atend
WHERE pac.id_paciente = '$id'";
 
$resultado_guias = mysqli_query($conn, $result_guias);
$nome = $resultado_guias->fetch_all(MYSQLI_ASSOC);
 
if (mysqli_num_rows($resultado_guias) == 0){
 
    echo   "<div class='form col-sm-4 offset-1'>
                <label style='padding-left:100px; margin-top:20px; color:red; font-size:20px'>Nenhuma guia encontrada!</label>
            </div>";
    }else{
       
 
echo '
   
    <div class="container" id="contcadPaciente">
         
       
        <div class="title" id="divTitulo">
            <h3>'.$_GET['id'].'</h3>
            <br>
            <h3>'.$nome[0]['nome_paciente'].'</h3>
            <br>
        </div>
 
        <div class="container">
            <table class="table table-hover table-sm" id="tabela">
                <thead class="thead-dark">
                    <tr>
                    <th scope="col-sm-1" style="text-align: center; width:30px; color:#003893; font-size:12px">Data Cadastro</th>
                    <th scope="col-sm-2" style="text-align: center; width:80px; color:#003893; font-size:12px">Posto Emissor</th>
                    <th scope="col-sm-3" style="text-align: center; width:100px; width:100px; color:#003893; font-size:12px">Tipo Especialidade</th>
                    <th scope="col-sm-3" style="text-align: center; width:100px; width:50px; color:#003893; font-size:12px">Especialidade</th>
                    <th scope="col-sm-1" style="text-align: center; width:20px; color:#003893; font-size:12px">Peso</th>
                    <th scope="col-sm-1" style="text-align: center; width:20px; color:#003893; font-size:12px">Altura</th>
                    <th scope="col-sm-1" style="text-align: center; width:20px; color:#003893; font-size:12px">Urgente</th>
                    <th scope="col-sm-1" style="text-align: center; color:#003893; font-size:12px">Ação</th>
                    </tr>
                </thead>';
 
foreach($nome as $linha){
$date = new DateTime($dt_cadastro=$linha['dt_cadastro_guia'] );
$interval = $date->diff( new DateTime( date('Y-m-d') ) );
 
echo'
                <tbody class="" id="tbl_guia">
                    <tr>
                        <td scope="row" style="text-align: center; width:30px; font-size:10px; color:#003893">'. $dt_cadastro = $linha['dt_cadastro_guia'].'</td>
                        <td scope="row" style="text-align: center; width:80px; font-size:10px; color:#003893">'.$id_posto = $linha['apelido_posto'].'</td>
                        <td scope="row" style="text-align: center; text-transform:uppercase; width:100px; font-size:10px; color:#003893">'.$id_tipo = $linha['nome_tipo'].'</td>
                        <td scope="row" style="text-align: center; text-transform:uppercase; width:50px; font-size:10px; color:#003893">'.$id_atend = $linha['nome_atend'].'</td>
                        <td scope="row" style="text-align: center; text-transform:uppercase; width:20px; font-size:10px; color:#003893">'.$peso = $linha['peso_guia'].'</td>
                        <td scope="row" style="text-align: center; text-transform:uppercase; width:20px; font-size:10px; color:#003893">'.$alt = $linha['alt_guia'].'</td>
                        <td scope="row" style="text-align: center; text-transform:uppercase; width:50px; font-size:10px; color:#003893">'.$urg = $linha['urg_guia'].'</td>
                        <td width="15%" style="text-align: center; color:#003893; font-size:10px"><a href=edtPaciente.php?id='.$linha['id_guia'].'>Editar</a> | <a href=pesqGuia.php?id='.$linha['id_guia'].'>Guias</a>
                    </tr>
                </tbody>';
}
echo    '</table>';
 
}
?>



 

Captura de tela 2024-10-26 015612.png

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

  • 0

Obrigada pela ajuda Frank.

O problema não foi resolvido.

Se eu não declaro:

 $nome = mysqli_fetch_array($resultado_guias);

Não consigo buscar o nome do paciente. Mas ele mostra todas as guias cadastradas para o paciente.

Se eu faço essa declaração, ele não mostra o 1º registro.

Quanto a colocar o peso e altura no cadastro do paciente, para mim não funciona, pois o peso pode alterar quando cadastrar a guia. Prefiro que esta informação fique atrelada à guia.

O tipo de atendimento no caso seria "Exame, Consulta ou Procedimento", por isso criei uma tabela separada.

você tirou o while que estava no meu código, assim ele mostra somente 1 registro. Preciso que ele mostre todas as guias cadastradas para aquele paciente.

Consegue me ajudar?

Link para o comentário
Compartilhar em outros sites

  • 0

Gostei desse trabalho! Eu aprendi bastante com ele.

Pensei que era possível separar as consultas, mas não consegui o resultado desejado, as tabelas precisam ser ajuntadas mesmo.

Gostaria de sugerir a seguinte nomenclatura nos campos das tabelas, ao invés de

posto (id_posto,apelido_posto) o melhor é

posto(id,apelido). Acrescentar um sufixo com o nome da tabela é redundante.

Finalmente, a minha nova sugestão, preservando a sua estrutura de tabela:

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" 
  rel="stylesheet">
<?php
/*
mysql
guia (id_guia,dt_cadastro_guia,id_tipo,id_atend,id_paciente,peso_guia,alt_guia,urg_guia,id_posto)
     (1,2024-10-25,1,1,1,60,1.6,1,1)(2,2024-10-25,2,1,1,60,1.6,1,1)(3,2024-10-25,3,1,1,60,1.6,1,1)
tipo_atend (id_tipo,nome_tipo)(1,Exame)(2,Consulta)(3,Procedimento)
atend (id_atend,nome_atend)(1,Dr House)
posto (id_posto,apelido_posto) (1,UBS Centro)
paciente (id_paciente,nome_paciente)(1,Frank)
*/
$conn=new mysqli("localhost","root","","teste");
if(!isset($_GET['id']))
{
  ?>
  <div class='h-25'></div>
  <form class='form-control w-25 m-auto'>
    Digite o id do Paciente
    <p>
    <input name=id class=control>
    <p>
    <input type=submit class=control>
  </form>
  <?php
  exit;
}
$id = $_GET['id']; 
$previa=$conn->query("select * from guia g
  inner join paciente pac on pac.id_paciente = g.id_paciente
  inner join posto p on p.id_posto = g.id_posto
  inner join tipo_atend t on t.id_tipo = g.id_tipo
  inner join atend a on a.id_atend = g.id_atend
  where pac.id_paciente=$id");
if (!$previa->num_rows)
{
  ?>
  <div class="w-50 m-auto">
    <label class="mt-5 text-danger h3">
      Nenhum paciente encontrado com o id <?=$id?>!
    </label>
  </div>
  <?php
} else  {
  $guia=$previa->fetch_all(MYSQLI_ASSOC);

  ?>
  <div class="container mt-5">
    <div class="title">
      <h3>Paciente <?=$guia[0]['id_paciente']." ".$guia[0]['nome_paciente']?></h3>
    </div>
    <table class='table table-hover table-sm'>
        <tr>
          <th class='bg-dark text-white border border-white'>Data Cadastro
          <th class='bg-dark text-white border border-white'>Posto Emissor
          <th class='bg-dark text-white border border-white'>Tipo Especialidade
          <th class='bg-dark text-white border border-white'>Especialidade
          <th class='bg-dark text-white border border-white'>Peso
          <th class='bg-dark text-white border border-white'>Altura
          <th class='bg-dark text-white border border-white'>Urgente
          <th class='bg-dark text-white border border-white'>Ação
      <?php foreach($guia as $guia): 
        /* rotina a ser usada onde? 
        $date = new DateTime($dt_cadastro=$linha['dt_cadastro_guia'] );
        $interval = $date->diff( new DateTime( date('Y-m-d') ) );
        */
      ?>
        <tr>
          <td><?=$guia['dt_cadastro_guia']?>
          <td><?=$guia['apelido_posto']?>
          <td><?=$guia['nome_tipo']?>
          <td><?=$guia['nome_atend']?>
          <td><?=$guia['peso_guia']?>
          <td><?=$guia['alt_guia']?>
          <td><?=$guia['urg_guia']?>
          <td><a href="edtPaciente.php?id=<?=$guia['id_guia']?>">Editar</a> 
            | <a href=pesqGuia.php>Guias</a>
      <?php endforeach; 
      echo '</table></div>';
}
?>

 

 

Captura de tela 2024-10-26 122024.png

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...