Auge: Problem mit Leerzeichen im name-Attribut

Beitrag lesen

Hallo

Folgendes wird ausgegeben:

<form name='f' method='post' action='Loeschen.php'>
<input type='checkbox' name='das ist ein fragebogen' />das ist ein fragebogen<br>
<input type='checkbox' name='Fragebogen 1' />Fragebogen 1<br>
<input type='checkbox' name='Fragebogen 41' />Fragebogen 41<br>
<input type='checkbox' name='Fragebogen 4431' />Fragebogen 4431<br>
<input type='checkbox' name='Fragebogen 51' />Fragebogen 51<br>
<input type='checkbox' name='Fragebogen51' />Fragebogen51<br>
<input type='submit' name='löschen' value='löschen' /></form>

Der Name entspricht also dem Titel des Fragebogens, jedoch kann ich in diesem Beispiel nur den letzten Fragebogen ("Fragebogen51") löschen.

Im Attribut „name“ steht der Name des Formularelements, was dazu führt, dass du mehrere POST-Elemente ($_POST['Fragebogen 1'], $_POST['Fragebogen 41'], und so weiter) übermittelt bekommst. Diese haben jedoch keine Werte, die in den Formularelementen jedoch im Attribut „value“ stehen müssten. Dein HTML-Aufbau ist also fehlerhaft.

Da die Checkboxen offensichtlich eine Gruppe bilden, in der du keinen, einen oder mehrere Werte auswählen kannst, sollten sie alle einen Namen tragen und für die Verarbeitung mit PHP als Array gekennzeichnet sein (z.B. name="frageboegen[]"). Die namen der Fragebögen wechseln in die Value-Attribute, so dass sie im auswertenden PHP-Skript, deinem Beispiel folgend, als $_POST['frageboegen'][0] - $_POST['frageboegen'][4] mit den Fragebogennamen als Werte zur Verfügung stünden. Die Anzahl der Elemente richtet sich nach der Anzahl der ausgewählten Checkboxen. Ist keine ausgewählt, wird auch kein einziges $_POST['frageboegen'] übermittelt.

  $delete = "DELETE FROM Fragebogen WHERE titel='$p'";

Vergiss nicht die kontextgerechte Maskierung. Für den Fall der Verwendung der mysqli-Funktionen wäre das für einen String "… WHERE titel='". mysqli_real_escape_string($connection, $p) ."'".

Tschö, Auge

--
Wenn man ausreichende Vorsichtsmaßnahmen trifft, muss man keine Vorsichtsmaßnahmen mehr treffen.
Toller Dampf voraus von Terry Pratchett