Meowsalot: Zwischenüberschrift einfügen

Hallo,

folgenden Code habe ich

<h3 class="einsatz">Projektleiter</h3>

<?php foreach($ProjektleiterModule as $array){ ?>
<div ><?php echo htmlspecialchars($array['mpv_vorname'] . " " . $array['mpv_name']) ?></div>

<?php 
$date = date_create($mg_von);

$m = 1;

for($i=0; $i < $tage+1; $i++) { 

	if ($i == 0) {
		date_add($date, date_interval_create_from_date_string('0 day'));
	} else {
		date_add($date, date_interval_create_from_date_string('1 day'));	
	}

$stmt = $mysqli->prepare("SELECT ms2f_id, ms2f_mid, ms2f_pid, ms2f_tag, ms2f_datum, ms2f_von, ms2f_bis
		   					FROM einsatzzeiten
                            WHERE ms2f_mid=? AND ms2f_tag=? AND ms2f_pid=?");
					
$stmt->bind_param("sss", $veranstaltung, $m, $array['mpv_code']);
$stmt->execute();
$stmt->bind_result($ms2f_id, $ms2f_mid, $ms2f_pid, $ms2f_tag, $ms2f_datum, $ms2f_von, $ms2f_bis);
$stmt->fetch();
$stmt->close(); 

?>

<div class="textfeld">
	
	<label for="ms2f_datum[<?php echo $i+1 ?>]">Datum</label>
		          
	<input  type="text" 
		    name="ms2f_datum[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
		    id="ms2f_datum[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
		    value="<?php echo $i+1 ?>. Tag - <?php echo date_format($date, 'd.m.Y'); ?>" 
		    readonly >
		          
	<input  type="hidden" 
		    name="ms2f_tag[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
		    id="ms2f_tag[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
		    value="<?php echo $i+1; ?>">
		          
	<input  type="hidden" 
		    name="ms2f_pid[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
		    id="ms2f_pid[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
		    value="<?php echo $array['mpv_code']; ?>">
</div>

<div class="textfeld abstand_2">
	
	<label for="ms2f_von[<?php echo $i+1 ?>]">Einsatzzeit</label>
		          
	<input  type="time" 
		    name="ms2f_von[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
		    id="ms2f_von[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
		    value="<?php echo htmlspecialchars($ms2f_von); ?>"> bis

	<input  type="time"
		    name="ms2f_bis[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
		    id="ms2f_bis[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
		    value="<?php echo htmlspecialchars($ms2f_bis); ?>"> Uhr
</div>
<?php $m++; } ?>
<?php } ?>

Jetzt habe ich eine Variable $tage in dieser Steht z.B. eine 3. In der Ausgabe benötige ich immer eine Reihe mehr, also

for($i=0; $i < $tage+1; $i++) {}

Jetzt möchte ich gerne in meinen Reihen bevor die Zusatzreihe kommt eine Zwischenüberschrift einfügen. wie könnte ich dieses machen?

Bis bald!
Meowsalot (Bernd)

  1. Hallo,

    ich habe die Lösung, so füge ich die Zusatzzeile ein

    if ($i == $tage): ?>
    <p>Optionaler Zusatztag</p>		    	
    <?php endif ?>
    

    Bis bald!
    Meowsalot (Bernd)

    1. Hallo Meowsalot,

      Hallo,

      ich habe die Lösung, so füge ich die Zusatzzeile ein

      if ($i == $tage): ?>
      <p>Optionaler Zusatztag</p>		    	
      <?php endif ?>
      

      Wenn du gewährleisten kannst, dass beide Variablen Integer-Werte sind, besser === als Vergleichsoperator nutzen, m.M.n.

      Bis bald!
      Meowsalot (Bernd)

      Gruss
      Henry

      --
      Meine Meinung zu DSGVO & Co:
      „Principiis obsta. Sero medicina parata, cum mala per longas convaluere moras.“
  2. Hallo Meowsalot,

    for($i=0; $i < $tage+1; $i++) {}
    

    Jetzt möchte ich gerne in meinen Reihen bevor die Zusatzreihe kommt eine Zwischenüberschrift einfügen. wie könnte ich dieses machen?

    Ich verstehe die Frage nicht, weil du dich ja zurechtfindest und demzufolge auch weist, dass du alles in der Schleife unterbringen kannst was du möchtest. Kannst du das mal bitte genauer erklären?

    Btw. Ich würde den Output(nur persönliche Vorgehensweise als Anregung) komplett erst mal, bevorzugt mit heredoc/nowdoc, zusammenstellen und dann einfügen, anstatt durch die Schleife simultan.

    Gruss
    Henry

    --
    Meine Meinung zu DSGVO & Co:
    „Principiis obsta. Sero medicina parata, cum mala per longas convaluere moras.“
    1. Hallo Henry,

      denkst Du daran, die HTML Elemente per HEREDOC/NOWDOC erstmal als String aufzubauen und dann ganze HTML Fragmente per echo auszugeben?

      Davon würde ich definitiv abraten. PHP ist letztlich eine Template-Sprache (dem Namen nach ein Hypertext Processor) und darum ist das Einsetzen von PHP-Werten in HTML schon der richtige Weg.

      Nicht richtig ist dieses wiederholte Zusammenbauen von immer dem gleichen Kram... aber ich wiederhole mich.

      Rolf

      --
      sumpsi - posui - clusi
      1. Hallo Rolf,

        denkst Du daran, die HTML Elemente per HEREDOC/NOWDOC erstmal als String aufzubauen und dann ganze HTML Fragmente per echo auszugeben?

        Ja, genauer gesagt meist in Funktionen erzeugt und gekapselt.

        Davon würde ich definitiv abraten. PHP ist letztlich eine Template-Sprache (dem Namen nach ein Hypertext Processor) und darum ist das Einsetzen von PHP-Werten in HTML schon der richtige Weg.

        Wenn das der richtige Weg ist, gibt es bestimmt Gründe dafür? Ich mag leicht nachvollziehbaren Code, möglichst modular, möglichst GrundHTML von PHP getrennt. Daher mache ich das bisher so, lasse mich aber gern eines Besseren belehren.

        Gruss
        Henry

        --
        Meine Meinung zu DSGVO & Co:
        „Principiis obsta. Sero medicina parata, cum mala per longas convaluere moras.“
  3. Hallo Bernd,

    eine kleine Frage: Addierst du hier nicht etwas zu viel?

    	<input  type="text" 
    		    name="ms2f_datum[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
    		    id="ms2f_datum[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
    		    value="<?php echo $i+1 ?>. Tag - <?php echo date_format($date, 'd.m.Y'); ?>" 
    		    readonly >
    		          
    	<input  type="hidden" 
    		    name="ms2f_tag[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
    		    id="ms2f_tag[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
    		    value="<?php echo $i+1; ?>">
    		          
    	<input  type="hidden" 
    		    name="ms2f_pid[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
    		    id="ms2f_pid[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
    		    value="<?php echo $array['mpv_code']; ?>">
    </div>
    
    <div class="textfeld abstand_2">
    	
    	<label for="ms2f_von[<?php echo $i+1 ?>]">Einsatzzeit</label>
    		          
    	<input  type="time" 
    		    name="ms2f_von[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
    		    id="ms2f_von[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
    		    value="<?php echo htmlspecialchars($ms2f_von); ?>"> bis
    
    	<input  type="time"
    		    name="ms2f_bis[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
    		    id="ms2f_bis[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
    		    value="<?php echo htmlspecialchars($ms2f_bis); ?>"> Uhr
    

    So oft, wie hier $i + 1 ausgewertet wird, könntest du überlegen, am Anfang deiner Schleife $j = $i + 1 zu berechnen und dann überall, wo es passt, $j zu verwenden.

    Viele Grüße
    Robert

    1. Hallo Robert,

      da geht noch viel mehr. Dass dieser Code write-only ist und deutlich lesbarer gemacht werden sollte und kann, habe ich ihm vor zwei Wochen schon mal auseinander gesetzt, aber es ging wohl in der Diskussion darüber unter, ob man Code-PHP mit ?> beenden sollte oder nicht.

      Rolf

      --
      sumpsi - posui - clusi