从数据库中检索数据并显示在表的一个单元格中

时间:2015-11-03 22:49:13

标签: php html mysql html-table

enter image description here

我正在使用php,javascript和html构建医生预约系统。我在表的一个单元格中显示多个数据库结果时遇到问题。例如,我有一周的表格显示一周5天的日期以及9-5个时段。我有一个数据库,每周5天保存9-5的数据。 (希望有道理)。我有一个名为appointment_availability的列名,所有插槽都设置为Y.(因此它们都可用)。我的问题是我想在每个表格单元格中显示所有可用医生的doctor_id。我不确定如何做到这一点,并且在我的html表的新行上显示每个doctor_id时......每个单元格应显示doctor_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]?>

&#34;医生可用性表&#34;是问题所在。正如你所看到的那样,它将打印相同的doctor_id 3次,因为它应该显示1,2,3而不是1,1,1。

我希望这是有道理的,我一直在努力解决这个问题,并且没有运气。在谷歌或堆栈溢出找不到任何东西来帮助解决这个问题。任何想法,解决方案或任何人都可以指出我正确的方向,将非常感谢!!

我刚刚意识到这种方法会花费太长时间并且编程实践非常糟糕。我将不得不运行许多不同的查询来填充表格,因为查询获取的是日期和时间,表格的每一行都是不同的日期和时间。

有没有更干净的方法呢?

我只想显示一张显示3位医生可用性的表格。为期一周的每一天。

4 个答案:

答案 0 :(得分:2)

我自己实际上并不这样做,但我希望它能显示原则

更改

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>09:00 - 10:00</th><td>";
while ($row = $result->fetch_assoc()) {
 echo $row['doctor_id']; 
}
    echo "</td><td>  </td>";
    echo "<td></td>";
    echo "<td></td>";
    echo "<td></td>";
//      echo "</div>"; and remove the open div
    echo "</tr>";

答案 1 :(得分:1)

echo "<tr>";
    echo "<th>09:00 - 10:00</th>";
echo "<td>";
while ($row = $result->fetch_assoc()) {
     echo $row['doctor_id']
}
"</td>";
    echo "<td>  </td>";
    echo "<td></td>";
    echo "<td></td>";
    echo "<td></td>";
    echo "</div>";
echo "</tr>";

答案 2 :(得分:0)

您使用GROUP_CONCAT为您处理。但它只是MySQL;

SELECT GROUP_CONCAT(doctor_id SEPARATOR ',') as ids
FROM appointment_slots 
WHERE appointment_avaliability = 'Y' 
AND appointment_date = '2015-11-02' 
AND appointment_time = '09:00:00' 

如果您处于严格模式,则可能需要GROUP BY appointment_avaliability。

答案 3 :(得分:-1)

你的脚本中发生了很多事情,这使得它很难理解。要简单地将mysql查询打印到表中,您可以使用以下代码

<table>
<?php
$res = mysqli_query("select * from table");
for ($row == mysqli_fetch_row($res) 
{ 
?> 
<tr> 
  <td><?php echo $row[0]?><td>
  <td><?php echo $row[1]?><td>
  <td><?php echo $row[2]?><td>
</tr> 
<?php 
} 

?>
</table>

如果需要,您也可以使用循环替换,但您需要修复逻辑并使查询更具动态性

你还需要用HTML作为基础和php来重写你的代码,以填补空白,而不是相反。