Zwischenüberschrift einfügen
Meowsalot
- php
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)
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)
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
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
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
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
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
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