Hallo zusammen,
ich habe aktuell nun ein etwas größeres Projekt am Laufen und befinde mich vermutlich in einer gedanklichen Einbahnstraße.
Ich habe gestern einen dynamischen Streamplan aufgebaut, der mir für die aktuelle Woche jeweils alle Stunden (jeweils in 15 Minuten-Schritten) anzeigt.
Dies funltioniert auch soweit, mit folgendem Code:
Das Ergebnis sieht dann in etwa so aus (siehe Anhang).
Nun habe ich aber folgendes Problem.
Die Shows können in dem besagten Interval (alle 15 Minuten) enden oder anfangen.
Jedoch gibt er mir immer nur für jede Stunde alle aus.
Beispiel: Disane hat eine Show am Sonntag (letzte Spalte) von 20.00-22.15 eingetragen, die Show wird aber bis 23 Uhr eingetragen.
Habt ihr da eventuell eine Lösung, oder Verbesserungsvorschläge?
Aktuell weiß ich echt nicht mehr weiter.
Schon dumm, wenn man seinen eigenen Quellcode nicht mehr blickt
.
Die Datenbank-Tabelle der Shows, ist im Anhang aufgeschlüsselt mit entsprechenden Spalten.
Über jede Hilfe wäre ich echt dankbar!
Liebe Grüße
- reaL-Insanity
EDIT:
Auch nach Umbauen etc. bekomm ich es zum Verrecken nicht hin.
Vermutlich habe ich wirklich einen echt krassen Logikfehler da drin.
ich habe aktuell nun ein etwas größeres Projekt am Laufen und befinde mich vermutlich in einer gedanklichen Einbahnstraße.
Ich habe gestern einen dynamischen Streamplan aufgebaut, der mir für die aktuelle Woche jeweils alle Stunden (jeweils in 15 Minuten-Schritten) anzeigt.
Dies funltioniert auch soweit, mit folgendem Code:
PHP:
// Wie viel Minuten soll eine Einheit (Tabellenzelle) haben
$minutes = 15;
$cellsperhr = (60/$minutes);
// Aktuelle Einheit der Stunde
$currentquarter = ceil(date("i", time())/$minutes);
// Interval
$interval = 1;
// Tage der aktuellen Woche
$weekdays = $common->getDaysInWeek(date("W", time()), date("YY", time()));
// Datum der Tage
$datesinweek = array();
foreach($weekdays as $day){
array_push($datesinweek, date("d.m.Y", time()+$day));
}
// Zeiten zusammenbauen
$hrs = array();
for($i = 0; $i <= 23; $i+=$interval){
array_push($hrs, ((strlen($i) == 1) ? "0".$i : $i).":00");
}
// Tabellenkopf
$plantable = '<table border="1" id="streamplan" cellpadding="0" cellspacing="0">';
$plantable .= '<tr><td width="200px"></td>';
// Wochentags-Anzeige
foreach($weekdays as $day){
$id = ($day == 0 ? 'today' : 'other');
$plantable .= "<th width='200px' class='".$id."'>".date("D", $day+time())."</th>";
}
$plantable .= '</tr>';
// Stunden-Anzeige
// Show der aktuellen Woche aus der DB holen
$dayshows = Model::getDataset(date("W", time()), "ShowsPerWeeknumber", true, "", true);
foreach($hrs as $hr){
$blocks = ceil($show['TimeDifference']/$minutes);
// Skalierung der Stunden durchlaufen
for($i = 1; $i <= $cellsperhr; $i++){
$plantable .= '<tr>';
// Ausgabe der Stunden
$plantable .= ($i == 1 ? '<th height="100px" valign="top" rowspan="'.$cellsperhr.'">'.$hr.'</th>' : '');
foreach($datesinweek as $day){
$currinterval = 0;
// Prüfen ob der aktuelle Tag heute ist
$today = ($day == date("d.m.Y", time()) ? 'today' : 'other');
// Aktuelle Stunde ermitteln
if($hr == date("H:00", time()) AND $currentquarter == $i ) {
$now = 'now';
}else{
$now = '';
}
$plantable .= '<td width="200px" class="'.$today.'" id="'.$now.'">';
//if($currinterval <= $show['TimeDifference']){
foreach($dayshows as $show){
//$users = array();
//$arraypush = array_push($users, $show['UserName']);
//var_dump($arraypush);
if($show['StartDay'] == $day or $show['EndDay'] == $day){
$showhrs = array();
for($l = $show['StartHour']; $l <= $show['EndHour']; $l++){
array_push($showhrs, $l.":00");
}
//echo $show['UserName']." on ".$show['StartDay']." @ ".$show['StartHour']." - ".$show['EndHour']."<br>";
//
if(in_array($hr, $showhrs) AND $show['StartDay'] == $day){
$plantable .= "".$show['UserName']." ";
//$plantable .= $showblocks;
//$markedblocks += $minutes;
//echo "<script type='text/javascript'>console.log('Show: ".$show['UserName']." | Aktueller Block: ".$currinterval." - Bloecke gesamt: ".$show['TimeDifference']."');</script>";
}else{
//$plantable .= $i;
}
}
}
//}
$plantable .= '</td>';
}
$plantable .= '</tr>';
$showblocks += $i;
}
}
$plantable .= '</table>';
$view->assign('WeekNumber', date("W", time()));
$view->assign('DateSpan', date("d.m.Y", time()+$weekdays[0])." - ". date("d.m.Y", time()+$weekdays[6]));
$view->assign('PlanTable', $plantable);
$titlename = "Week ".date("W", time());
Das Ergebnis sieht dann in etwa so aus (siehe Anhang).
Nun habe ich aber folgendes Problem.
Die Shows können in dem besagten Interval (alle 15 Minuten) enden oder anfangen.
Jedoch gibt er mir immer nur für jede Stunde alle aus.
Beispiel: Disane hat eine Show am Sonntag (letzte Spalte) von 20.00-22.15 eingetragen, die Show wird aber bis 23 Uhr eingetragen.
Habt ihr da eventuell eine Lösung, oder Verbesserungsvorschläge?
Aktuell weiß ich echt nicht mehr weiter.
Schon dumm, wenn man seinen eigenen Quellcode nicht mehr blickt
Die Datenbank-Tabelle der Shows, ist im Anhang aufgeschlüsselt mit entsprechenden Spalten.
Über jede Hilfe wäre ich echt dankbar!
Liebe Grüße
- reaL-Insanity
EDIT:
Auch nach Umbauen etc. bekomm ich es zum Verrecken nicht hin.
Vermutlich habe ich wirklich einen echt krassen Logikfehler da drin.
Zuletzt bearbeitet: