PHP: Verschachelte Tabelle

Entschuldigung...
das Problem liegt jetzt daris, dass bei Montag, Diensstag, etc, die Spalten in Anzahl Server aufgeteilt werden müssen. also das es bei jedem Wochentag 9 Spalten sind. Jede Spalte gehört an einem Server...
Weiter oben habe ich es beschrieben, mit Bildern und Code.

Nein sicher nicht, ich habe weiter ausprobiert, leider ohne Erfolg..
 
Ist doch simple.

Oben wo du die Server aus der DB auliest und auflistest, speicherst du sie gleich noch in ein Array
PHP:
$$servers[$row['server']] = $row['farbe'];

Und bei der Tabellenausgaben ainfach für jeden Tag alle Servers durchgehen und mit dem Server des Jobs verlgeichen

(ungetestet)
PHP:
    // Ausgabe
    echo "
    <table class='visible'>";
    // Titel-Zeile ausgeben
    echo "
    <tr>
        <th>Zeit</th>";
        
        foreach($days as $dayName)
        {
            echo "<th colspan='".count($servers)."'>".$dayName."</th>";
        }
    echo "</tr>";
    
    // Pro Uhrzeit eine Zeile
    foreach($times as $time)
    {
        echo
        "<tr>
            <th>".$time."</th>";
            // Pro Tag eine Spalte
            foreach(array_keys($days) as $dayCode){
                // Alle Jobs auslesen welche an diesem Tag zur angegeben Zeit eingetragen sind
                foreach($jobs as $job){
                    if($job[$dayCode] == 1 && $job['start'] <= $time && $time < $job['end']){
                        $actualJob = $job;
                        //Ein Job gefunden, Schleife kann abgebrochen werden
                        break;
                    }
                }  
                // Für jeden Server ein Feld ausgeben
                foreach($servers as $serverId => $serverFarbe){
                    if($serverId == $actualJob['server']){
                        echo "<td style='background-color:{$serverFarbe};' />";
                    }else{
                        echo "<td />";
                    }
                }
           }
        echo "</tr>";
    }
    echo "
    </table>

PS: Da du die Feldnamen im SQL gleich den Einträgen im job-Array hast, kannst du den Aufbau des Arrays jobs extrem abkürzen
PHP:
    while($row = $result->fetch()){
        $jobs[] = $row;
    }
 
Batches Allway Sync auf FTBackup: 00:00 bis 00:05 Di - Sa und es zeigt mir am Montag auch noch an.

oder FT-Exchange: 00:00 bis 02:00 Di-Fr hier wird einfach unterbrochen...ich glaube für jeden tag kann momentan nur ein job laufen...

hast du eine idee?
 
Zuletzt bearbeitet:
Du kannst von den ausgewählten Jobs den Server in einen Array ($busyServers) schmeissen und diesen mit dem Server-Array ($servers) abgleichen
PHP:
            foreach(array_keys($days) as $dayCode){
                // alle Jobs auslesen welche an diesem Tag zur angegeben Zeit eingetragen sind
                foreach($jobs as $job){
                	$busyServers[] = array();
                    if($job[$dayCode] == 1 && $job['start'] <= $time && $time < $job['end']){
                        $busyServers[] =$job['server'];
                    }
                }
                
                // für jeden Server ein Feld ausgeben
                foreach($servers as $serverId => $serverFarbe){
                    if(in_array($serverId, $busyServers,){
                        echo "<td style='background-color:{$serverFarbe};' />";
                    }else{
                        echo "<td />";
                    }
                }
            }
 
hmmm was bedeutet diese zeile?
if(in_array($serverId, $busyServers,){
ist diese richtig geschrieben? das Komma?...
 
Das letzte Koma sollte ein ) sein.
if(in_array($serverId, $busyServers)){

Hier wird geprüft, ob die $serverId im Array vorhanden ist
 
Nun, dann ist jetzt der Zeitpunkt gekommen, wo du debuggen musst. Meine ganzen Vorschläge sind einfach so ungetestet aus dem Ärmel gschüttelt.

Jetzt ist es an der Zeit, selber ein wenig aktiv zu werden.
var_dump() ist jetzt dein Freund.

Ein Tipp:
if($job[$dayCode] == 1 && $job['start'] <= $time && $time < $job['end']){
der DayCode musst du wahrscheinlich nicht auf 1 prüfen sondern auf den Tag den du im Kalender drin hast
 
Eher den Tages-Code der Tages-Spalte. Nicht immer Fragen, selber mal überlegen und ausprobieren.
Ev. ist das auch korrekt - ich hab da keine Ahnung.

Ich habe die übersicht über das Gesammtscript auf den 3 Seiten inzwieschen verloren.
 
Zurück