2012-04-12 46 views
0

我遇到了将用户的某些调度信息转换为管理员可以编辑的表的问题。转换此调度信息

的方式我的数据库安装,现在,它看起来像:

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 

如果每个用户都有一个一行,显示当他们被安排在每周的那一天时的一个例子。

+0

列(或字段)应该是User,Monday_start_time,Monday_end_time,Tuesday_start_time等等,对吧? – 2012-04-12 03:13:27

回答

0

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

$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"; 
+0

问题在于,我希望列的标题是一周中的某一天,而不是为day_of_week设置一列。这就是我主要遇到的麻烦。 – Ben 2012-04-14 00:19:25

0

事情是这样的:

<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> 

这里假设你有每天为每个用户的记录 - 我不知道这是否是实际上你的数据库也有。