Как добавить функциональность фильтра в мою редактируемую таблицу html? а также функциональность сортировки столбцов? - PullRequest
0 голосов
/ 10 июля 2019

Я работаю над проектом, в котором я создаю программу, которая может сортировать, обновлять, редактировать введенные пользователем данные из базы данных SQL. Я использую таблицу, которая отображает данные из моей базы данных sql. Прямо сейчас у меня проблемы с моей HTML-таблицей. Я получил некоторый код из git hub, и он дает моей таблице возможность фильтровать каждый отдельный столбец, а также выполнять поиск. Я хотел бы добавить функцию редактирования в эту таблицу, я имею в виду возможность редактировать каждую ячейку в каждой строке, но я не знаю, как это сделать. Если кто-нибудь может дать мне какие-либо советы, это было бы замечательно. Я хотел бы сохранить функции фильтрации и поиска.

<?php
  ob_start();
     session_start();
//now I can access $_SESSION[] vars.
if(!isset($_SESSION['admin'])){
  echo "Illegal access!";
  exit(0); //immediate stop access
}
else{
require_once("../sqlSts.php");
$user=$_SESSION['user'];

$conn=connectDB();
$query="SELECT * FROM admin WHERE user=\"$user\""; 
$result=$conn->query($query);

$fetchRow=mysqli_fetch_assoc($result);


if(isset($_GET['msg']))
     { 
      $msg=$_GET['msg'];
      echo<<<EOT
    <div class="alert alert-primary" "alert" role="alert">
$msg
</div>
EOT;
}


}


ob_end_flush();

?>
<style type="text/css">
    .alert {
  position: absolute;
  top: 10px; // Should be same as the height of the header
  width: 100%;
  background-color: white;

}
 tfoot {
        display: table-header-group;
    }
tfoot input {
        width: 100%;
        padding: 3px;
        box-sizing: border-box;
    }
    .header {
  padding: 20px;
  height: 100px;
  text-align: center;
background-color: hsla(14, 100%, 53%, 0.6);
}
.table {
 height: 100px;
background-color: white;
}
.center {
  margin-top:0;
 margin-right:auto;
margin-bottom:0;
margin-left:auto;
  padding: 20px;
  height: 550px;
  text-align: center;
background-color: rgba(50, 115, 220, 0.3);
position: absolute;
}
    .footer {
  bottom: 0;
  padding:20px;
  height: 200px;
  text-align: center;
background-color: hsla(14, 100%, 53%, 0.6);

}

</style>

<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
<script src="../testerJs.js"></script>
<link href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css">
<!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">

<?php

echo'    


        <table  id="example" class="table table-hover" style="width:100%">
  <thead>
  <tr>
    <th>Student id</th>
    <th>First name</th>
    <th>Last name</th>
    <th>Grade lvl</th>
    <th>College name</th>
    <th>Semester</th>
    <th>Subject</th>
    <th>Course id</th>
    <th>Hs course code</th>
    <th>Course start date</th>
    <th>Credit hour</th>
    <th>Articulate credit</th>
    <th>Duel Credit</th>
    <th>Setting</th>
    <th>Numeric Grade</th>
    <th>Max numeric grade</th>
    <th>Course end date</th>
    <th>Letter grade</th>

  </tr>
  </thead>';


$conn=connectDB();
$query="SELECT classes_taken.stud_id,student.first_name,student.last_name,student.curr_grdlvl,colleges.univ_name,classes_taken.semester,classes.subject,classes.course_id,classes.hs_course_code,
classes_taken.course_start_date,classes_taken.credit_hour,classes_taken.art_credit,classes_taken.duel_credit,classes_taken.setting,classes_taken.numeric_grade,classes_taken.max_numeric_grade
,classes_taken.cour_end_date, classes_taken.letter_grade
FROM classes_taken
JOIN student ON classes_taken.stud_id=student.stud_id
JOIN colleges ON classes_taken.coll_id=colleges.coll_id
JOIN classes ON classes_taken.class_id=classes.id;
"; 
$result=$conn->query($query);

$fetchRow=mysqli_fetch_assoc($result);

if($result = $conn->query($query)) {
    echo'<tbody>';
    while ($row = $result->fetch_assoc()) {
        $field1name = $row["stud_id"];
        $field2name = $row["first_name"]; 
        $field3name = $row["last_name"];
        $field4name = $row["curr_grdlvl"];
        $field5name = $row["univ_name"];
        $field6name = $row["semester"];
        $field7name = $row["subject"];
        $field8name = $row["course_id"];
        $field9name = $row["hs_course_code"];
        $field10name = $row["course_start_date"];
        $field11name = $row["credit_hour"];
        $field12name = $row["art_credit"];
        $field13name = $row["duel_credit"];
        $field14name = $row["setting"];
        $field15name = $row["numeric_grade"];
        $field16name = $row["max_numeric_grade"];
        $field17name = $row["cour_end_date"];
        $field18name = $row["letter_grade"];

        echo '<tr> 
                  <td>'.$field1name.'</td> 
                  <td>'.$field2name.'</td> 
                  <td>'.$field3name.'</td> 
                  <td>'.$field4name.'</td> 
                  <td>'.$field5name.'</td> 
                  <td>'.$field6name.'</td> 
                  <td>'.$field7name.'</td>
                  <td>'.$field8name.'</td>
                  <td>'.$field9name.'</td>
                  <td>'.$field10name.'</td>
                  <td>'.$field11name.'</td>
                  <td>'.$field12name.'</td>
                  <td>'.$field13name.'</td>
                  <td>'.$field14name.'</td>
                  <td>'.$field15name.'</td>
                  <td>'.$field16name.'</td>
                  <td>'.$field17name.'</td>
                  <td>'.$field18name.'</td>
              </tr>';
    }
    $result->free();
        echo'</tbody>';
        echo'
        <tfoot>
            <tr>
            <th>Student id</th>
            <th>First name</th>
            <th>Last name</th>
            <th>Grade</th>
            <th>College</th>
            <th>Semester</th>
            <th>Subject</th>
            <th>Course id</th>
            <th>Hs_c_code</th>
            <th>start date</th>
            <th>Credit Hour</th>
            <th>Art. credit</th>
            <th>Duel Credit</th>
            <th>Setting</th>
            <th>Num Grade</th>
            <th>Max num grade</th>
            <th>end date</th>
            <th>Let. grade</th>
            </tr>
        </tfoot>
        </table>';

} 

?>

Вот мой код tester.js

$(document).ready(function() {
    // Setup - add a text input to each footer cell
    $('#example tfoot th').each( function () {
        var title = $(this).text();
        $(this).html( '<input type="text" placeholder=" '+title+'" />' );
    } );

    // DataTable
    var table = $('#example').DataTable();

    // Apply the search
    table.columns().every( function () {
        var that = this;

        $( 'input', this.footer() ).on( 'keyup change', function () {
            if ( that.search() !== this.value ) {
                that
                    .search( this.value )
                    .draw();
            }
        } );
    } );
} );


Мне удалось сделать каждую строку редактируемой, но когда я это сделал, она отключила функции фильтрации, и панель поиска над таблицей исчезла. Пожалуйста, помогите

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