Ich verstehe Dich so, dass Du ein Template oder eine Funktion willst, die quasi ein- und das selbe Formular ausgibt, damit Du nicht mehrere ändern musst.
Dafür gibt es ca. 1 Mio Möglichkeiten mit unterschiedlichen Vor- und Nachteilen - und das ist eine konservative Schätzung. Eine stell ich Dir vor.
Du hast Die Daten optimal in einem Array:
<?php
$arrFormdata['id']='0815';
$arrFormdata['foo']='Na';
$arrFormdata['bar']='so';
$arrFormdata['tok']='auch';
$arrFormdata['gret']='was aber';
?>
Dann könnte die Funktion zum Ausgeben des Formulars die fehlenden Formulardaten durch passende leere Werte ersetzen und danach das Forular mit - je nach Kontext (HTML, Input, Textarea/Button, Javascript) oder Inhalt ( → siehe intval()
) entschärften(sic!) Daten ausgeben.
function writeForm ( $caption, $arrFormdata = false ) {
if ( ! is_array( $arrFormdata ) ) {
foreach ( [ 'id', 'foo', 'bar', 'tok', 'baz', 'gret' ] as $i ) {
$arrFormdata[ $i ] = '';
}
}
?>
<form id="<?='F_' . intval( $arrFormdata['id'] ); ?>">
<fieldset><legend><?=htmlspecialchars( $caption );?></legend>
<input id="id" value="<?=intval( $arrFormdata['id'] ); ?>"><br>
<input id="foo" name="foo" value="<?=htmlspecialchars( $arrFormdata['foo'], ENT_QUOTES ); ?>" /><br>
<textarea id="bar" name="bar"><?=htmlspecialchars( $arrFormdata['bar'] ); ?><textarea><br>
<button id="send" name="send" onclick="say('<?=trim( json_encode( $arrFormdata['gret'] ),'"' ); ?>')"><?=htmlspecialchars( $arrFormdata['tok'] ); ?></button>
<fieldset>
</form>
<?php
}
?>
Dann muss man die Funktion nur mit (zum Editieren) oder aber ohne Angabe des Arrays (oder mit einem leeren Wert wie false
, ''
statt des Arrays) aufrufen:
<?php
writeForm ( 'Formular mit Daten (zum Editieren)', $arrFormdata );
writeForm ( 'Formula ohne Daten (Für neuen Datensatz)');
Hier das gesamte, funktionsfähige Beispiel:
<?php
$arrFormdata['id']='0815';
$arrFormdata['foo']='Na';
$arrFormdata['bar']='so';
$arrFormdata['tok']='auch';
$arrFormdata['gret']='was aber';
# ...
writeForm ( 'Formular mit Daten (zum Editieren)', $arrFormdata );
writeForm ( 'Formula ohne Daten (Für neuen Datensatz)');
function writeForm ( $caption, $arrFormdata = false ) {
if ( ! is_array( $arrFormdata ) ) {
foreach ( [ 'id', 'foo', 'bar', 'tok', 'baz', 'gret' ] as $i ) {
$arrFormdata[ $i ] = '';
}
}
?>
<form id="<?='F_' . intval( $arrFormdata['id'] ); ?>">
<fieldset><legend><?=htmlspecialchars( $caption );?></legend>
<input id="id" value="<?=intval( $arrFormdata['id'] ); ?>"><br>
<input id="foo" name="foo" value="<?=htmlspecialchars( $arrFormdata['foo'], ENT_QUOTES ); ?>" /><br>
<textarea id="bar" name="bar"><?=htmlspecialchars( $arrFormdata['bar'] ); ?><textarea><br>
<button id="send" name="send" onclick="say('<?=trim( json_encode( $arrFormdata['gret'] ),'"' ); ?>')"><?=htmlspecialchars( $arrFormdata['tok'] ); ?></button>
<fieldset>
</form>
<?php
}
?>
und der Output:
<form id="F_815">
<fieldset><legend>Formular mit Daten (zum Editieren)</legend>
<input id="id" value="815"><br>
<input id="foo" name="foo" value="Na" /><br>
<textarea id="bar" name="bar">so<textarea><br>
<button id="send" name="send" onclick="say('was aber')">auch</button>
<fieldset>
</form>
<form id="F_0">
<fieldset><legend>Formula ohne Daten (Für neuen Datensatz)</legend>
<input id="id" value="0"><br>
<input id="foo" name="foo" value="" /><br>
<textarea id="bar" name="bar"><textarea><br>
<button id="send" name="send" onclick="say('')"></button>
<fieldset>
</form>
Man kann übrigens auch Template-Systeme benutzen. Verbreitet ist z.B. Smarty.