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>
这假设您有每个用户每天的记录——我不知道数据库中是否也有这样的记录 列或字段应该是用户、星期一开始时间、星期一结束时间、星期二开始时间等,对吗?问题是我希望列的标题是一周中的一天,而不是一周中的一天。这就是我在做这件事时遇到的主要困难。