Jump to content
edupoli

Ajuda com Datatable

Recommended Posts

Amigos preciso de uma ajuda

 

Em um sistema, tenho uma TABELA HTML que é populada com dados do BD através de consultas XMLHttpRequest. exemplificando o cenário tenho:

Uma pagina chamada ListarExames.php  e outra pagina Busca.php onde no arquivo busca.php está toda a logica com as consultas SQL e o resultado da busca é carregado em uma <div> na pagina ListarExames.php. tudo esta funcionando corretamente, entretanto como algumas vezes como são retornados Muitos resultados na listagem, eu gostaria de fazer com que a tabela que é carregada dinamicamente na <div> virasse um DataTable e não uma tabela simples HTML. 

 

Abaixo segue código da função que dispara a busca

[javascript]

function buscarExames(inicio,pagina){
    var numCamposForm=document.filtros.length;
    var array_campos = "";
    for (i=0;i<numCamposForm;i++){
        array_campos=array_campos+document.filtros.id+"="+document.filtros.value.toUpperCase()+"&";
    }
    var valor=array_campos.substring(0,(array_campos.length - 1));
    if(valor == '' || valor == ' ')
        exit;
    if(window.XMLHttpRequest) {
           req = new XMLHttpRequest();
    }
    else if(window.ActiveXObject){
           req = new ActiveXObject("Microsoft.XMLHTTP");
    }
   var url = "busca.php?"+valor+"&inicio="+inicio+"&pagina="+pagina;
    req.open("Get", url, true);
   req.onreadystatechange = function() {
        if(req.readyState == 1) {
            document.getElementById('resultado').innerHTML = 'Buscando Exames...';
        }
        if(req.readyState == 4 && req.status == 200) {
             var resposta = req.responseText;
             document.getElementById('resultado').innerHTML = resposta;
        }
    }
    req.send(null);
}

  [/javascript]

na pagina ListarExames.php temos



<div id="resultado"></div> 

  

a tabela é montada no busca.php e possui um id="dcm"

 



echo'<table id="dcm" class="table display data-results table-condensed table-sm table-hover" cellspacing="0" style="background-color: #ffffff">';
        echo'<thead>';
        echo'<tr>';
          echo'<th>Nº PACIENTE</th>';   
          echo'<th>NOME DO PACIENTE</th>';
          echo'<th>SEXO</th>';
          echo'<th>DATA DO EXAME</th>';
          echo'<th>TIPO DE EXAME</th>';
          echo'<th>MODALIDADE</th>';
          echo'<th>AÇÃO</th>';
        echo'</tr>';
      echo'</thead>'; 

