Rolf B: foreach unterbrechen bzw. erst später starten?

Beitrag lesen

Hallo Bernd,

offenbar ist dein arraySEP ja nach Start, Pausen und Ende sortiert.

Ich würde - wie immer - zu EVA raten: Erst alles verarbeiten, dann ausgeben.

	$i = 0;
  $pausen = [];
  $pauseGesamt = 0;
	foreach ($StartEndePause as $arraySEP) {
		$wert = $arraySEP['uss_wert'];
    
    switch ($wert) {
      case 'Start':
        $start = $arraySEP['uss_inhalt'];
        break;
      case 'Ende':
        $ende = $arraySEP['uss_inhalt'];
        break;
      case 'Pause':
        $pauseGesamt += $arraySEP['uss_inhalt'];
        $pausen = '{' . number_format($arraySEP['uss_inhalt'], 2, ',', '') . '}';
        break;
    }
  } ?>
  <span class="zeitZeile">Start:</span><?= htmlspecialchars($start) ?> Uhr<br>
  <span class="zeitZeile">Pause:</span><?php
    if (count($pauseGesamt) > 1) : ?>
       <span class="zeitDetail"><?= implode(' ', $pausen) ?></span>
    <?php endif ?>
    <?= number_format($pauseGesamt, 2, ',', '') . ' Stunde(n)' ?><br>
  <span class="zeitZeile">Ende:</span><?= htmlspecialchars($ende) ?> Uhr<br>

Das hat unter anderem den Vorteil, dass die Ausgabereihenfolge nicht davon abhängt, wie die Daten in der DB stehen.

Deine inline-Styles habe ich durch eine class ersetzt, das macht es lesbarer und sowas gehört eh ins Stylesheet. Ob dein Markup mit <span>blabla</span>wert<br> ideal ist, will ich auch bezweifeln, aber hier kein neues Thema aufmachen. Besser wäre z.B.:

<label class="zeitRow"><span>Start:</span><output>17:30 Uhr</output></label>

Und im stylesheet steht dann

label.zeitRow { display: flex; }
label.zeitRow > span:nth-child(1) { flex-basis: 7.4em; }

Dadurch kommen <span> und <output> nebeneinander und jedes <label> auf eine eigene Zeile. Ich habe den span sehr genau selektiert, damit Du damit nicht den zeitDetails-Span triffst.

Den span.zeitDetail musst Du nun mit geeigneten Mitteln ein- und ausblenden, dann geht der Rest von allein. Ein click-Eventhandler auf dem span, in dem das Wort "Pause" steht, ist nicht geeignet. Spans sind nicht interaktiv.

Rolf

--
sumpsi - posui - clusi