Я создаю динамическую таблицу, используя php, грушу HTML_Table и sql. Мой первый запрос извлекает информацию для заголовков таблиц, а затем груша использует это для создания заголовков. Следующий запрос извлекает информацию из нескольких таблиц, чтобы вернуть правильные наборы данных. Затем мне нужно связать эти наборы данных с заголовками и отобразить результаты по каждому соответствующему столбцу. Я могу отображать все данные, но не правильно. Столбец 0 начинается с строки 1 и отображает текущие 4 тестовых элемента, столбец 1 начинается в строке 5 и отображает текущие 2 тестовые элементы, тогда столбец 2 начинается с 7 ... Как я могу получить количество столбцов для сброса до 0 после в предыдущем столбце заканчиваются совпадающие данные? Другая часть этой проблемы заключается в том, что мне также необходимо применить rowSpans к вставленным данным, поскольку это проект планирования. Я занимаюсь этим уже неделю и не могу найти подходящих примеров или предложений. Что мне не хватает, поскольку я не думаю, что это должна быть такая трудная задача? Код ниже.расширенные таблицы с грушей php
<?php
session_start();
include_once("../php/functions.php");
include_once("HTML/TABLE.PHP");
$assetHead = headers('Assets', $_SESSION['deptID']);
$captionHeading = $_SESSION['dept'];
$conn = connect();
$attrs = array('id' => 'main',
'width' => '100%',
'Border' => '1');
$table = new HTML_Table($attrs);
$table->setAutoGrow(true);
$table->setAutoFill('n/a');
$sql_assets = "select AssetName, AssetID
from Assets
where Assets.DepartmentID = $_SESSION[deptID]";
$stmt1 = sqlsrv_query($conn, $sql_assets);
if ($stmt1)
{
$rows = sqlsrv_has_rows($stmt1);
if ($rows === true)
{
while($row = sqlsrv_fetch_array($stmt1, SQLSRV_FETCH_ASSOC))
{
$assetName [] = $row['AssetName'];
$assetID [] = $row['AssetID'];
}
}
}
else
{
die(print_r(sqlsrv_errors(), true));
}
$i = 0;
foreach($assetName as $val)
{
$table->setHeaderContents(0, $i++, $val);
unset($val);
}
sqlsrv_close($conn);
$conn = connect();
$tsql = "select + 'Job#' + CAST (JobNum AS VARCHAR(10))+ ' ' + Description AS newField, datediff(MI,StartTime, EndTime)/15 as 'RowSpan', AssetName, AssetID
from Calendar_View, Departments, Status, Assets
where Departments.DepartmentName = '$captionHeading' and Calendar_View.Department = Departments.DepartmentID and AssetStatus = Status.StatusID and
Calendar_View.Asset = Assets.AssetID
order by AssetID asc";
$rowcounter = 1;
$stmt = sqlsrv_query($conn, $tsql);
if ($stmt)
{
while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC))
{
for ($i = 0; $i < count($assetID);$i++)
if ($row['AssetID'] == $assetID[$i])
$table->setCellContents($rowcounter++,$i,$row['newField']);
}
}
else
{
die(print_r(sqlsrv_errors(), true));
}
sqlsrv_close($conn);
echo $table->toHTML();
?>
</body>
</html>
$ headerCounter = 0; $ stmt = sqlsrv_query ($ conn, $ tsql); if ($ stmt) {
$ rows = sqlsrv_has_rows ($ stmt); if ($ rows === true) {
$ cellCounter = 1; $ cellPosition = 0; $ rowCounter = 1; echo "Положение заголовка вне цикла: $ headerCounter
";