Ir para conteúdo
maruanbredoff

Retornar consulta com campo array

Recommended Posts

Boa tarde pessoal,

Estou com quebrando a cabeça com uma situação no meu sistema.

No sistema eu tenho uma tabela tratamento, clientes, dentista e procedimento. 

Dentro do sistema tenho uma tela onde a pessoa vai cadastrar o tratamento para o paciente e nessa tela a pessoa escolhe quais os procedimento, e qual o dentista que vai realizar.

O campo idprocedimento é um array pois o mesmo tratamento pode ter varios procedimentos.

 

O meu problema está em apresentar esses dados do array na tabela. o Select é esse a seguir

 

SELECT t.idtratamento,t.idprocedimento,c.idcliente,c.nome as cliente,d.iddentista,d.nome as dentista,p.descricao as procedimento,t.idtratamento,t.datainicio,t.obs,t.status_tratamento

FROM tratamento t

INNER JOIN clientes c ON t.idcliente = c.idcliente

INNER JOIN dentista d ON d.iddentista = t.iddentista

INNER JOIN procedimento p ON p.idprocedimento = t.idprocedimento

where t.idcliente = 1 and p.idprocedimento in (t.idprocedimento)

 

Com esse select o retorno é o seguinte:

idtratamento idprocedimento cliente iddentista dentista procedimento  
76 260 Paciente teste 1 Dentista Teste Aparelho extra-bucal
77 31,5,6 Paciente teste 1 Dentista Teste Alveoloplastia 

 

Como podem ver, o campo idprocedimento está caindo junto no array, eu queria separar e em vez de 1 linha na tabela aparecesse 3 linhas com esses procedimentos separados. Alguem pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

se a sua intenção é exibir esses dados na tela você pode transformar o conteúdo da coluna idprocedimento em um array, depois na hora de apresentar os procedimentos você faz outra consulta buscando a descição do procedimento através da id ex:

//tempId seria o conteúdo da coluna idprocedimento
$tempId =  "3,4,5";

//transforma em array
$arrayId = explode(",",$tempId);

