【发布时间】:2015-11-06 03:29:58
【问题描述】:
我正在使用 php、javascript 和 html 构建一个医生预约系统。我在表格的一个单元格中显示多个数据库结果时遇到问题。例如,我有一个一周表,显示一周中 5 天的日期以及 9-5 个时间段。我有一个数据库,每周 5 天保存 9-5 天的数据。 (希望这是有道理的)。我有一个名为约会可用性的列名称,所有插槽都设置为 Y。(所以它们都是可用的)。我的问题是我想在每个表格单元格中显示所有可用医生的医生 ID。我不确定如何执行此操作,并且此刻它在我的 html 表的新行上显示每个医生 ID ......每个单元格都应该显示医生 ID 1,2 和 3,因为每个医生每小时都有空,整个星期。我知道这可能不清楚,但很难解释......
我的代码是:
<?php
echo "
<table width='80%' align='center' >
<div id='head_nav'>
<tr>";
echo"<th>Time</th>
<th>02-11-2015</th>
<th>03-11-2015</th>
<th>04-11-2015</th>
<th>05-11-2015</th>
<th>06-11-2015</th>
</tr>
</div>";
$sql = "SELECT doctor_id FROM appointment_slots WHERE appointment_avaliability = 'Y' AND appointment_date = '2015-11-02' AND appointment_time = '09:00:00';";
$result = $conn->query($sql);
while ($row = $result->fetch_assoc()) {
echo "<tr>";
echo "<th>09:00 - 10:00</th>";
echo "<td>" .$row['doctor_id'] . $row['doctor_id'] . $row['doctor_id'] . "</td>";
echo "<td> </td>";
echo "<td></td>";
echo "<td></td>";
echo "<td></td>";
echo "</div>";
echo "</tr>";
}
echo "<tr>
<th>10:00 - 11:00</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</div>
</tr>
<tr>
<th>11:00 - 12:00</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</div>
</tr>
<tr>
<th>12:00 - 01:00</td>
<td> </td>
<td></td>
<td></td>
<td></td>
<td></td>
</div>
</tr>
<tr>
<th>01:00 - 02:00</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</div>
</tr>
<tr>
<th>02:00 - 03:00</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</div>
</tr>
<tr>
<th>03:00 - 04:00</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</div>
</tr>
<tr>
<th>04:00 - 05:00</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</div>
</tr>";
echo "</table>";
[![Image displaying my problem][1]][1]?>
“医生可用性表”是问题所在。如您所见,它打印了 3 次相同的医生 ID,而它应该显示 1,2,3 而不是 1,1,1。
我希望这是有道理的,我已经尝试了好几天,但没有运气。在谷歌上找不到任何东西或堆栈溢出来帮助解决这个问题。任何想法、解决方案或如果有人能指出我正确的方向,将不胜感激!
我刚刚意识到这种方法将是公平的太长和非常糟糕的编程实践。我将不得不运行许多不同的查询来填充表格,因为查询正在获取日期和时间,并且表格的每一行都是不同的日期和时间。
有没有更简洁的方法来做到这一点?
我只想显示一个表格,显示 3 位医生的可用性。一周内的每一天。
【问题讨论】:
-
您正在依次显示 $row['docter_id'] 3x。迭代器不在下一行。您的选择查询返回 3 行,每个医生一行
-
您需要对单个 td 标签进行循环。
-
没有。问题在于您未能掌握规范化的概念(起初它可能是一个棘手的概念)。数据库表不是电子表格。
-
您正在寻找的是交叉表或数据透视表。如果您是 mysql 新手,这会很棘手,但是您可以在单个查询中完成此操作。
标签: php html mysql html-table