1
我想將4個查詢的結果顯示在一個HTML表格(SQL Server 2012,PHP,HTML)中。我已經可以顯示來自一個數據庫表的結果,但只要我開始查詢其他3個表,它只會從第一個表中返回一行。將多個查詢數據轉換爲單個HTML表格 - 只有一行返回
下面的代碼只有一個查詢並且工作正常 - 它顯示關於患者(名稱,站,房間,導管,個人ID,導管插入日期等)的幾個信息,此刻有三種不同的患者在餐桌上,因此HTML表顯示3行:
<?php
require_once('header.php');
$today = date("d.m.y");
$yesterday = date("d.m.y", time() - 60 * 60 * 24);
$dbyesterday = date("d.m.y", time() - 2*(60 * 60 * 24));
?>
<div class="container" style="padding-top: 80px">
<div id="table_admin" class="span7">
<h3 id="name" style="color: orange">Visitenliste</h3>
</br>
<table class="table table-responsive table-hover">
<thead>
<tr>
<th id="tc">Station</th>
<th id="tc">Patientennummer</th>
<th id="tc">Zimmer</th>
<th id="tc">Name</th>
<th id="tc">Katheterart</th>
<th id="tc">Anlagedatum</th>
<th id="tc"><?php echo $dbyesterday; ?></th>
<th id="tc"><?php echo $yesterday; ?></th>
<th id="tc"><?php echo $today; ?></th>
</tr>
</thead>
<?php
require_once('server.php');
// DB-Query für die Visitenliste
$sql = "SELECT dbo.patients.Patientennummer, Vorname, Nachname, Station, Zimmer, Katheterart, Anlagedatum, VisTod FROM dbo.patients INNER JOIN dbo.cathinsert ON dbo.patients.Patientennummer = dbo.cathinsert.Patientennummer ORDER BY Station ASC, Zimmer ASC";
$result = sqlsrv_query($connection, $sql);
if($result === false) {
die(print_r(sqlsrv_errors(), true));
}
while($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)) {
echo ("<tr class=\"clickable-row\" data-href=\"visitact.php?Patientennummer=".$row["Patientennummer"]."\">");
echo ("<td>".$row["Station"]."</td>");
echo ("<td>".$row["Patientennummer"]."</td>");
echo ("<td>".$row["Zimmer"]."</td>");
echo ("<td>".$row["Vorname"]." ".$row["Nachname"]."</td>");
echo ("<td>".$row["Katheterart"]."</td>");
echo ("<td>".$row["Anlagedatum"]."</td>");
echo ("<td>".$row["VisTod"]."</td></tr>");
}
?>
</table>
</div>
</div>
</body>
</html>
其結果是,我有3行的所有信息我需要一張桌子。 但是,只要我現在開始添加更多的查詢,附加信息就會顯示正確,但僅適用於第一行!它是唯一顯示的行。我真的搞不明白,爲什麼會發生這種情況。 這是代碼不工作(所有信息都顯示正確,即使是來自附加查詢的信息,但只有一行 - >只有第一位患者,儘管3位保存在數據庫中,儘管第一位代碼顯示了所有3位患者以正確的方式):
<?php
require_once('header.php');
$today = date("d.m.y");
$yesterday = date("d.m.y", time() - 60 * 60 * 24);
$dbyesterday = date("d.m.y", time() - 2*(60 * 60 * 24));
?>
<div class="container" style="padding-top: 80px">
<div id="table_admin" class="span7">
<h3 id="name" style="color: orange">Visitenliste</h3>
</br>
<table class="table table-responsive table-hover">
<thead>
<tr>
<th id="tc">Station</th>
<th id="tc">Patientennummer</th>
<th id="tc">Zimmer</th>
<th id="tc">Name</th>
<th id="tc">Katheterart</th>
<th id="tc">Anlagedatum</th>
<th id="tc"><?php echo $dbyesterday; ?></th>
<th id="tc"><?php echo $yesterday; ?></th>
<th id="tc"><?php echo $today; ?></th>
</tr>
</thead>
<?php
require_once('server.php');
// DB-Query für die Visitenliste
$sql = "SELECT dbo.patients.Patientennummer, Vorname, Nachname, Station, Zimmer, Katheterart, Anlagedatum FROM dbo.patients INNER JOIN dbo.cathinsert ON dbo.patients.Patientennummer = dbo.cathinsert.Patientennummer ORDER BY Station ASC, Zimmer ASC";
$visdbyes = "SELECT (SELECT VisiteKind FROM dbo.visits WHERE VisiteDate = '$dbyesterday') AS VisiteKind";
$visyes = "SELECT (SELECT VisiteKind FROM dbo.visits WHERE VisiteDate = '$yesterday') AS VisiteKind";
$vistod = "SELECT (SELECT VisiteKind FROM dbo.visits WHERE VisiteDate = '$today') AS VisiteKind";
$result = sqlsrv_query($connection, $sql);
$result_vdy = sqlsrv_query($connection, $visdbyes);
$result_vy = sqlsrv_query($connection, $visyes);
$result_vt = sqlsrv_query($connection, $vistod);
$data = array();
while($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)){$data['row'] = $row;}
while($row = sqlsrv_fetch_array($result_vdy, SQLSRV_FETCH_ASSOC)) {$data['dby'] = $row;}
while($row = sqlsrv_fetch_array($result_vy, SQLSRV_FETCH_ASSOC)) {$data['yes'] = $row;}
while($row = sqlsrv_fetch_array($result_vt, SQLSRV_FETCH_ASSOC)) {$data['tod'] = $row;}
echo ("<tr class=\"clickable-row\" data-href=\"visitact.php?Patientennummer=".$row["Patientennummer"]."\">");
echo ("<td>".$data['row']["Station"]."</td>");
echo ("<td>".$data['row']["Patientennummer"]."</td>");
echo ("<td>".$data['row']["Zimmer"]."</td>");
echo ("<td>".$data['row']["Vorname"]." ".$data['row']["Nachname"]."</td>");
echo ("<td>".$data['row']["Katheterart"]."</td>");
echo ("<td>".$data['row']["Anlagedatum"]."</td>");
echo ("<td>".$data['dby']["VisiteKind"]."</td>"); //vorgestern
echo ("<td>".$data['yes']["VisiteKind"]."</td>"); // gestern
echo ("<td>".$data['tod']["VisiteKind"]."</td>"); //heute
?>
</table>
</div>
</div>
</body>
</html>
我跳你可以幫忙! 由於提前,
德克
那麼您期望什麼?您可以獨立地遍歷每個結果。最後你只有最後的價值。 –
也許我需要清楚:dbo.patients包含每個病人的一套信息,每個人都只有一行。此外,我必須每天拜訪一次,並將這些信息保存在dbo.visits上。每天都有一堆新的信息存儲在那裏,同一個PatientID,但是這裏有多個信息(每天一個)。現在我需要從最近3天的dbo.visits中顯示「VisiteKind」列 - 而tgis是我無法實現的,因爲上面的代碼發佈了PatientInformation,最後3天是正確的 - 但僅適用於dbo中的第一個患者。耐心。 –
您只將結果分配給循環中的相同變量。最後,您_once_打印被多次覆蓋的變量的內容,現在只包含最後的結果。你應該在這些表之間使用'join'並處理結果集 – Psi