I have a SQL table named res having some rows and columns. For example:
Name Class Sub1 Sub2 Sub3 sub4
s1 2 10 12 45 15
s2 2 50 12 14 60
s3 2 10 12 40 15
s4 2 20 12 14 15
s5 2 10 12 11 15
.
.
s500 2 11 12 13 16
a1 5 05 10 12 14
a2 5 45 10 16 14
a3 5 50 11 12 15
a4 5 45 10 12 14
.
.
a900 5 30 15 14 20
If someone enter 5 in class.php form then the result should be displayed in automatically generated html/PHP table in descending order of the name. For example:
Name Class Sub1 Sub2 Sub3 Sub4
a2 5 45 10 16 14
a3 5 50 11 12 15
a4 5 45 10 12 14
a5 5 45 10 16 14
a6 5 50 11 12 15
a7 5 45 10 12 14
.
.
My class.php code is
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
</head>
<table class="table table-bordered" >
<?php
$servername = "localhost";
$username = "adsdt";
$password = "ssfdfsg";
$dbname = "absdt";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$Class = mysqli_real_escape_string($conn, $_POST['Class']);
$sql = "SELECT * from res
WHERE class = '$class'";
$result = $conn->query($sql);
$columns = array();
$resultset = array();
while ($row = mysql_fetch_assoc($result)) {
if (empty($columns)) {
$columns = array_keys($row);
}
$resultset[] = $row;
}
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "<thead><tr class='info';><th>Name</th><th>Class</th><th>Sub1</th><th>Sub2</th><th>Sub3</th><th>Sub4</th></tr></thead><tbody><tr class='success';><td>{$row['name']}</td><td>{$row['class']}</td><td>{$row['Sub1']}</td><td>{$row['Sub2']}</td><td>{$row['Sub3']}</td><td>{$row['Sub4']}</td></tr></tbody></table>";
echo "</table>";
// Print the data
while($row = mysql_fetch_row($result)) {
foreach($row as $_column) {
echo "{$_column}";
}
}
}
} else {
echo "Information Not Available";
}
?>
</table>
</body>
</html>
My code is fetching all the result matching the criteria but displaying only one (first result) result in table and all other are just only written without space in betweem them… I cannot specify the row number as I don’t know the exact number, all rows are varying depending upon the class or cannot write the same repeated code for echoing all the row because I don’t know how much exactly row is…
What changes should be made in the code to display all the SQL table data in html/PHP generated table ?
Advertisement
Answer
here is the code you need for dynamic columns and records set to display in HTML form
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<?php
# Your database credentials goes here
$servername = "localhost";
$username = "root";
$password = "123456";
$dbname = "stackoverflow";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
# Set Your Table class id to fetch records
# You can set it from $_GET OR $_POST value
$class = 5;
//$class = mysqli_real_escape_string($conn, $_POST['Class']);
# Fetch records
$sql = "SELECT * FROM res WHERE class = '$class'";
$result = $conn->query($sql);
$columns = array();
$resultset = array();
# Set columns and results array
while ($row = mysqli_fetch_assoc($result)) {
if (empty($columns)) {
$columns = array_keys($row);
}
$resultset[] = $row;
}
# If records found
if( count($resultset > 0 )) {
?>
<table class="table table-bordered" >
<thead>
<tr class='info';>
<?php foreach ($columns as $k => $column_name ) : ?>
<th> <?php echo $column_name;?> </th>
<?php endforeach; ?>
</tr>
</thead>
<tbody>
<?php
// output data of each row
foreach($resultset as $index => $row) {
$column_counter =0;
?>
<tr class='success';>
<?php for ($i=0; $i < count($columns); $i++):?>
<td> <?php echo $row[$columns[$column_counter++]]; ?> </td>
<?php endfor;?>
</tr>
<?php } ?>
</tbody>
</table>
<?php }else{ ?>
<h4> Information Not Available </h4>
<?php } ?>
</body>
</html>
Hope, it helps you buddy. I also modify coding errors, so no worries 🙂