Hallo Christian,
Moin
- müssen dann alle value-Felder einen default-Wert haben, damit sie ersetzt werden können? Das wäre schlecht, weil manche Felder frei gelassen werden können, und andere Felder den gleichen Wert haben könnten (z.B. eine Zahl). Dann sind sie aber über den value-Wert auch nicht mehr identifizierbar
Nun ja, wenn man mein Beispiel so übernimmt für viele Werte, so kann es sein, dass die Felder nicht ersetzt werden. Wenn man nun mein Beispiel übernimmt und die If-Kontrollstruktur für jedes Feld kopiert, so ist sichergestellt, dass alle Werte die von dir angegeben wurden ersetzt werden.
- Oder muß die Identifikation des value-Feldes, das ersetzt werden soll, über das name Attribut im input-tag geschehen. Wie würde man so etwas machen?
Du meinst also, dass das Script die Felder mithilfe vom name-Attribut erkennt? Hmm... Interessant Sache, aber ich denke unnötige Arbeit, da mein Code es für gewöhnlich abdeckt ->
~~~php
<?php
/*
* Diesmal ist der Inhalt des Templates:
* <input type="text" value="%meinWert1%" name="Form1"><br>
* <input type="text" value="%meinWert2%" name="Form2"><br>
* <input type="text" value="%meinWert3%" name="Form3">
*/
$template = file_get_contents("meinFormular.html");
//Wenn für das erste Feld ein Treffer ist:
if(suche) $template = str_replace("%meinWert1%", $wert1, $template);
else $template = str_replace("%meinWert1%", "", $template);
//Wenn für das zweite Feld ein Treffer ist:
if(suche) $template = str_replace("%meinWert2%", $wert2, $template);
else $template = str_replace("%meinWert2%", "", $template);
//Wenn für das dritte Feld ein Treffer ist:
if(suche) $template = str_replace("%meinWert3%", $wert3, $template);
else $template = str_replace("%meinWert3%", "", $template);
?>
Aber mal angenommen, MySQL liefert keine Ergebnisse mehr zurück, was ist dann der Rückgabewert? Nichts! D.h. wir ersetzen einfach stupide alle Felder mit "nichts":
~~~php
<?php
/*
* Diesmal ist der Inhalt des Templates:
* <input type="text" value="%meinWert1%" name="Form1"><br>
* <input type="text" value="%meinWert2%" name="Form2"><br>
* <input type="text" value="%meinWert3%" name="Form3">
*/
$template = file_get_contents("meinFormular.html");
$template = str_replace("%meinWert1%", $wert1, $template);
$template = str_replace("%meinWert2%", $wert2, $template);
$template = str_replace("%meinWert3%", $wert3, $template);
?>
Sollte MySQL also nicht irgendwelche kuriosen Rückgabewerte zurückliefern, ist das alles kein Problem. :-)
Ich stelle mir dieses Verfahren bei großen Datenmengen aber etwas problematisch vor, daher würde ich empfehlen einen Algorithmus zu schreiben. Nützlich dabei wäre wahrscheinlich die Funktion eval() http://php.net/eval.
Ich hoffe, ich konnte alles soweit erklären.
Gruß
Christian Wansart