2012-04-12 5 views
0

Ich habe ein Problem beim Konvertieren einiger Planungsinformationen von Benutzern in eine Tabelle, die Administratoren bearbeiten können.Konvertieren dieser Planungsinformationen

Die Art und Weise meine Datenbank-Setup nun richtig ist, sieht es so aus:

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 

Aber mit zufälligen Zeiten - das ist nicht, was zählt. Jeder Benutzer hat 7 Zeilen in der Datenbank.

Wie auch immer, wenn ich aus meiner Datenbank bin ziehen Ich erhalte eine Reihe von Objekten, eines für jede Zeile, die wie folgt aussehen:

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) 

Die Art, wie ich die Daten angezeigt werden sollen, jeder Benutzer habe eine Zeile und die Spalten dieser Tabelle wären User, Montag, Dienstag, etc. Ich habe aber Schwierigkeiten damit zu kommen, wie das geht?

Wenn mir jemand in die richtige Richtung zeigen oder mir ein paar Gedanken zu dieser Idee geben könnte, wäre das großartig. Vielen Dank.

Edit:

Ein Beispiel dafür, was ich versuche,

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 

zu erreichen Wenn jeder Benutzer eine Zeile hat, die Zeit, wenn sie für diesen Tag der Woche geplant sind.

+0

Die Spalten (oder Felder) sollten Benutzer sein, Monday_start_time, Monday_end_time, Tuesday_start_time etc, oder? –

Antwort

0

Ich bin nicht ganz klar darüber, was Sie fragen. Ich denke, es könnte sein, wie die Abfrageergebnisse formatiert und angezeigt werden. Wenn ja, dann ist dies wahrscheinlich in der Nähe zu dem, was Sie wollen:

$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

Das Problem damit ist, dass ich möchte, dass die Überschrift einer Spalte ein Tag der Woche ist, anstatt eine Spalte für day_of_week zu haben. Daran habe ich hauptsächlich Probleme. – Ben

0

Etwas wie folgt aus:

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

Dies setzt voraus, Sie einen Datensatz für jeden Benutzer für jeden Tag - ich weiß nicht, ob das was du auch in deiner Datenbank hast.