• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Arrays in HTML

Nitamud

Mitglied
Hallo,

ich melde mich auch mal wieder mit einer Frage. In Html kann man ja eine Array-Notation nutzen.

Wenn ich aber etwas in dieser Art prodzuiere:

HTML:
<p>

        <label for=answer[1][0]>1</label>
        <input type="radio" class = "antworten"  name="antwort" id="answer[1][]" value="1" >
        <label for=answer[1][1]>2</label>
        <input type="radio" class = "antworten"  name="antwort" id="answer[1][]" value="2" >
        <label for=answer[1][2]>3</label>
        <input type="radio" class = "antworten"  name="antwort" id="answer[1][]" value="3" >
        <label for=answer[1][3]>4</label>
        <input type="radio" class = "antworten"  name="antwort" id="answer[1][]" value="4" >
        <label for=answer[1][4]>5</label>
        <input type="radio" class = "antworten"  name="antwort" id="answer[1][]" value="5" >
        <label for=answer[1][5]>6</label>
        <input type="radio" class = "antworten"  name="antwort" id="answer[1][]" value="6" >
        <label for=answer[1][6]>7</label>
        <input type="radio" class = "antworten"  name="antwort" id="answer[1][]"  value="7" >

    </p>

schlägt der Validator Alarm und meldet, dass ich mehrmals die gleich ID vergebe.
(Was ja auch stimmt, aber durch den Array sollte sich das doch aufheben, oder?)
Die Labels werden aber trotzdem den richtigen Radio-Buttons zugeordnet.

Darf man das so verwenden? oder muss man auf andere Möglichkeiten
der Benennug zurückgreifen?

mfg Nita
 
Werbung:
Bei den Input-Feldern gehören die Array-Klammern in das name- und nicht in das id-Attribut.

Der name-Attribut wird ja auch schließlich per PHP dann verarbeitet.

Du verwendest also id's wie antwort1, antwort2, antwort3, usw., dann brauchst du auch bei den labels keine Array-Klammern mehr.
 
Mir ist durchaus klar worauf man mit PHP Zugriff hat. Da eine Gruppe von Radiobuttons aber zu jenen Formularelementen zählt, die maximal einen skalaren String an das Script übergeben, wäre eine Array-Notation hier, im Gegensatz zu den Mehrdimensionalen-Typen wenig sinnvoll.

Eine Bennunge antwort1 ... antwort(n) wäre zwar durchaus möglich, ich habe diese Frage aber gestellt da man dann sehr leicht den Überblick verlieren kann(z.B bei 20 Fragen alla 5-7 Anworten). Wohin gehört jetzt Antwort 97?
Darum würde ich das ganze gerne besser ordnen und in einem Mehrdimensionalen Array ablegen. Jeder Frage würden dann die Antwort so zugewiesen. Dadurch könnte man auch schneller die entsprechenden Labels erkennen,
aber weil der Validator hier rumkommt, frage ich mich ob man das so lösen darf....
 
Werbung:
Sorry, ich habe übersehen, dass es Radio-Buttons sind.

Ich kann deine Frage nicht direkt beantworten, aber ich wüsste nicht, warum deine Lösung schlimm sein sollte. Es sind "nur" Validierungsfehler, und ich hatte Seiten, auf denen sich gleiche IDs nicht vermeiden ließen. Diese Art von Validierungsfehler wird keine Suchmaschine, keinen Screenreader und auch keinen User stören. Und Layout- bzw. Browserdarstellungs-Fehler entstehen dadurch auch nicht..
 
Mir ist durchaus klar worauf man mit PHP Zugriff hat. Da eine Gruppe von Radiobuttons aber zu jenen Formularelementen zählt, die maximal einen skalaren String an das Script übergeben, wäre eine Array-Notation hier, im Gegensatz zu den Mehrdimensionalen-Typen wenig sinnvoll.

Eine Bennunge antwort1 ... antwort(n) wäre zwar durchaus möglich, ich habe diese Frage aber gestellt da man dann sehr leicht den Überblick verlieren kann(z.B bei 20 Fragen alla 5-7 Anworten). Wohin gehört jetzt Antwort 97?
Darum würde ich das ganze gerne besser ordnen und in einem Mehrdimensionalen Array ablegen. Jeder Frage würden dann die Antwort so zugewiesen. Dadurch könnte man auch schneller die entsprechenden Labels erkennen,
aber weil der Validator hier rumkommt, frage ich mich ob man das so lösen darf....

Ich habe mir das nicht wirklich durchgelesen aber du suchst das:
Code:
<input name="answer[]">

Lässt sich dann abrufen:
Code:
$_POST['answer'][0]

Mehrdimensionale Arrays sind nicht möglich, das müsstest du so umgehen:
Code:
<input name="answer_1[]">
<input name="answer_1[]">
<input name="answer_2[]">...
 
Ich habe mir das nicht wirklich durchgelesen aber du suchst das:
Code:
<input name="answer[]">

Das war zwar wie bereits oben beschrieben nicht das Gesuchte, weil es sich um Radiobuttons handelt, aber deine Anwort bezüglich der Dimensionen war äußerst hilfreich :)

Trotzdem bleibt die Frage bestehen , ob man dies Notation für die Id's nutzen darf um eine bessere Strukturierung der Labels und Buttons zu erreichen.
 
Werbung:
Das war zwar wie bereits oben beschrieben nicht das Gesuchte, weil es sich um Radiobuttons handelt, aber deine Anwort bezüglich der Dimensionen war äußerst hilfreich :)

Trotzdem bleibt die Frage bestehen , ob man dies Notation für die Id's nutzen darf um eine bessere Strukturierung der Labels und Buttons zu erreichen.

Ja, stimmt. Ich hatte irgendwie Mehrfachauswahl im Kopf und mich deshalb noch wegen den Radios gewundert :)

Nein, solche ID's sind nicht erlaubt.
Das ist nur beim Name-Attribute erlaubt.

Lässt du das Formular nicht per PHP generieren? Bei mind. 100 Fragen? :O
Dann könnte sich das ja darum kümmern.
 
Werbung:
Ok, danke damit ist meine Frage geklärt.

Und natürlich lasse ich das Formular per PHP generieren, ich hab doch nicht ewig Zeit ^^

Warum dann überhaupt diese Notation? Du erhältst innerhalb eines foreach() für jede Dimension des Arrays index->value bzw. key->value. Damit lassen sich unique IDs erstellen.
 
Warum dann überhaupt diese Notation? Du erhältst innerhalb eines foreach() für jede Dimension des Arrays index->value bzw. key->value. Damit lassen sich unique IDs erstellen.

Ich war nur daran interessiert ob sowas mit HTML erreichbar wäre.
(mehr aus Eigeninteresse daran, als am praktischem Nutzen daraus)
 
Werbung:
Das wäre so, als würde man, fragen, ob sich mit der Zange auch ein Nagel in die Wand schlagen ließe. Sofern die Zange schwer genug, wird es wahrscheinlich gehen, aber warum sollte man das tun, wenn es für die Aufgabe besser geeignete Werkzeuge gibt?

HTML ist lediglich für das Markup zuständig. Die Funktionalität übernehmen Scriptsprachen.
 
Zurück
Oben