Checkboxen "checked" werden nicht übermittelt
Kalle_B
- php
Hallöle,
hier ein seltsames Phänomen, das gestern einen ganzen Arbeitstag behoben werden musste. Thema: Terminmanagement für eine Messegesellschaft.
In der HTM- Tabelle eines Besuchers habe ich Zeilen der Aussteller, jede mit drei Checkboxen: Der Besucher möchte dringend (prio_1) oder weniger dringend (prio_2) mit diesem Aussteller sprechen.
Der dritte Haken (prio_3) wird in einer anderen HTM- Tabelle gesetzt, wenn der Aussteller den Besucher sprechen möchte. Wird hier zur Information angezeigt (disabled):
<tr class='kl bggelb'>
<td class='sp00'>
<input type='hidden' name='kontakt_id[3]' value='75887'>
<input type='hidden' name='partner_id[3]' value='1532'>
<input type='hidden' name='prio_1_alt[3]' value='1'>
<input type='hidden' name='prio_2_alt[3]' value='0'>
<input type='hidden' name='prio_3_alt[3]' value='0'>
<input type='hidden' name='bemerkung_alt[3]' value=''>
</td>
<td class='sp01 ro'>3</td>
<td class='sp02 np'>
<a href="/tm3/v3/tm_manager.php?zielprogramm=tm422&kennwort=Kalle06&last_login=1149753945&aus_id=1532&bes_id=2079"
class=''>
<button class='link'>man.</button></a>
</td>
<td class='sp03 cm'><input type='checkbox' name='prio_1[3]' value='1' checked ></td>
<td class='sp04 cm'><input type='checkbox' name='prio_2[3]' value='1' ></td>
<td class='sp05 cm'><input type='checkbox' name='prio_3[3]' value='1' disabled></td>
<td class='sp06'>
<input type='text' name='bemerkung[3]' value='' maxlength=5 size=5 >
</td>
<td class='sp07'>Adam Opel AG, Rüsselsh.. -3- <i class=kl>100 20060608 10:37</i></td>
<td class='sp08'>Opel</td>
<td class='sp09'></td>
<td class='sp10'><i class=kl></i></td>
<td class='sp99'></td>
</tr>
Nun passiert es auf einem PC (und nur auf diesem), dass beim Senden des Formulars die Information "checked" verlorengeht.
Das interpretiert das PHP- Programm (verglichen mit dem alten Wert, der als hidden übermittelt wird) als Löschung und löscht den Datensatz, der diesen Wunsch zwischen Besucher und Aussteller definiert.
Auch nach Installation der FF 1.5 (vorher 1.0) blieb dieses Phänomen. Auf den anderen Arbeitsplätzen läuft alles korrekt.
Kann das ein Virus sein?
Die Seite hat mehrere <form>, die sich aber nicht überlappen, hier der Kopf der betroffenen Form:
<!-- LISTE -->
<form action='/tm3/v3/tm_manager.php' method='post' style='display:inline'>
<input type='hidden' name='kennwort' value='xxx'>
<input type='hidden' name='last_login' value='yyy'>
<input type='hidden' name='adr_id' value='2079'>
<input type='hidden' name='gruppen_id' value='[gruppen_id]'>
<input type='hidden' name='zielprogramm' value='tm131'>
<input type='hidden' name='text_alt' value=''>
<table class=liste>
Dieses Formular hat 77 Zeilen x 3 Checkboxen = 231 Checkboxen (das Aussteller- Formular hat 363 x 3 Checkboxen und funktioniert).
Lieben Gruß, Kalle.
eben kommt die Meldung, dass dieses Phänomen jetzt auch auf snderen PCs im Büro des Kunden vorkommt.
Mindestens auf einem, auf dem es vorher fehlerfrei getestet wurde. Der fehlerfrei- Test war zur gleichen Zeit wie der fehlerhafte Test auf dem anderen PC.
Ich kann diesen Fehler von meinem Home- Office nicht auslösen.
Jetzt fällt der Verdacht auf den Server im Büro des Kunden oder auf die Übertragungsstrecke.
Kalle
Moin!
In der HTM- Tabelle eines Besuchers habe ich Zeilen der Aussteller, jede mit drei Checkboxen: Der Besucher möchte dringend (prio_1) oder weniger dringend (prio_2) mit diesem Aussteller sprechen.
Der dritte Haken (prio_3) wird in einer anderen HTM- Tabelle gesetzt, wenn der Aussteller den Besucher sprechen möchte. Wird hier zur Information angezeigt (disabled):
Disabled-Formularelemente werden nicht mit zurückgesendet.
Nun passiert es auf einem PC (und nur auf diesem), dass beim Senden des Formulars die Information "checked" verlorengeht.
Von welchem Formularelement?
Kann das ein Virus sein?
Nein, ein Denk- oder Programmfehler ist wahrscheinlicher. Viren sind nicht dafür bekannt, selektiv in die Checkboxen-Übermittlung von HTML-Formularen einzugreifen. Auch wenn "Virus" als Ausrede besonders leicht von den Lippen geht.
Ansonsten: Dein Problem wird nicht sonderlich klar. Du steckst viel zusehr in deiner Welt, und beschreibst Dinge nicht, die zum grundsätzlichen Verständnis notwendig sind.
Empfehlenswert: Erstmal einen Testcase bauen. HTML-Formular mit wenigen Elementen (z.B. genau eine Zeile des Originals), und ein PHP-Auswerteskript, welches die Inhalte von $_GET, $_POST und $_COOKIE ausgibt (mit var_dump).
- Sven Rautenberg
Moin Sven!
Disabled-Formularelemente werden nicht mit zurückgesendet.
Also diese Checkbox
<td class='sp05 cm'><input type='checkbox' name='prio_3[3]' value='1' checked disabled></td>
wird _nicht_ übermittelt?
Davon bin ich ausgegangen.
Kalle
Moin!
Disabled-Formularelemente werden nicht mit zurückgesendet.
Also diese Checkbox
<td class='sp05 cm'><input type='checkbox' name='prio_3[3]' value='1' checked disabled></td>wird _nicht_ übermittelt?
Davon bin ich ausgegangen.
Nein. Wurde sie noch nie. Disabled-Formularelemente werden NICHT mitgesendet. Readonly-Elemente werden gesendet.
Steht so im W3C-Standard: http://www.w3.org/TR/html401/interact/forms.html#disabled, letzter Punkt der Liste: "Disabled controls cannot be successful".
- Sven Rautenberg
Moin Sven!
dass "disabled" nicht nitgesendet werden, hatte ich im Programm abgefangen (aber im Kopf vergessen).
Beim Beheben eines anderen Programmfehlers wurde jedoch weitere Checkboxen "disable", die ich nicht abgefangen habe.
Deshalb trat der Fehler an Stellen auf, auf die wir beim Testen nicht geachtet haben.
Danke für deinen Hinweis, hat zur KLärung geführt.
Kalle
da readonly- Felder übermittelt werden, habe ich "disabled" durch "readonly" ersetzt:
<td class='sp05 cm'><input type='checkbox' name='prio_3[3]' value='1' readonly></td>
Nun kann man hier aber Haken rein- oder rausmachen.
Verstehe ich unter readonly etwas anderes als Firefox?
Kalle
echo $begrüßung;
da readonly- Felder übermittelt werden, habe ich "disabled" durch "readonly" ersetzt:
Nun kann man hier aber Haken rein- oder rausmachen.
Verstehe ich unter readonly etwas anderes als Firefox?
Weiß ich nicht, aber du könntest auch bei disabled bleiben und ein zusätzliches hidden-Feld mit gleichem Namen und entsprechendem Value notieren, das den Wert des disabled-Feldes überträgt.
echo "$verabschiedung $name";
Moin!
<td class='sp05 cm'><input type='checkbox' name='prio_3[3]' value='1' readonly></td>
Nun kann man hier aber Haken rein- oder rausmachen.
Verstehe ich unter readonly etwas anderes als Firefox?
Ja, offenbar. Readonly-Felder werden nicht in jeder Kombination von Feldtyp und Browser unveränderbar angezeigt.
Das darf man dem Firefox direkt mal als Bug ankreiden. Obwohl: Die Entwickler sind sich da wohl offenbar uneinig.
https://bugzilla.mozilla.org/show_bug.cgi?id=88512
Simple Lösung: Readonly-Chechboxen sind offenbar sinnlos, also gibts man einfach deren Zustand in anderem HTML aus (nicht als Checkbox, sondern als Icon oder Text), und kümmert sich ansonsten nicht weiter drum. Der original ausgegebene Checkbox-Zustand steht ja schließlich noch in der Datenbank.
- Sven Rautenberg