Formular wird zum Teil doppelt abgearbeitet (?????)
jack
- php
Hallo,
habe eine Formularseite zum Bearbeiten z.B. von Kundendaten.
Die Seite wird in einem iframe von der Hauptseite
Der Ablauf der Seite ist ungefähr so aufgebaut:
if ($update) {
// Übergebenen Daten auf korrekte Eingabe überprüfen
// Alte Daten aus der MySQl-Tablle auslesen
// Die alten Daten aus der Tabelle mit den neuen Eingaben auf Aktualisierung vergleichen
// Wenn Aktualisierungen vorgenommen wurden sichere diese in der Tabelle
}
echo("<form action="?id=".$id."&update=status" target="_self" method="post" enctype="text/html" style="margin:0px;">")
// Eingabefelder zur die zu aktualisierden Daten
echo("</form>");
Wenn ich dann auf den absende-Button gehe, wird die Seite zweimal aufgerufen und abgearbeitet!! Wenn die Kollegen auf anderen Rechnern arbeiten, wird die Seite nur einmal abgearbeitet. In meinem Fall bedutete das aber Datenverlust Da ein vollkommen falscher Update-Befehl an MySQL generiert wird beim zweiten abarbeiten.
Das der Fehler hier liegt, haben wir erst beim durchgehen des MySQl-Logs entdeckt.
Ich habe absolut keine Idee warum dieser Fehler auftritt.
Kann mir hier jemand bitte weiterhelfen.
Hallo,
was ist das:
enctype="text/html" ...
LG Kalle
hallo Kalle,
was ist das:
enctype="text/html" ...
"enctype" ist ein Attribut, das "den MIME-Typ (nach RFC 2045) angibt, mit dem das Formular übertragen wird" - siehe http://de.selfhtml.org/html/referenz/attribute.htm#form oder http://www.w3.org/TR/html4/interact/forms.html#adef-enctype. Das ist zulässig.
Grüße aus Berlin
Christoph S.
Moin!
was ist das:
enctype="text/html" ...
"enctype" ist ein Attribut, das "den MIME-Typ (nach RFC 2045) angibt, mit dem das Formular übertragen wird" - siehe http://de.selfhtml.org/html/referenz/attribute.htm#form oder http://www.w3.org/TR/html4/interact/forms.html#adef-enctype. Das ist zulässig.
Das Attribut zu benutzen mag zulässig sein, der Wert "text/html" für das Versenden von Formulardaten ist aber extrem ungewöhnlich und dürfte mutmaßlich zu Problemen führen.
Korrekte Werte, mit denen Browser auch etwas anfangen können, sind:
application/x-www-form-urlencoded (die Standardeinstellung)
multipart/form-data (notwendig für den Versand von Dateien)
text/plain (für den Versand als Mail über mailto:)
- Sven Rautenberg
Der enctype ist wohl eher Uralt. text/plain funzt sowieso nicht, da ich die Daten dann nicht auslesen kann in php. Keine Ahnung warum.
Ich habe die anderen beiden enctypes schon probiert: KEINE Veränderung im Ergebnis.
Ich lasse zum Prüfen eine Report-Datei generieren. Denn im Browser wird nur der erste Aufruf angezeigt, wenn ich zur Kontrolle echo-Befehle einbaue um zu sehen, was abgearbeitet wird. Der zweite scheint versteckt im Hintergrund abzulaufen.
Ich bin mir nicht ganz sicher, aber anscheinend scheint das Problem auch nur im Firefox aufzutreten.
hi,
Ich bin mir nicht ganz sicher, aber anscheinend scheint das Problem auch nur im Firefox aufzutreten.
Was passiert denn, wenn du die enctype-Angabe im Form mal ganz weglässt?
gruß,
wahsaga
Keine Veränderung:
IE arbeitet das Formular einmal ab, Firefox 2x.
echo $begrüßung;
IE arbeitet das Formular einmal ab, Firefox 2x.
Versuche das Problem mit dem geringst möglichen Code nachzuvollziehen. Wenn es auftritt, zeige uns den Code. Wenn es nicht auftritt, erweitere es schrittweise bis der Fehler auftritt. Wenn du dann noch Fragen hast zeige uns den Code, der den Fehler offensichtlich verursacht.
echo "$verabschiedung $name";
P.S. So einen Fehler hatte ich schon mal gesucht, kann mich aber nur vage erinnern, weil es nicht mein Problem war.
<img src="">
<?php
$f = (int)@file_get_contents('test.txt');
$f++;
file_put_contents('test.txt', $f);
?>
So lässt es sich nachstellen. Der IE erhöht die Zahl in der test.txt um 1, der FF um 2. Schuld daran ist das <img> mit dem leerem src, welches nur im FF für den zweiten Script-Aufruf sorgt. Der IE scheint es zu ignorieren.
Diese Nachstellung muss nicht mit der Ursache deines Problems übereinstimmen. Du solltest die Ursache aber mit der obigen Methode finden/einkreisen können.