12 – Tabellen & Formulare 📊✏️

Strukturierte Daten und Benutzereingaben – richtig umgesetzt

📊 1. Was sind Tabellen – und was nicht?

Eine Tabelle ist eine **Gitterstruktur aus Zeilen und Spalten**, die verwandte Daten übersichtlich darstellt.

Erlaubt: Preislisten, Stundenpläne, Vergleichstabellen, Noten.
Verboten: Seiten-Layouts, Menüs, Karten – dafür gibt es Flexbox und Grid!

⚠️ Warum keine Layout-Tabellen?
- Screenreader lesen Zelle für Zelle – chaotische Reihenfolge
- Keine Responsivität
- Schwer zu warten
→ Tabellen sind nur für Daten!

📚 Vertiefung auf W3Schools – HTML Tabellen

W3Schools zeigt alle Tabellen-Elemente, Attribute und barrierefreie Beispiele.

🔗 W3Schools: HTML Tables

🧱 2. Einfache Tabelle – Schritt für Schritt

Jede Tabelle braucht drei Grundelemente:

Beispiel: Preisliste

<table>
  <tr>
    <th>Produkt</th>
    <th>Preis</th>
  </tr>
  <tr>
    <td>Apfel</td>
    <td>1,20 €</td>
  </tr>
  <tr>
    <td>Banane</td>
    <td>0,80 €</td>
  </tr>
</table>
Produkt Preis
Apfel 1,20 €
Banane 0,80 €
💡 Unterschied:
- <th> = Kopfzelle (fett, oft zentriert)
- <td> = Datenzelle (normaler Text)

♿ 3. Barrierefreie Tabellen – semantisch korrekt

Für Screenreader und Suchmaschinen braucht eine Tabelle mehr als nur <table>:

<table>
  <caption>Webhosting-Pakete</caption>
  <thead>
    <tr>
      <th scope="col">Paket</th>
      <th scope="col">Preis/Monat</th>
      <th scope="col">Speicher</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Basic</td>
      <td>2,99 €</td>
      <td>10 GB</td>
    </tr>
    <tr>
      <td>Pro</td>
      <td>5,99 €</td>
      <td>50 GB</td>
    </tr>
  </tbody>
</table>
💡 Merke: Ohne <caption> und scope verstehen Screenreader die Tabelle nur schwer – das ist eine Barriere!

🧩 4. Verbundene Zellen – colspan und rowspan

Manchmal soll eine Zelle mehrere Spalten oder Zeilen umfassen:

Beispiel: Ein Titel über mehrere Spalten:

<tr>
  <th scope="col">Uhrzeit</th>
  <th colspan="3" scope="col">Montag</th>
</tr>
⚠️ Achtung: Bei verbundenen Zellen musst du die Anzahl der <td>/<th> in den betroffenen Zeilen anpassen – sonst verschiebt sich alles!

📚 Vertiefung auf W3Schools – HTML Formulare

W3Schools erklärt alle Formular-Elemente, Attribute und barrierefreie Beispiele.

🔗 W3Schools: HTML Forms

✏️ 5. Was sind Formulare?

Formulare ermöglichen es Benutzern, Daten an deine Website zu senden – z. B. Kontaktanfragen, Login, Suche.

Das Grundgerüst:

♿ 6. Barrierefreie Formulare – richtig verknüpfen

Jedes Eingabefeld braucht ein verknüpftes <label>:

<label for="email">E-Mail-Adresse:</label>
<input type="email" id="email" name="email" required>

→ Das for-Attribut im <label> und die id im <input> müssen identisch sein.

Für Gruppen (z. B. Radiobuttons):

<fieldset>
  <legend>Geschlecht:</legend>
  <label><input type="radio" name="geschlecht" value="m"> Männlich</label>
  <label><input type="radio" name="geschlecht" value="w"> Weiblich</label>
</fieldset>
💡 Warum?
- Screenreader sagen: „E-Mail-Adresse, Eingabefeld“
- Klick auf das Label fokussiert das Feld (größere Klickfläche!)
- Ohne Verknüpfung: unzugänglich!

❌ 7. Häufige Fehler & Lösungen

Fehler Lösung
Tabelle ohne <caption> Immer eine aussagekräftige Überschrift hinzufügen
Formular ohne <label> Jedes Eingabefeld braucht ein Label mit korrektem for/id
id und for stimmen nicht überein Prüfe: for="email"id="email"
Tabelle für Layout genutzt Verwende Flexbox oder Grid – niemals <table> für Layout!

🧠 8. KI als Lernpartner – guter Prompt

❌ Schlecht: „Gib mir ein Formular.“ ✅ Gut: „Kannst du mir ein barrierefreies Kontaktformular mit Name, E-Mail, Radiobuttons für das Thema und Textarea zeigen – inklusive korrekter Labels, for/id-Verknüpfung, <fieldset> und Erklärung, warum jedes Element wichtig ist?“

🎓 Jetzt kannst du strukturierte Daten und Benutzereingaben semantisch korrekt und barrierefrei umsetzen!

→ Zum Abschlussprojekt