//percorre esse array para ir buscar na tabela de procedimentos a descrição
foreach($arrayId as $id){
    //faz a query buscando a descrição atravez do id e imprime
    //esses echo´s abaixo são só para propósito de teste, você faz o que quiser com o resultado
	echo $id;
    echo "<br>";
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, Sergio S. F. Pereira disse:

se a sua intenção é exibir esses dados na tela você pode transformar o conteúdo da coluna idprocedimento em um array, depois na hora de apresentar os procedimentos você faz outra consulta buscando a descição do procedimento através da id ex:


//tempId seria o conteúdo da coluna idprocedimento
$tempId =  "3,4,5";

//transforma em array
$arrayId = explode(",",$tempId);

//percorre esse array para ir buscar na tabela de procedimentos a descrição
foreach($arrayId as $id){
    //faz a query buscando a descrição atravez do id e imprime
    //esses echo´s abaixo são só para propósito de teste, você faz o que quiser com o resultado
	echo $id;
    echo "<br>";
}

Vou testar aqui Sergio.

Dessa forma que você esta falando o resultado sairia tipo isso?

idtratamento    idprocedimento          cliente               iddentista          Dentista                    Procedimento

    76                           260                  Paciente teste               1               Dentista Teste         Aparelho extra-bucal
    77                           31                       Paciente teste               1               Dentista Teste         Alveoloplastia 
    76                           5                         Paciente teste               1               Dentista Teste         Carie
    77                           6                         Paciente teste               1               Dentista Teste         Canal 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

se você começar a exibir os resultados de dentro foreach sim

while($row = $rs->fetch(PDO::FETCH_ASSOC)){
	foreach($arrayId as $id){
		echo $row["idtratamento"];
		echo $id; //idprocedimento
		echo $row["cliente"];
		echo $row["iddentista"];
		echo $row["dentista"];
		
		$rs2 = $con->prepare("SELECT descricao_procedimento FROM tabela_procedimentos WHERE id_procedimento = '$id'");
		$rs2->execute();
        
		while($row2 = $rs2->fetch(PDO::FETCH_ASSOC)){
			echo $row2["descricao_procedimento"];
		}
	}
}

é lógico que isso é só um exemplo, daí você tem que adaptar ao seu modelo, tipo de conexão, nome da tabela, nome das colunas....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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

  • Conteúdo Similar

    • Por JOSELUISALD
      Bom dia. Em minha aplicação o cliente quer uma cópia de seu sistema localmente e remoto (hospedado). Tem como eu fazer a sincronização dos bancos de dados, para que tudo que seja feito localmente seja inserido automaticamente no banco remoto? Desde já obrigado.
    • Por Hannah25
      Eu estou criando um cms, encontrei algumas barreiras para concluir o projeto, alguém sabe como o wordpress substitui a função include pelas abreviações: wp_header(), wp_footer() e wp_ ?
      joker123 หวยหุ้น
      Seja lá o que for esta bem escondido naquele código enorme : (  
      Se alguém souber me ajude a criar essa função! ou uma alternativa sem ser a tradicional include uma personalizada...
    • Por Paulo Oliveira Albuquerque
      Ola pessoal
      Eu criei o meu codigo para listar os modulos de uma tabela do banco de dados
       
         ele funciona certo
       
        Só que neste código eu quero que ele me faz uma contagem do nome da tabela que onde esta os nome preciso para a listagem
       Ex:
      /// TABELA DO MODULO ///
      id      nome                            url                status      tabela    cor_bloco
      1      Nome da cidade       city.php           S            city            blue
      2      Nome da cidade2     city2.php         S           city2          blue
       
      Obs: Esta TABELA e as das cidades que quero que faz a contagem de quantos registro tem nela
       
      No php fiz assim
      <?php /* Connect To Database*/ require_once ("../conexion.php"); mysqli_set_charset($con,"utf8"); $action = (isset($_REQUEST['action'])&& $_REQUEST['action'] !=NULL)?$_REQUEST['action']:''; if($action == 'ajax'){ $query = mysqli_real_escape_string($con,(strip_tags($_REQUEST['query'], ENT_QUOTES))); $tables="modulos"; $campos="*"; $sWhere=" modulos.tabela LIKE '%".$query."%' OR modulos.nome LIKE '%".$query."%' OR modulos.id LIKE '%".$query."%'"; $sWhere.=" order by modulos.id DESC"; $tables1="modulos"; $campos1="*"; $sWhere1=" modulos.tabela"; //$sWhere1.=" order by modulos.id"; include 'pagination.php'; //include pagination file //pagination variables $page = (isset($_REQUEST['page']) && !empty($_REQUEST['page']))?$_REQUEST['page']:1; $per_page = intval($_REQUEST['per_page']); //how much records you want to show $adjacents = 10; //gap between pages after number of adjacents $offset = ($page - 1) * $per_page; //Count the total number of row in your table*/ $count_query = mysqli_query($con,"SELECT count(*) AS numrows FROM $tables where $sWhere "); if ($row= mysqli_fetch_array($count_query)){$numrows = $row['numrows'];} else {echo mysqli_error($con);} $total_pages = ceil($numrows/$per_page); //main query to fetch the data $query = mysqli_query($con,"SELECT $campos FROM $tables where $sWhere LIMIT $offset,$per_page"); //loop through fetched data if ($numrows>0){ ?> <?php //Contatar o total numeros das tabelas*/ $query = mysqli_query($con,"SELECT count(*) AS numrows FROM $sWhere1 "); if ($row= mysqli_fetch_array($query)){$numrows = $row['numrows'];} else {echo mysqli_error($con);} $contagem = ceil($numrows); //main query to fetch the data $query = mysqli_query($con,"SELECT $campos1 FROM $sWhere1"); //loop through fetched data if ($numrows>0){ ?>      
      <section class="content"> <!-- Small boxes (Stat box) --> <div class="row"> <?php $finales=0; while($modulos = mysqli_fetch_array($query)){ $id = $modulos['id']; $nome = $modulos['nome']; $url = $modulos['url']; $tabela = $modulos['tabela']; $cor_blocos = $modulos['cor_blocos']; $icone = $modulos['icone']; $status = '1'; $finales++; ?> <div class="col-lg-3 col-xs-6"> <!-- small box --> <div class="small-box bg-<?php echo ConfigPainel('cor_blocos'); ?>"> <div class="inner"> <h3><?php echo $contagem; ?></h3> <!-- AQUI É CONTADOR --> <p><?php echo $modulos['nome']; ?></p> </div> <div class="icon"> <i class="fa <?php echo $modulos['icone']; ?>"></i> </div> <a href="<?php echo $modulos['url']; ?>" class="small-box-footer">Gerenciar de Modulo <i class="fa <?php echo $modulos['icone']; ?>"></i></a> </div> </div> <!-- ./col --> <?php } } ?> <div class="col-md-12"> <div class="form-control"> <?php $inicios=$offset+1; $finales+=$inicios -1; echo "Mostrando $inicios al $finales de $numrows registros"; echo paginate( $page, $total_pages, $adjacents); ?> </div> </div> </div> <?php } } ?> </section>  
    • Por Nodio
      Olá todos, vejam a duvida
       
      O código original é:
      <ol-class="carousel-indicators"> <li data-target="#mainslider" data-slide-to="0" class="active"></li> <li data-target="#mainslider" data-slide-to="1"></li> <li data-target="#mainslider" data-slide-to="2"></li> <li data-target="#mainslider" data-slide-to="3"></li> </ol> ai ei quero pegar o numero de registro de um mysql e emular o data-slide-to
       
      <?php echo '<ol class="carousel-indicators">'; echo '<li data-target="#mainslider" data-slide-to="0" class="active"></li>'; $conta = mysqli_query($conn, "SELECT * FROM inicio"); if(mysqli_num_rows($conta) == false){ echo '<div align="center"><br /><strong>Nenhum cliente encontrado.</strong><br /></div>'; }else{ $i=0; while($ln = mysqli_fetch_object($conta)){ if ($i === 0) echo '</ol>'; ?> <li data-target="#mainslider" data-slide-to="<?php echo '$i'; ?>"></li> <?php $i++; if ($i === 5) { echo '</ol>'; } else { if ($i > 0){ echo '</ol>'; } } } } ?>  
      mas quando passa pro html, ele não reconhece a variavel e a source fica assim:
       
      <!-- Indicators --> <ol class="carousel-indicators"><li data-target="#mainslider" data-slide-to="0" class="active"></li></ol> <li data-target="#mainslider" data-slide-to="$i"></li> </ol> <li data-target="#mainslider" data-slide-to="$i"></li> </ol> Alguem pode me dar uma luz?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.