Как исправить таблицу экспорта HTML в Excel с неожиданным результатом - PullRequest
0 голосов
/ 29 апреля 2019

Я работаю над онлайн-сайтом по математике с PHP, HTML и JavaScript для школьного задания. Я могу экспортировать всю таблицу без каких-либо ошибок, но когда она переходит на страницу фильтра, она все равно может экспортироваться в файл Excel, но все данные перепутаны.

Ожидаемый результат:

expected result

Фактический результат:

actual result

JavaScript:

<script type="text/javascript">
function exportTableToExcel(tableID, filename = '') {
    var downloadLink;
    var dataType = 'application/vnd.ms-excel';
    var tableSelect = document.getElementById(tableID);
    var tableHTML = tableSelect.outerHTML.replace(/ /g, '%20');

    // Specify file name
    filename = filename ? filename + '.xls' : 'excel_data.xls';

    // Create download link element
    downloadLink = document.createElement("a");

    document.body.appendChild(downloadLink);

    if (navigator.msSaveOrOpenBlob) {
        var blob = new Blob(['\ufeff', tableHTML], {
            type: dataType
        });
        navigator.msSaveOrOpenBlob(blob, filename);
    } else {
        // Create a link to the file
        downloadLink.href = 'data:' + dataType + ', ' + tableHTML;

        // Setting the file name
        downloadLink.download = filename;

        //triggering the function
        downloadLink.click();
    }
}
</script> 
<button name="create_excel" id="create_excel" class="btn btn-success" onclick="exportTableToExcel('rresult','studentresult')">Backup to Excel</button>

Таблица;

<table class='table table-striped' id="rresult">
 <div id="studentresult">
  <thead>
    <th class='text-primary'>#ID</th>
    <th class='text-primary'>Username</th>
    <th class='text-primary'>Name</th>
    <th class='text-primary'>Quiz Name</th>
    <th class='text-primary'>Correct Answer</th>
    <th class='text-primary'>Total Question</th>
    <th class='text-primary'>Student Mark (%)</th>
    <th class='text-primary'>Student Grade</th>
    <th class='text-primary'>Class</th>
    <th class='text-primary'>Date</th>
</thead>

Функция фильтра:

<?php 
$query= "SELECT * from result GROUP BY class";
$result = mysqli_query($con,$query);
$test="";
$No= 0;
while($row = mysqli_fetch_assoc($result)){
  $test.= '<option value = "'.$row['class'].'">'.$row['class'].'</option>';
}
?>

if (isset($_POST['submit'])) {
        $test = $_POST['class'];
        if ($test != "") {
          $sql = "SELECT * FROM result WHERE class ='$test'";
          $data = mysqli_query($con,$sql);

          if (mysqli_num_rows($data) > 0) {
            while($row = mysqli_fetch_assoc($data)){
              $No = $No+1;
              $id =$row['id'];
              $username = $row['username'];
              $name = $row['name'];
              $quizname = $row['quiz_name'];
              $score = $row['score'];
              $total = $row['total'];
              $mark = $row['mark'];
              $grade = $row['grade'];
              $class = $row['class'];
              $date = $row['quiz_date'];

              ?>
              <tr>
                <td><?php echo $id; ?></td>
                <td><?php echo $username; ?></td>
                <td><?php echo $name; ?></td>
                <td><?php echo $quizname; ?></td>
                <td><?php echo $score; ?></td>
                <td><?php echo $total; ?></td>
                <td><?php echo $mark; ?></td>
                <td><?php echo $grade; ?></td>
                <td><?php echo $class; ?></td>
                <td><?php echo $date; ?></td>
              </tr>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...