将整个SQL数据库放入HTML表

I'm trying to put a whole SQL database into html table. I'm using MySQLi API. But it just return the first row of the table , and the rest of them just look mess up.Here's my code:

            <h1> School Lesson System</h1>

            <?php

                if(isset($_SESSION['u_id'])) {
                    echo "You are logged in 
";
                }
            ?>
            <table border="1">
                <thead>
                    <tr>
                        <td>Lesson_id</td>
                        <td>Teacher</td>
                        <td>Lesson</td>
                        <td>Day</td>
                        <td>Time</td>
                        <td>Classroom</td>
                        <td>Year</td>
                        <td>Curriculum</td>
                    </tr>
                </thead>
                <tbody>
                    <?php
                    require_once 'includes/dbh.inc.php';

                    $query = "SELECT * FROM monday";
                    $result = $conn->query($query);
                    $rows = $result->num_rows;
                    for ( $j = 0; $j < $rows; ++$j) {
                        $result->data_seek($j);
                        $row = $result->fetch_array(MYSQLI_ASSOC);
                    echo "<tr>";
                        echo "<td>" . $row['Lesson_id']. "</td>";
                         echo "<td>". $row['Teacher']. "</td>";
                         echo "<td>" .$row['Lesson']. "</td>";
                         echo "<td>" . $row['Day']. "</td>";
                         echo "<td>". $row['Time']. "</td>";
                         echo "<td>". $row['Classroom']. "</td>";
                         echo "<td>". $row['Year']. "</td>";
                         echo "<td>". $row['Curriculum']. "</td>";
                     echo "</tr>";
                echo"</tbody>";
            echo"</table>";
                    }


include_once 'footer.php';
?>

Any solution for this ????

1.Use while instead of for loop

2.don't close <tbody> and <table> inside loop (which is the main problem)

3.I am unable to see session_start(); in your code, while you are using SESSION in your code.So please check and if you don't have then add that on top of the page.

Do like below:-

<?php
require_once 'includes/dbh.inc.php';

$query = "SELECT * FROM monday";
$result = $conn->query($query);

while($row = $result->fetch_array(MYSQLI_ASSOC)){
    echo "<tr>";
        echo "<td>" . $row['Lesson_id']. "</td>";
        echo "<td>". $row['Teacher']. "</td>";
        echo "<td>" .$row['Lesson']. "</td>";
        echo "<td>" . $row['Day']. "</td>";
        echo "<td>". $row['Time']. "</td>";
        echo "<td>". $row['Classroom']. "</td>";
        echo "<td>". $row['Year']. "</td>";
        echo "<td>". $row['Curriculum']. "</td>";
    echo "</tr>";
}
echo "</tbody>";
echo "</table>";
include_once 'footer.php';
?>

Note:-

Table names like Monday is not good at all. It will be fruitful name which describes it's purpose itself like users(list of users),logs(track record of different activities)...etc.

That's because you close tbody and table tag inside for loop.

       echo"</tbody>";
       echo"</table>";

move this two lines outside the for.

Change that :

<?php
                    require_once 'includes/dbh.inc.php';

                    $query = "SELECT * FROM monday";
                    $result = $conn->query($query);
                    while ($row = $result->fetch_assoc()) {
                    echo "<tr>";
                        echo "<td>" . $row['Lesson_id']. "</td>";
                         echo "<td>". $row['Teacher']. "</td>";
                         echo "<td>" .$row['Lesson']. "</td>";
                         echo "<td>" . $row['Day']. "</td>";
                         echo "<td>". $row['Time']. "</td>";
                         echo "<td>". $row['Classroom']. "</td>";
                         echo "<td>". $row['Year']. "</td>";
                         echo "<td>". $row['Curriculum']. "</td>";
                     echo "</tr>";

                    }
  echo"</tbody>";
                echo"</table>";

Create a class file for connecting the database

  class DBConnUtil {
 private $mysqli;
 function __construct() {
    $this->open_connection();
}

private function open_connection() {    // function to connect database;
        $this->mysqli = new mysqli(DB_SERVER,DB_USER,DB_PASS,DB_NAME);
        if ($this->mysqli->connect_error) {
            die('Error : ('. $this->mysqli->connect_errno .') '. $this->mysqli->connect_error);
        }
        $this->mysqli->set_charset("utf8");
}
public function run_query ($queryString) {
    $result=$this->mysqli->query($queryString);

    if (!$result) {
        trigger_error('Wrong SQL: ' . $queryString . ' Error: ' . $this->mysqli->error, E_USER_ERROR);                                                                  
    }
    $this->close_connection();
    return $result;
}



private function close_connection() {
        $this->mysqli->close();
}    

}

Then another class file Lesson.php. Use the database column as private variable i it..Then write a function fetchData() like this.

    public function fetchData() {
    $dbConn = new DBConnUtil(); //name of the database class mention 
    before..
    $queryString = "select * from tablename ";
    $result = $dbConn->run_query($queryString);
    $rows_returned = $result->num_rows;

    $categorydata = array();
    while($rows = $result->fetch_object()){
   $categorydata[] =  $rows;
    }
    $result->free();
   return $categorydata;

   }  

then use foreach statement to print it..