Moin Moin...,
im Prinzip ja, das Problem war etwas diffizieler, wie das meist so ist und ich jetzt nicht ellenlangen Programmcode zitieren wollte.
Letzlich war es aber im Prinzip so wie du und dein Vorgänger schrieb.
Das Kernproblöem ist eigentlich etwas anderes, was ich in Verbindung mit Arrays habe.
Ic h muss dazu sagen, ich komme noch aus einer Zeit wo man mit Basic arbeitete... und mit PHP fing ich erst vor 1,5 Jahren an.
Bisher bracuhte ich keine Arrays, konnte mich anders behelfen, aber jetzt sitz ich vor dem Problem :-)
Hintergrund, ich habe eine HTML Seite in der zum Beispiel folgender Code ist.
HTML-Code:
<select id="Auswahlfeld2" name="anrede">
<option value="Herr">Herr</option>
<option value="Frau" SELECTED>Frau</option>
<option value="Firma">Firma</option>
<option value="Organisation">Organisation</option>
</select>
Ich möchte nun diesen Code nach PHP transferierten und zwar so, das in Abhängigkeit von Variablen das "Selected" an der richtigen Stelle steht.
Diese Variablen stehen in einem Array namens $info.
Das Array selbst ist inhaltlich so aufgebaut.
PHP-Code:
$info = array('anrede'=>Herr, 'vorname'=>Peter, 'schuhgroesse'=>42);
Der Witz ist doch der, das ich das HTML Programm mit
PHP-Code:
$index2 = count($file_array) ; selbst in ein Array packe.
Was haben wir jetzt, ein eindimensionales Array mit meinem HTML Code und ein zweidimensionales Array mit Variablennamen und Variableninhalt.
Wie gehe ich weiter vor ?
Als erstes nehme ich mir Zeile für Zeile des HTML Programms vor, prüfe ob Schlüsselwörter darin enthalten sind.
select id und name , Wenn ja, dann prüfe ich, ob das was in "" steht in meinem zweiten Array zu finden ist.
Wenn ja, merke ich mir den Inhalt der entsprechenden variable.
Wenn ich mir nun die nächste Zeile vornehme prüfe ich wieder auf Schlüsselwörter.
option value
Okay, ist dort nun dieser gemerkte Wert vorhanden, baue ich den String zu Fuß neu zusammen. Wenn nicht, lösche ich aus dem String das SELECTED heraus.
So zu8mindest die Theorie:
und das mache ich tatsächlich:
PHP-Code:
$index1 = 1 ;
$index2 = count($file_array) ;
while ($index1 < $index2) {
$line = $file_array[$index1];
if (eregi('input', $line)) {
$q = 0 ;
while ($q < $n) {
$q ++ ;
// in $schluessel[$q]. stehen die Variablennamen die Übergeben worden sind, also z.B. "anrede" .
// in $tausch[$q] stehen die Inhalte zu den Variablen , also z.B. "Herr"
$suchmuster = '/value=""/';
$wennabfrage = 'name="'.$schluessel[$q].'"';
$suchmuster = '/value=""/';
$ersetzung = 'value="$'.$schluessel[$q].'"';
if (eregi($wennabfrage, $line)) {
$line = preg_replace($suchmuster, $ersetzung, $line);
}
}
}
$line = htmlentities($line) ;
if (eregi("SELECTED", $line)) {
$line = ereg_replace("SELECTED", "", $line);
$line = ereg_replace(" ", "", $line);
}
$q = 0 ;
while ($q < $z) {
if (eregi("option value=", $line)) {
if (eregi($tausch[$q], $line)) {
$line = "<option value=\"".$tausch[$q]."\" SELECTED>".$tausch[$q]."</option>" ;
}
}
$q++ ;
}
Ergebnis:
Ich bekomme die ehemals HTML Seite nun als PHP Produkt mit den zuvor eingegeben Werten nochmals auf dem Bildschirm präsentiert, und kann nun entsprechend der gemachten Eingaben reagieren.
Oder anders gesagt: Ich will, das die Eingaben NOCHMAL auf dem Bildschirm angezeigt werden mit der Möglichkeit diese zu korrigieren zu können.
Erst mit dem Setzen eines, Ja ich habe es geprüft Häckchens, wird das Formular auch endgültig weiterverarbeitet.
Hört sich simple an, aber der Aufwand ist doch etwas größer, weil die Routine universell fuhnktionieren soll. Hab ich mich verständlich ausgedrückt.
Vorschläge, Ideen, Routinen, Denkanstöße sind jederzeit willkommen, zumal ich dabei nur lernen kann.
Gruss aus Kiel
Peter