Php 正在转换此计划信息

Php 正在转换此计划信息,php,mysql,database-design,Php,Mysql,Database Design,我在将用户的一些计划信息转换为管理员可以编辑的表时遇到问题 我的数据库目前的设置方式如下所示: user_id | day_of_week | start_time | end_time 12 | Monday | 8:00 | 12:00 12 | Tuesday | 8:00 | 12:00 12 | Wednsday | 8:00 | 12:00 12 | Thursday

我在将用户的一些计划信息转换为管理员可以编辑的表时遇到问题

我的数据库目前的设置方式如下所示:

user_id | day_of_week   | start_time | end_time
12      | Monday        | 8:00       | 12:00
12      | Tuesday       | 8:00       | 12:00
12      | Wednsday      | 8:00       | 12:00
12      | Thursday      | 8:00       | 12:00
12      | Friday        | 8:00       | 12:00
12      | Saturday      | 8:00       | 12:00
但随机时间——这并不重要。每个用户在数据库中有7行

无论如何,当我从数据库中提取时,我会得到一个对象数组,每行一个,如下所示:

stdClass Object ( [user_id] => 12 [day_of_week] => Sunday [start_time] => 00:00:00 [end_time] => 00:00:00 ) 
stdClass Object ( [user_id] => 12 [day_of_week] => Monday [start_time] => 00:00:00 [end_time] => 00:00:00 ) 
我想要显示数据的方式是,每个用户都有一行,该表的列是用户、星期一、星期二等。但我想不出如何做到这一点

如果有人能给我指出正确的方向,或者给我一些关于这个想法的想法,那就太好了。谢谢

编辑:

一个我正在努力实现的例子

User_id | Monday | Tuesday | Wednesday | Thursday | Friday | Saturday | Sunday
12      | 8 - 12 | 8 - 12  | 8 - 12    | 8 - 12   | 8 - 12 | 8 - 12   | 8 - 12
13      | 6 - 11 | 8 - 13  | 8 - 15    | 6 - 14   | 9 - 11 | 8 - 22   | 8 - 23

其中每个用户都有一行,显示他们计划在一周中的那一天工作的时间。

我不完全清楚您在问什么。我认为可能是如何格式化和显示查询结果。如果是这样,这可能接近您想要的:

$sql = "SELECT *
        FROM table
        WHERE user_id = $userid";   // where $userid is, for example, 12
$result = db -> query($sql);
$a = $result->result();
$rows = $a[0];

$resultarray = array();
// convert each stdClass object to an array:
foreach ($rows as $row_idx => $row)
{
    $new_array = array();
    foreach ($row as $idx => $item)
         $new_array[$idx] = $item;
    $resultarray [$row_idx] = $new_array;
}

print_r ($resultarray);  // to see what should be pretty easy to display.  For example:

echo "<table>\n";
echo "<tr>";  // create heading from field names
foreach ($resultarray[0] as $colname => $col)
      echo "<th>$colname</th>";
echo "</tr>";
// output all data rows
foreach ($resultarray as $row)
{
     echo "<tr>";
     foreach ($row as $col)   // each column of row
          echo "<td>$col</td>";
     echo "</tr>\n";
}
echo "</table>\n";
大概是这样的:

<table>
<thead>
<tr><th>User</th><th>Monday</th><th>Tuesday</th><th>Wednesday</th><th>Thursday</th><th>Friday</th><th>Saturday</th><th>Sunday</th></tr>
</thead>
<tbody>
<?php

while($row = mysql_fetch_object($resource)) { 
    if($row->day_of_week == "Monday") { 
        echo "<tr><td>{$row->user_id}</td><td>{$row->start_time} - {$row->end_time}</td>";
    }
    if($row->day_of_week == "Sunday") { 
        echo "<td>{$row->start_time} - {$row->end_time}</td></tr>";
    }
    else {
        echo "<td>{$row->start_time} - {$row->end_time}</td>";  
    }
}
?>
</tbody>
</table>

这假设您有每个用户每天的记录——我不知道数据库中是否也有这样的记录

列或字段应该是用户、星期一开始时间、星期一结束时间、星期二开始时间等,对吗?问题是我希望列的标题是一周中的一天,而不是一周中的一天。这就是我在做这件事时遇到的主要困难。