PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Werte aus einzelnem Formularfeld ändern


StefanGe
03.03.2003, 16:04:27
Hallo,

ich schicke Eingaben aus einem Formular mit post an ein PHP-Script. Dieses schreibt die Eingaben in eine test.htm und zeigt diese an (in der test.htm ). Stark verkürzt sieht wie folgt aus:

$ergebnisse= implode("", file("test.htm"));
foreach($HTTP_POST_VARS as $key=> $val)
//$ergebnisse= str_replace("MM", "Michael Mustermann", $ergebnisse);
$ergebnisse= str_replace("<$key>", $val, $ergebnisse);
echo $ergebnisse;

Klappt auch alles soweit prächtig. Jetzt möchte ich aber die Eingabe aus einem bestimmten Feld des Formulars (name="autor") verändern, *bevor* die Werte in das Feld "<autor>" in der test.htm geschrieben werden. Hintergrund ist, dass ich Kürzel, die der Benutzer in dieses Feld eingibt, durch den vollständigen Text ersetze möchte. Also z.B. "MM" durch "Michael Mustermann".
Die auskommentierte Zeile ändert natürlich leider alle "MM" und nicht nur die aus dem Feld "autor" :-(
In den anderen Feldern darf "MM" natürlich nicht geändert werden - und genau da liegt mein Problem.
Lässt sich das überhaupt mit obiger Konstruktion realisieren?

Wäre sehr dankbar für Vorschläge!

c4
03.03.2003, 16:17:46
Du koenntest in der HTML-Datei eine auskommentierte Zeile stehen haben, die Du als Indikator für die darauf folgende Zeile nutzt. Dann diese Zeile im Array suchen und dann str_replace nur auf die folgende anwenden.
Bsp:
<!-- Ich bin ein Dummy-Text fuer ein wenig str_replace() //-->
<input type="text" name="author" value="MM">

Das wirst Du natuerlich noch vor dem implode() machen duerfen...

StefanGe
03.03.2003, 18:03:09
Hi c4,

das klingt nach einer guten Idee! Ich habe den zu ändernden Bereich jetzt mit <!-- start --> und <!-- ende --> markiert (tatsächlich ist es eine Textarea, die sich über mehrere Zeilen erstreckt.) Leider raff ich überhaupt nicht, wie ich diesen Bereich auch finde (geht das mit array_search?). Und: Wo genau baue ich dass in mein Script ein? Vermutlich vor der echo Zeile, oder?

c4
03.03.2003, 18:11:43
So sollte es klappen.

$ergebnisse=file("test.htm");

$i=0; while ($i<count($ergebnisse))
{ if ($ergebnisse[$i]=="<!-- start -->") { str_replace("MM", "Manfred Maust", $ergebnisse[$i]); } $i++; }

$ergebnisse=*implode("",*$ergebnisse);
foreach($HTTP_POST_VARS*as*$key=>*$val)
{ $ergebnisse=str_replace("<$key>",*$val,*$ergebnisse); }

echo*$ergebnisse;

StefanGe
05.03.2003, 14:28:28
Hi!
Hab's leider nicht früher geschafft zu antworten. Leider klappt das Script nicht. Es wird einfach nichts ersetzt.

:-((

c4
05.03.2003, 15:33:35
Sorry, das Skript ist nicht einmal vollständig... Also nochmal:

$ergebnisse=file("test.htm");

$i=0; while ($i<count($ergebnisse))
{ if ($ergebnisse[$i]=="<!-- start -->") { $ergebnisse[$i+1]str_replace("MM", "Manfred Maust", $ergebnisse[$i+1]); } $i++; }

$ergebnisse=*implode("",*$ergebnisse);
foreach($HTTP_POST_VARS*as*$key=>*$val)
{ $ergebnisse=str_replace("<$key>",*$val,*$ergebnisse); }

echo*$ergebnisse;


Es fehlte eine Wertzuweisung nach dem Ersetzen. Könnte jetzt klappen.