PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Eigabe beibehalten ABER nicht automatisch ausfüllen.


Buettgenbach
14.09.2006, 11:59:30
Hallo zusammen.

Habe hier im Forum eine nette Methode gefunden Eingabedaten in einem Formular beizubehalten:

<input type="text" name="plz" maxlength="5" style="border:1 solid #000000;" tabindex="3" class="text" value="<?php echo $_POST['plz']; ?>" />

Klappt auch wunderbar - wenn was ausgefüllt wird behält er das bei. Trotz der Fehlermeldung die ich eingebaut habe da einige Pflichtfelder sind. Soweit so gut.

Nun zu meinem eigentlichen Problem:

value="<?php echo $_POST['plz']; ?>"

Hier liegt der Knackpunkt - das betroffene Eingabefeld wird durch die Angabe Value bereits vorausgefüllt mit dem Text <?php echo $_POST['plz']; ?>, also mit der Funktion die die Eingabe beibehält... es soll zwar die Eingabe vom Benutzer beibehalten werden, aber nicht von Anfang an was im Feld drinstehen (schon garkeine Teile aus dem Quellcode der Datei).

Könnte mir evtl. jemand auf die Sprünge helfen wie ich es hinbekomme diese Funktion des beibehaltens weiterhin nutzen zu können und dennoch ein zunächst leeres Feld zu haben bis jemand da was einträgt.

Verzweifle schon ziemlich habe schon xxx sachen ausprobiert. :(


Auch:
value="<?php if ($_POST) {echo $_POST["daten"];} else {echo "Vorgabe";} ?>">


zeigt keine wirkung außer das von Anfang an im Eingabefeld <?php if ($_POST) {echo $_POST["daten"];} else {echo "Vorgabe";} ?> steht. Bin für jede Hilfe dankbar.

Grüße

<edit>
Zur Verdeutlichung habe ich einen kleinen Ausschnitt des Formulars als .jpg angehägt wie es nachher im Browser erscheint.

KTB
14.09.2006, 12:16:49
Mal ne dumme Frage: hat die Datei in dem das Formular sitzt die Endung php?
Etwas mehr Quelltext wäre auch hilfreich :)
Versuch mal folgendes und poste dein Ergebnis:
<?PHP
echo "<input type=\"text\" name=\"plz\" maxlength=\"5\" style=\"border:1 solid #000000;\" tabindex=\"3\" class=\"text\" value=\"$_POST['plz']\">
?>

Buettgenbach
14.09.2006, 12:38:31
Hi.

Der Nutzer Ruft zuerst eine kontakt.html auf in der das Formular ist. Diese übergibt beim senden durch:

<form method="post" action="kontakt_send.php" name="Formular" onSubmit="return chkFormular()">

Die Daten an die kontakt_send.php weiter welche unter anderem auf die Pflichtfelder prüft aber auch das Formular in fest definierter Form an die in der php vorgegebene Empfängeremail sendet. Wenn Pflichtfelder vergessen wurden wird eine Fehlermeldung unter dem Formular in Rot angezeigt. Siehe screenshot).

Das passiert durch:

if($telefon == ''){
$fehlertelefon = "Sie müssen eine Telefonnummer eingeben!";
include("automotive.html");
die;
}
in der php Datei und durch den Aufruf unter dem Formular:

<tr class="text_bold_red">
<td colspan="6">&nbsp;<?php echo $fehlertelefon ?></td>
</tr>
in der html Datei, also im Formular.

Das alles Funktioniert einwandfrei und durch eben genanntes:

<input type="text" name="plz" maxlength="5" style="border:1 solid #000000;" tabindex="3" class="text" value="<?php echo $_POST['plz']; ?>" />

Hier wird z.B. die Eingabe 12345 bei der Postleitzahl auch beibehalten trotz des neuladen des Dokuments durch die Fehlermeldung.

Mein eigentliches Problem ist ja wie gesagt das er das Formularfeld bereits beim laden der kontakt.html ausfüllt eben mit <?php echo $_POST['plz']; ?> was nicht passieren soll. :) D.h. es soll solange ein leeres Feld sein bis der NUtzer dort was einträgt.. diese Eigabe soll (und wird richtigerweise auch) beibehalten werden bis das Formular ok ist und durch die kontakt_send.php versendet wird.


<tr>
<td width="1">&nbsp;</td>
<td width="60" align="left"><font face="Arial, Helvetica, sans-serif" size="2" class="text">PLZ</font></td>
<td width="10" align="left"><font face="Arial, Helvetica, sans-serif" size="2" class="text">:</font></td>
<td width="155"><font face="Arial, Helvetica, sans-serif" size="2">
<input type=\"text\" name=\"plz\" maxlength=\"5\" style=\"border:1 solid #000000;\" tabindex=\"3\" class=\"text\" value=\"$_POST['plz']\">
</font></td>
<td width="60"><font face="Arial, Helvetica, sans-serif" size="2" class="text_bold">eMail</font></td>
<td width="10"><font face="Arial, Helvetica, sans-serif" size="2" class="text">:</font></td>
<td width="155"> <font face="Arial, Helvetica, sans-serif" size="2">
<input type="text" name="email" style="border:1 solid #000000;" tabindex="8" class="text" value="<?php echo $_POST['email']; ?>" />
</font></td>
</tr>

Hier ein größerer Auszug der kontakt.html mit beiden Varianten, also auch der von dir vorgeschlagenen.
Leider passiert dann folgendes. (siehe Screenshot) und die Daten werden auch nicht mehr beibehalten sondern immer durch \"$_POST['plz']\" ersetzt. :(

xlb
14.09.2006, 12:52:03
hat die Datei in dem das Formular sitzt die Endung php ?
Diese Frage deines "Vorposters" hast du gelesen ? Warum hat das File dann immer noch eine .html Endung ?

Buettgenbach
14.09.2006, 13:02:40
Verzeihung... ich dachte die Datei mit der Eingabe für das Formular müsste in html bleiben um vom Browser einwandfrei aufgerufen zu werden und er meinte die kontakt_send.php (in der das Formular an sich ja AUCH so drinsteht!) - hatte die Frage also einfach falsch verstanden und nicht ignoriert.

Also mein Fehler.. habe die kontakt.html in kontakt.php umbenannt und es klappt jetzt einwandfrei. Auch mit:

<input type="text" name="telefon" style="border:1 solid #000000;" tabindex="6" class="text" value="<?php echo $_POST['telefon'] ?>" />

Vielen Dank nochmal für die Hilfe.