Hallo Meowsalot,
Dadurch habe ich jetzt doch eindeutige Felder?
Fast. Ein paar IDs hast Du übersehen.
Und dein Code ist anmerkwürdig.
- Verschiebe den date_add an's Ende der Schleife. Dann brauchst Du nicht $i==0 abzufragen.
- Verwende die Alternative Syntax für Kontrollstrukturen wenn Du PHP und HTML mischst. Sonst weiß man beim } nicht wohin er gehört.
- Verwende zum Einsteuern von Daten <?= ?> statt <?php echo ?>. Technisch passiert das gleiche, aber das ständige php echo ist wie ein dumpfes Hintergrundrauschen.
- Du benutzt ständig $i+1 und verwendest $i für nichts anderes. Lass doch die Schleife ab 1 laufen und nenne die Variable $tag, dann ist es klarer. Die Endebedingung muss dann natürlich mit <= statt < gebildet werden.
- Hidden Input braucht keine ID, da reicht der name. Es sei denn du willst JavaScript dran rummachen und es per ID suchen.
- Ein hidden input für PID und Tag brauchst Du nicht. Beide stecken im Array-Index der Post-Variablen drin. Wenn Du die geposteten Daten mit foreach($msf_datum as $pid => $datum_tage) verarbeitest, und $datum_tage ebenso, hast Du alle Indexe die Du brauchst.
- Wenn man etwas in einer Schleife ca 10 mal berechnet, lohnt die Ablage in einer Variablen. Dann ist der Code zum Erzeugen des HTML übersichtlicher und wenn sich die Berechnung ändert, muss man nicht 10 Stellen ändern.
- Dein erstes div (class="textfeld") möchte vermutlich in das andere div(class="textfeld_abstand") hinein und dort ein h2 oder h3 sein. Das div wäre dann passenderweise lieber eine section. Alternativ könnte das div ein fieldset sein und die Überschrift ein legend Element, das führt dann aber zu einer anderen Darstellung.
Ach ja. Dein bis-Feld ist unbeschriftet; das "bis" Bröckchen möchte ein label sein. Eventuell passt dein CSS dann nicht mehr ganz, darum habe ich eine Klasse "intervall" hinzugefügt.
<?php
$date = date_create($mg_von);
for($tag=0; $tag <= $tage; $tag++):
$rowId = "[{$array['mpv_code']}][$tag]";
?>
<section class="textfeld">
<h2>
<label for="ms2f_datum<?= $rowId ?>">Datum</label>
<input type="text"
name="ms2f_datum<?= $rowId ?>" id="ms2f_datum<?= $rowId ?>"
value="<?= $tag ?>. Tag - <?= date_format($date, 'd.m.Y'); ?>"
readonly>
</h2>
<label for="ms2f_von<?= $rowId ?>">Einsatzzeit</label>
<input type="text"
name="ms2f_von<?= $rowId ?>" id="ms2f_von<?= $rowId ?>"
value="">
<label class="intervall" for="ms2f_bis<?= $rowId ?>">bis</label>
<input type="text"
name="ms2f_bis<?= $rowId ?>" id="ms2f_bis<?= $rowId ?>"
value=""> Uhr
</section>
<?php
date_add($date, date_interval_create_from_date_string('1 day'));
endfor;
} // Wofür auch immer Du die zweite Klammer brauchtest...
?>
Das finale ?> solltest Du nur schreiben, wenn danach noch HTML kommt. Wenn eine PHP Datei mit PHP-Code endet, lässt man das ?> weg.
Rolf
--
sumpsi - posui - clusi
sumpsi - posui - clusi