Ausgabe zwischen zwei Tagen aus SQL

  • Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

webana

Mitglied
19 März 2012
160
5
18
Im Allgäu
Hallo,

ich speicher in der mysql Datenbank Arbeitszeiten, kommen - Früstückspause, Fp- Mittagspause und Mp - Gehen ... In diesem Fall 3 Zeilen von einem Tag.

Wie kann ich jetzt bei der Ausgabe zwischen zwei Tagen eine weitere Ausgabe (echo) einfügen?

Sind nicht immer drei Zeilen Pro Tag, Freitags zb nur 2, bzw. bei einer weiteren Abwesenheit auch mal 4.

Denkanstoß würde schon reichen

Gruß Alex
 

sveka

Mitglied
26 Mai 2006
154
1
18
34
Wie speicherst Du denn ab? Wie sieht denn die Datenbank / Tabelle aus? Und wie fragst Du ab?
 

webana

Mitglied
19 März 2012
160
5
18
Im Allgäu
Tabelle:

id, datum, kommen, gehen ...
int, date, time, time, ...

Gibt dann noch eine zweite Tabelle, daten von dieser sollten auch nach dem Tag ausgegeben werden.

Edit: Ich glaub ich habs, hatte es vorher nur nach der Ausgabe eingefügt, jetzt mal davor und es scheint zu funktionieren.

PHP:
    $tag = 0;
...
    $tag = $tag+$row['tag'];
          
    if($tag % $row['tag'] > 0) {
        echo '<tr '.$tr.' class="zusammenfassung"><td colspan="4">-</td><td class="tright">-</td><td class="tright">-</td><td class="tright">-</td><td class="tright">-</td></tr>';
        $tag = 0; 
    }
 

jonas3344

Aktives Mitglied
25 Oktober 2019
139
43
28
38
Das Stichwort dazu wäre Gruppenbruch resp. Gruppenwechsel.

Eine Anleitung dazu => https://php-de.github.io/jumpto/gruppenbruch/

Ich würde mir die Daten zuerst Gruppieren, also einen mehrdimensionalen Array machen, mit dem Tag als höchste Ebene, also z.b.

PHP:
$daten['2021-03-15']['aktivitaeten'] = [];
$daten['2021-03-15']['zusammenfassung'] = [];
$daten['2021-03-16']['aktivitaeten'] = [];
$daten['2021-03-16']['zusammenfassung'] = [];

Und dann kannst du überdiesen Array loopen und alles schön ausgeben.
 
  • Like
Reaktionen: webana

jonas3344

Aktives Mitglied
25 Oktober 2019
139
43
28
38
Ja natürlich. Um beim Beispiel dort zu bleiben:

PHP:
$last_entry = null;

while ($row = $result->fetch_object()) {

   if ($last_entry != $row->marke_name) {
        echo $last_entry.'<br>';
        $last_entry = $row->marke_name;
    }
    echo '- '.$row->modell_name.'<br>';
}