Nicole: php-html-jscript leere arrays im Formular

Beitrag lesen

Hallo erst mal ;-),
wenn ich ein formular mit checkboxen als array sende,
erhalte ich ein bei der Ausgabe ein Array, dass
nur die ausgewählten checkboxen als Key enthält.

Also Beispiel 100 Checkboxen , davon 3 angeklickt
ergibt ein kleines Array mit 3 Keys.

Da dachte ich mir, dass musss doch auch mit anderen
Formularelementen gehen, denn das spart Zeit und Performance.
So brauche ich zum Beispiel nur das Array auswerten und nicht auch noch jedes Array auf leer prüfen, insbesondere bei
mehrdimensionalen Arrays.

Beispiel 1:
---------------------------------------
<form>
<select name="xy[]" size="1">
<option value=""></option> <!-- merke:leereintrag vorhanden -->
<option value="a">a</option>
<option value="b">b</option>
<option value="c">c</option>
</select>
<input type="submit" value="test">
</form>

Resultat wenn ich Nichts auswähle:
Array
(
    [0] =>
)

// Also Array ist dennoch vorhanden, auch wenn leer.

-------------------------------------

So dachte ich mir zum Testen mal Folgendes aus.
* macht kein Sinn ist aber auch nur ein test
um das Problem leicht zu verstehen.
Beispiel 2:
----------------------
<form>
<select name="xy[]" size="1" onchange="this.value='';">
<option value="a">a</option>
<option value="b">b</option>
<option value="c">c</option>
</select>

<!-- merke:leereintrag NICHT vorhanden -->

<input type="submit" value="test">
</form>

Ich wähle also einen Eintrag und durch den Eventhandler
wird der Wert dann doch zurückgesetzt:

Resultat: Kein Array vorhanden ( Also genau was ich möchte)

Um dieses seltsame Verhalten herauszufinden, worin
sich ein leerer statischer Eintrag und ein leerer
dynamischer Inhalt unterscheiden benutzte Ich Folgendes:

Beispiel 3:
------------
<form>
<select name="xy[]" size="1" onchange="this.value='';">

<option value=""></option> <!-- merke:leereintrag vorhanden -->

<option value="a">a</option>
<option value="b">b</option>
<option value="c">c</option>
</select>
<input type="submit" value="test">
</form>

Jetzt das Gleiche: Eintrag wählen(egal welchen)
wird zurückgesetzt und sollte demnach wie Beispiel 2
funktionieren aber...
Resultat wie  Beispiel 1 (array vorhanden aber leer):

Array
(
    [0] =>
)

***************************************

Das Verhalten liegt nicht an der Auswertung, sondern der
Browser (IE6) sendet in Beispiel 2 gar nichts mit, weil leer.

Gar keine Chance habe ich bei normalen textfeldern
(<input type="text"...), da klappts nicht mal mit eventhandlern.

****************************************

Frage 1 : Gibt es eine logische Erklärung für meine Beispiele ?

Frage 2 : Kann man bei Formularen erzwingen,dass leere Arrays
nicht gesendet werden, ausser bei checkboxen ?
*wennmöglich ohne eventhandler oder javascript...

Ihr fragt euch vielleicht warum ich es mir so schwer
mache, sollen doch die leeren Arrays übergeben werden...

Aber zum einen stört mich mein Unwissen ;-)
und ích habe eine Wirtschaftssimulation
geschrieben, die auf manchen Seiten meherere
Hundert Optionen bietet, sowohl durch Texteingabe , pulldown, checkboxen,etc.

Das bei dieser Vielzahl von leeren Arrays,  Es schöner wäre
nur die wirklichen Werte übergeben zu bekommen,
hätte viele Vorteile.

Weiss Jemand rat ?

Gruss
Nikki