Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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](http://localhost/phpmyadmin/sql.php?db=odontologia&table=t&sql_query=SELECT+t.idtratamento%2Ct.idprocedimento%2Cc.nome+as+cliente%2Cd.iddentista%2Cd.nome+as+dentista%2Cp.descricao+as+procedimento%0D%0AFROM+tratamento+t+%0D%0AINNER+JOIN+clientes+c+ON+t.idcliente+%3D+c.idcliente+%0D%0AINNER+JOIN+dentista+d+ON+d.iddentista+%3D+t.iddentista+%0D%0AINNER+JOIN+procedimento+p+ON+p.idprocedimento+%3D+t.idprocedimento+%0D%0Awhere+t.idcliente+%3D+1+and+p.idprocedimento+in+%28t.idprocedimento%29++%0AORDER+BY+%60t%60.%60idtratamento%60+ASC&session_max_rows=25&is_browse_distinct=0&token=20c4f3cf27c8b95a06cdafbcc533633c)
[idprocedimento](http://localhost/phpmyadmin/sql.php?db=odontologia&table=t&sql_query=SELECT+t.idtratamento%2Ct.idprocedimento%2Cc.nome+as+cliente%2Cd.iddentista%2Cd.nome+as+dentista%2Cp.descricao+as+procedimento%0D%0AFROM+tratamento+t+%0D%0AINNER+JOIN+clientes+c+ON+t.idcliente+%3D+c.idcliente+%0D%0AINNER+JOIN+dentista+d+ON+d.iddentista+%3D+t.iddentista+%0D%0AINNER+JOIN+procedimento+p+ON+p.idprocedimento+%3D+t.idprocedimento+%0D%0Awhere+t.idcliente+%3D+1+and+p.idprocedimento+in+%28t.idprocedimento%29++%0AORDER+BY+%60t%60.%60idprocedimento%60+ASC&session_max_rows=25&is_browse_distinct=0&token=20c4f3cf27c8b95a06cdafbcc533633c)
[cliente](http://localhost/phpmyadmin/sql.php?db=odontologia&table=t&sql_query=SELECT+t.idtratamento%2Ct.idprocedimento%2Cc.nome+as+cliente%2Cd.iddentista%2Cd.nome+as+dentista%2Cp.descricao+as+procedimento%0D%0AFROM+tratamento+t+%0D%0AINNER+JOIN+clientes+c+ON+t.idcliente+%3D+c.idcliente+%0D%0AINNER+JOIN+dentista+d+ON+d.iddentista+%3D+t.iddentista+%0D%0AINNER+JOIN+procedimento+p+ON+p.idprocedimento+%3D+t.idprocedimento+%0D%0Awhere+t.idcliente+%3D+1+and+p.idprocedimento+in+%28t.idprocedimento%29++%0AORDER+BY+%60cliente%60+ASC&session_max_rows=25&is_browse_distinct=0&token=20c4f3cf27c8b95a06cdafbcc533633c)
[iddentista](http://localhost/phpmyadmin/sql.php?db=odontologia&table=t&sql_query=SELECT+t.idtratamento%2Ct.idprocedimento%2Cc.nome+as+cliente%2Cd.iddentista%2Cd.nome+as+dentista%2Cp.descricao+as+procedimento%0D%0AFROM+tratamento+t+%0D%0AINNER+JOIN+clientes+c+ON+t.idcliente+%3D+c.idcliente+%0D%0AINNER+JOIN+dentista+d+ON+d.iddentista+%3D+t.iddentista+%0D%0AINNER+JOIN+procedimento+p+ON+p.idprocedimento+%3D+t.idprocedimento+%0D%0Awhere+t.idcliente+%3D+1+and+p.idprocedimento+in+%28t.idprocedimento%29++%0AORDER+BY+%60d%60.%60iddentista%60+ASC&session_max_rows=25&is_browse_distinct=0&token=20c4f3cf27c8b95a06cdafbcc533633c)
[dentista](http://localhost/phpmyadmin/sql.php?db=odontologia&table=t&sql_query=SELECT+t.idtratamento%2Ct.idprocedimento%2Cc.nome+as+cliente%2Cd.iddentista%2Cd.nome+as+dentista%2Cp.descricao+as+procedimento%0D%0AFROM+tratamento+t+%0D%0AINNER+JOIN+clientes+c+ON+t.idcliente+%3D+c.idcliente+%0D%0AINNER+JOIN+dentista+d+ON+d.iddentista+%3D+t.iddentista+%0D%0AINNER+JOIN+procedimento+p+ON+p.idprocedimento+%3D+t.idprocedimento+%0D%0Awhere+t.idcliente+%3D+1+and+p.idprocedimento+in+%28t.idprocedimento%29++%0AORDER+BY+%60dentista%60+ASC&session_max_rows=25&is_browse_distinct=0&token=20c4f3cf27c8b95a06cdafbcc533633c)
[procedimento](http://localhost/phpmyadmin/sql.php?db=odontologia&table=t&sql_query=SELECT+t.idtratamento%2Ct.idprocedimento%2Cc.nome+as+cliente%2Cd.iddentista%2Cd.nome+as+dentista%2Cp.descricao+as+procedimento%0D%0AFROM+tratamento+t+%0D%0AINNER+JOIN+clientes+c+ON+t.idcliente+%3D+c.idcliente+%0D%0AINNER+JOIN+dentista+d+ON+d.iddentista+%3D+t.iddentista+%0D%0AINNER+JOIN+procedimento+p+ON+p.idprocedimento+%3D+t.idprocedimento+%0D%0Awhere+t.idcliente+%3D+1+and+p.idprocedimento+in+%28t.idprocedimento%29++%0AORDER+BY+%60procedimento%60+ASC&session_max_rows=25&is_browse_distinct=0&token=20c4f3cf27c8b95a06cdafbcc533633c)
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?>
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
Canalse 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....
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