I am trying to dynamically generate multilevel header table. Unfortunately after long trials I realized that I am not able to do that alone.
What I am trying to do is to merge the header cells into one cell like on the screen:
Here is my working PHP code. Only one thing which needs to be done is trier 1 header
PHP Code:
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<!--
/**************
* CSS styles *
**************/
-->
<style type="text/css">
h1 {font-family:Segoe UI;font-size:18px;}
h2 {font-family:Segoe UI;font-size:14px;font-weight:normal;}
table {border-collapse:collapse;border-spacing:0;border-color:#ccc;}
th {font-family:Segoe UI;font-size:13px;font-weight:bold;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#ccc;color:#333;background-color:#f0f0f0;}
td {font-family:Segoe UI;font-size:13px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#ccc;color:#333;background-color:#fff;}
</style>
<!--
/**********************
* connection details *
**********************/
-->
<?php
$host = "127.0.0.1";
$user = "dnlw";
$pass = "";
$database = "ksiegarnia";
$port = 3306;
$connect = mysql_connect($host, $user, $pass, $port);
if (!$connect)
{
die("Can't connect to database");
}
if (!mysql_select_db($database))
{
die("Can't select database");
}
/*****************
* sending query *
*****************/
$query = file_get_contents("query.txt");
mysql_query("SET NAMES 'utf8'");
$result = mysql_query($query);
$row_num = mysql_num_rows($result);
$fields_num = mysql_num_fields($result);
if (!$result)
{
die("Query to show fields from table failed");
}
/**********************
* printing the table *
**********************/
echo "
<title>Query result</title>
<h2>znaleziono: <b>{$row_num}</b></h2>
<table>
<thead>
<tr>";
// ?????????????????????????????????????????????
for($i=0; $i<$fields_num; $i++)
{
$header = mysql_fetch_field($result);
echo "<th>{$header->table}</th>";
}
echo "
</tr>
<tr>";
// printing table headers
for($i=0; $i<$fields_num; $i++)
{
$header2 = mysql_fetch_field($result);
echo "<th>{$header->name}</th>";
}
echo "
</tr>
</thead>
<tbody>
<tr>";
// printing table rows
while($row = mysql_fetch_row($result))
{
echo "<tr>";
// $row is array... foreach( .. ) puts every element
// of $row to $cell variable
foreach($row as $cell)
echo "<td>$cell</td>";
echo "</tr>\n";
}
mysql_free_result($result);
echo"
</tr>
</tbody>
</table>";
?>
</body>
</html>
Link to database: https://1drv.ms/u/s!AvpVESbXIIvxhrByuEodnjt5JTdgLA
I think I'd simply build an associative array of all your table names first, each with a count of how many columns they span, and then use that for your first header level:
And then to output your first level of headers:
Hope this helps!