живой фильтр по запросу базы данных - PullRequest
0 голосов
/ 26 октября 2018

Я создаю веб-приложение, в котором пользователи могут легко получить доступ к информации в базе данных.

Я уже написал код в PHP и MYSQL, где пользователь может ввести, например, код ДНК.пациента и все данные этого пациента отображаются в таблице.

Что я хотел бы сейчас сделать, так это отфильтровать данные в таблице с помощью живых фильтров ??

Я уже искал код JavaScript, но он не работает, так как сайт имеет динамическийтаблицы, которые изменяются в зависимости от того, что пользователь хочет посмотреть.

Я бы хотел создать фильтры для применения к уже имеющейся у меня таблице, в которой в каждом столбце есть раскрывающийся список, помогающий пользователю отфильтровать данные в таблице.

Я посмотрелдля приложений jQuery, datatable и bootstrap, но я не могу понять это.Большое спасибо

Я прикреплю сюда свой код, потому что я уже пытался вставить некоторую строку кодов с jquery и таблицей данных, но ничего не изменилось.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="style.css" rel="stylesheet" type="text/css" />
<title>FILTRARE PER GENE</title>
</head>

<body>

    <div id="holder">
    <h1><?php echo "FILTRO PER GENE DELLE VARIANTI";?></h1></div>
    <hr />
    <br>


    <div id="sidebar" style="width:50%">
      <A HREF="varianti_utente.php" class="w2-bar-item w2-button">NUOVA RICERCA</A>
      &nbsp;&nbsp;&nbsp | &nbsp;&nbsp;&nbsp; 
      <A HREF="dati_utente.php" class="w2-bar-item w2-button">DATI UTENTE</A>
      &nbsp;&nbsp;&nbsp | &nbsp;&nbsp;&nbsp;
      <A HREF="home.php" class="w2-bar-item w2-button">HOME</A>
      <P>&nbsp;</P>
    </div>

    <div>
    <BR>
    <form action="variante.php" method="POST">
    CODICE DNA <input type="text" name="dna" val="">
    GENE <select name="gene">
    <option></option>
    <option>CFH</option>
    <option>CD46</option>
    <option>CFI</option>
    <option>CFB</option>
    <option>C3</option>
    <option>ADAMTS13</option>
    <option>THBD</option>
    <option>DGKE</option>
    <input type='submit' name='vai' value'Invia'>
    </form><BR /><BR />

    <?php
    $conn= mysql_connect("start", "db", "password");
    if (!$conn)
    {
         die("Connessione non riuscita <br>" . mysql_error());
    //}else{
        //echo "Connessione al database stabilita con successo<br><br>";
    }

    mysql_select_db("variant_db", $conn);

    if(isset($_POST["vai"])){
       $gene=$_POST["gene"];
    }
    echo "Verranno visualizzati i risultati per il gene '<b>$gene</b>' selezionato.<br><br>";

    $sql_gene= "SELECT V.dnaCode, V.Chr, V.Start, V.End, V.Alt, V.Ref, V.zygosity, A.gene, A.Func, A.GeneContext, A.Dist FROM variante as V JOIN annotazioni as A ON V.Start = A.Start AND V.Alt=A.Alt AND V.Ref=A.Ref WHERE A.gene='" .$gene. "'";
    $result_gene = mysql_query($sql_gene, $conn) or die(mysql_error());;
    $record_gene = mysql_fetch_array($result_gene);
    if($record_gene==false)
    {
          echo "<br>La ricerca non ha prodotto alcun risultato con il gene selezionato!<br>";
          echo"Il paziente non presenta varianti sul gene '<b>$gene</b>'.<br>";
    }else
    {
         $index=1;?>
          <table id="tab_annvar" width="100%">
           <thead>
             <tr>
              <td width="9%"><b>RISULTATO</b></td>
              <td width="9%"><b>dnaCode</b></td>
              <td width="9%"><b>Chr</b></td>
              <td width="9%"><b>Start</b></td>
              <td width="9%"><b>End</b></td>
              <td width="5%"><b>Alt</b></td>
              <td width="5%"><b>Ref</b></td>
              <td width="9%"><b>Zigosity</b></td>
              <td width="9%"><b>Gene</b></td>
              <td width="9%"><b>Func</b></td>
              <td width="9%"><b>Gene Context</b></td>
              <td width="9%"><b>Dist</b></td>
              </tr>
          </thead>

         <?php while ($record_gene = mysql_fetch_array($result_gene)) 
         {?>
          <tbody>   
              <tr>
              <b><td width="9%"><?php echo "#$index";?></td></b>
              <td width="9%"><?php echo $record_gene["dnaCode"];?></td>
              <td width="9%"><?php echo $record_gene["Chr"];?></td>
              <td width="9%"><?php echo $record_gene["Start"];?></td>
              <td width="9%"><?php echo $record_gene["End"];?></td>
              <td width="5%"><?php echo $record_gene["Alt"];?></td>
              <td width="5%"><?php echo $record_gene["Ref"];?></td>
              <td width="9%"><?php echo $record_gene["zygosity"];?></td>
              <td width="9%"><?php echo $record_gene["gene"];?></td>
              <td width="9%"><?php echo $record_gene["Func"];?></td>
              <td width="9%"><?php echo $record_gene["GeneContext"];?></td>
              <td width="9%"><?php echo $record_gene["Dist"];?></td>
              </tr>
          </tbody>
    <?php
        ++$index;
    }
    }?>
       </table>
    </div>


</body>
</html>

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Вы должны получить данные асинхронно, и вы можете использовать следующий плагин, чтобы получить то, что вам нужно

https://www.jqueryscript.net/table/Simple-jQuery-Dropdown-Table-Filter-Plugin-ddtf-js.html

0 голосов
/ 26 октября 2018

Вы находитесь на правильном пути для «живых фильтров».Вам определенно нужен JavaScript.Какой из них вы выбрали, зависит от вас.

Например, вы можете использовать jQuery и AJAX для запроса ваших данных из бэкэнда как:

$.ajax({
  url: "interface.php?client=1234",
  type: 'GET',
  success: function(html){
    //update your UI here
  }
});

Имейте в виду, что у вас, вероятно, будет много трафика, в зависимости от вашего количестваданных и / или пользователя.Поэтому вы можете подумать о каком-то кешировании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...