0
我有一個簡單的時間表MySQL表:結合/合併HTML錶行成一個從MySQL和PHP透視表
+-------------+--------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+-------------------+-----------------------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| identity | int(11) | NO | MUL | NULL |
| start | datetime | YES | MUL | NULL | |
| end | datetime | YES | MUL | NULL |
+-------------+--------------+------+-----+-------------------+-----------------------------+
我有一個PHP腳本:
$begin = new DateTime($_SESSION['start']);
$end = new DateTime($_SESSION['end']);
$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($begin, $interval, $end);
foreach ($period as $dt)
$massivequery[]= "case(date(start)) when '".$dt->format("Y-m-d")."' then hour(timediff(end,start)) end as '".$dt->format("Y-m-d")."'";
$view_start = $_SESSION['start'];
$view_end = $_SESSION['end'];
$result = mysqli_query($con,"
select schedule.identity,".implode(',',$massivequery)." from schedule join names on schedule.id_code=names.id_code where schedule.away is null and schedule.errand is null and date(schedule.start) between '".$view_start."' and '".$view_end."'
");
echo "<table align='center' border='1'>";
$i = 0;
while($row = $result->fetch_assoc())
{
if ($i == 0) {
$i++;
echo "<tr>";
foreach ($row as $key => $value) {
echo "<th>" . $key . "</th>";
}
echo "</tr>";
}
echo "<tr>";
foreach ($row as $value) {
echo "<td id='".$row['identity']."'>" . $value . "</td>";
}
echo "</tr>";
}
echo "</table>";
的問題是這給了我幾乎完美的桌子,我需要。它是可調整的,所有的表格標題都是正確的,但問題在於,它給出了一個人每天按照時間安排的獨立行。我想將具有相同ID的行合併爲一行。我不是指colspan或rowspan。 我得到
<table align="center" border="1">
<tbody>
<tr><th>identity</th>
<th>2017-03-20</th>
<th>2017-03-21</th>
<th>2017-03-22</th></tr>
<tr><td id="12345">12345</td>
<td id="12345">8</td>
<td id="12345"></td>
<td id="12345"></td></tr>
<tr><td id="12345">12345</td>
<td id="12345"></td>
<td id="12345">8</td>
<td id="12345"></td></tr>
<tr><td id="12345">12345</td>
<td id="12345"></td>
<td id="12345"></td>
<td id="12345">8</td></tr>
</tbody></table>
表中的表我想獲得,而不是
<table align="center" border="1">
<tbody>
<tr><th>identity</th>
<th>2017-03-20</th>
<th>2017-03-21</th>
<th>2017-03-22</th></tr>
<tr><td id="12345">12345</td>
<td id="12345">8</td>
<td id="12345">8</td>
<td id="12345">8</td></tr>
</tbody></table>
這裏這只是一個簡單的例子,用簡單的數據。我其實有40-50個不同的身份,通常的長度是30而不是3天。該查詢依賴於另一個應用程序,所以我必須能夠使用會話變量來說明時間段。這就是爲什麼我不能手動建立一個適當的MySQL查詢(或至少我不知道如何)。 再次,我敢肯定,有一種超級優雅和簡單的方法來做到這一點與jquery,但我沒有看到如何。
再一次,簡單優雅的在mysql查詢編輯。 – Gusmar