while($linha = pg_fetch_array($sql))
{ 

        $std_status=$linha['study_status'];
        $std_data=$linha['study_date'];
        $std_hora=$linha['study_time'];
        $pat_name=str_replace('^',' ',$linha['pat_name']);
        $pat_sex=$linha['pat_sex'];
        $pat_id=$linha['pat_id'];
        $std_id=$linha['study_id'];
        $std_accession=$linha['accession_no'];
        $std_desc=$linha['study_desc'];
        $std_mod=$linha['mods_in_study'];
   
      echo'<tbody>';
              echo "<td>$pat_id</td>";
            echo "<td>$pat_name</td>";
            echo "<td>$pat_sex</td>";
            echo "<td>$std_data - $std_hora </td>";
            echo "<td>$std_desc </td>";
            echo "<td>$std_mod</td>"; 

echo'</tbody>'; 

  

Desta forma quando eu chamo a função para transformar  a tabela carregada na pagina ListarExames.php em um DataTable

  [javascript]

<script type="text/javascript">
  $(document).ready(function () {
$('#resultado').DataTable();
});
</script>

[/javascript]

 

Da erro porque o elemento "resultado" é uma <div> e não uma tabela,  conforme mensagem:

DataTables warning: Non-table node initialisation (DIV). For more information about this error, please see http://datatables.net/tn/2

 

e se eu colocar na pagina ListarExames.php o id="dcm" que é o ID da tabela que é gerada dinamicamente na outra pagina busca.php não da certo.

  [javascript]

<script type="text/javascript">
  $(document).ready(function () {
$('#dcm').DataTable();
});
</script>

    [/javascript]

Ai o que fiz foi ao inves de um elemento <div> eu coloquei um elemento <table> com o id="resultado"  desta forma:



<table id="resultado" class="table display table-condensed data-results table-hover" cellspacing="0" style="background-color: #ffffff">
    <thead><tr><th>Nº PACIENTE</th><th>NOME DO PACIENTE</th><th>SEXO</th><th>DATA DO EXAME</th><th>TIPO DE EXAME</th><th>MODALIDADE</th><th>AÇÃO</th></tr></thead>
    <tbody><tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody>
  </table> 

  

Spoiler

 

A principio deu certo carregou todos os dados, apresentou tambem os elementos DataTable  como Search a paginação etc.... mais os elementos não funcionam apenas são apresentados, entendi ? por exemplo se digitar alguma coisa no search do datatble não acontece nada, se selecionar apenas 10 resultados por pagina também nao acontece nada, enfim o datatable nao funciona.

 

É possivel com o jquery selecionar um elemento de outra pagina ? porque pensei que se der para NA PAGINA ListarExames.php que é onde é carregada a tabela selecionar o elemento id="dcm" que é a tabela que é montada na pagina busca.php  talves daria certo, vi que tem uma função LOAD do Jquery que faria isso mais não consegui entender e aplicar no meu projeto

 

Não sei se ficou claro o meu problema, conto com a ajuda de voces pois ja se esgotaram minhas tentativas.

 

Muito obrigado 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Vinicius Bazan
      Galera to com uma duvida aqui, no javascript é possível fazer uma função dentro de outra e uma acessar os valores de uma var da outra?
       
      Por exemplo digamos que eu tenha uma function a() e uma function b(), eu preciso que a function a utilize valores de variáveis que estarão na function b, se isto for possível a função b terá que estar dentro de a ou seria ao contrario?
    • By TheRonaldoStar
      Olá, Venho aqui de novo para tirar uma dúvida que creio eu ser muito simples porem não sei como aplicar!;
      Como diz no título do post eu gostaria de fazer um select de cadastros cujo o id do usuário online está nesta coluna,
      Porem neste campo contem 2 id separados por uma ' , '. Sendo assim não dar para mim fazer uma pesquisa com com a tag WHERE id ='Valor'
      Em fim eu quero ajuda para selecionar todos os cadastro cujo o id do usuário online está por EX: Sou o usuário 1 existe dois cadastros que tem meu id: [1, 2] e [2, 1];
      Alem de pesquisar todos os cadastros que tenha meu id nesta coluna eu quero que não tenha interferência ou listar cadastro do usuário 1 se eu for o usuário 21 por ex.
       
      Qual quer ajuda é bem vinda!
      Atenciosamente,
      ~Ronaldo
    • By Agnosticado
      Olá senhores, estou intrigado com uma coisa: tenho o seguinte código:
      $id_exame = "50296"; $pesquisa = "SELECT motivo, CASE WHEN motivo = 'Intensa superposição celular em mais de 75% de esfregaço' THEN 'A' WHEN motivo = 'Sangue em mais de 75% de esfregaço' THEN 'B' WHEN motivo = 'Artefatos de dessecamento mais de 75% de esfregaço' THEN 'C' ELSE 'TESTE' END AS opcao FROM insatisfatorio WHERE exame_id = '$id_exame' ORDER BY opcao ASC"; $linha = mysql_query($pesquisa); while ($pesquisa = mysql_fetch_array($linha) or die(mysql_error())){ echo $pesquisa["opcao"]; } Quando executo usando
       
      $linha = mysql_query($pesquisa);
                 while ($pesquisa = mysql_fetch_array($linha) or die(mysql_error())){
              echo $pesquisa["opcao"];
              echo "<br>";
       
       
      a saída é palavra "TESTE" que o default e não o texto "B" que corresponde a string da chamada do $id_exame = 50296.
       
      O ESQUISITO é que quando executo todo select que está na variável $pesquisa direto no SGBD dá certo e o texto "B" aparece normalmente.
      PQ DIABOS ISSO ACONTECE???
    • By israel@iproduce.com.br
      Olá,
      Boa noite!
      Tenho algumas vagas para motion (basicamente banner de internet animado e vinhetas para redes sociais) para a cidade do Rio de Janeiro. As vagas são temporárias (6 meses), podendo ocorrer a efetivação nesse período. É necessário estar alocado no escritório no Rio.
      Conhecimento avançado em: Adobe Animate CC, Google Web Designer, After Effects.
      Além destes programas é um diferencial conhecer a linguagens: HTML5, CSS3 e Javascript.
      Tem interesse ou conhece alguém que esteja precisando? Então manda o seu portifólio e CV para no e-mail: freela@iproduce.com.br
      Boa sorte!
    • By Vinicius Bazan
      Sou leigo ainda no Java Script e não manjo de muita coisa ainda, eu preciso fazer uma função que que deve ser executada na pagina HTML, eu crio a função dentro da tag <script> na <head> do html, mas como eu chamo essa função no momento que eu precisar no <body>, o que eu devo digitar pro código saber que ali deve executar a função?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.