Wie funktioniert diese Codezeile?

illuminatus26

Erfahrenes Mitglied
Hallo zusammen,

ich habe folgende Codezeile aus dem Buch "PHP & MySQL von Kopf bis Fuss", die ich nicht 100%-ig verstehe.

PHP:
echo '<input type="checkbox" value="' . $zeile['id'] . '" name="loeschen[]">';

Kann mir das jemand genauer erklären?
Normalerweise müsste dadurch ja ein Array im globalen Array $_POST erzeugt werden, dass den Namen "loeschen" trägt. Das ist mir klar, nur wie klappt es, dass mehrere Werte eingefügt werden?
Passiert das hinzufügen von Werten implizit am Ende des Arrays?

Vielen Dank...
 
loeschen[] bedeutet, das in $_POST['loeschen'] ein Array beinhaltet. Währe loeschen ohne die [], dann währe $_POST['loeschen'] ein einfacher Wert

HTML:
<input type="checkbox" value="1" name="loeschen[]">
<input type="checkbox" value="2" name="loeschen[]">
<input type="checkbox" value="3" name="loeschen[]">
Versus
<input type="checkbox" value="10" name="feld10">
 
In diesem Fall wird es wohl mehrere Checkboxen geben die dann zwar alle den selben Namen haben "loeschen" aber denen jeweils verschiedene Werte "$zeile[id]" zugewiesen werden.

Diese Zeile steht vermutlich in einer Schleife die eine Datenbankabfrage durchläuft und diese Werte dann als VALUE einträgt.
 
Dank an Euch beide.

Diese Zeile steht vermutlich in einer Schleife die eine Datenbankabfrage durchläuft und diese Werte dann als VALUE einträgt.

Genau so ist es. Es wird zuerst für jeden Eintrag der Datenbankabfrage eine Checkbox erzeugt und deren Wert wird auf die ID des Eintrags in der Datenbank gesetzt.
Ich glaube, mir war nicht ganz klar, wie die Checkbox arbeitet und da lag mein Verständnisproblem.

Ist es richtig, dass nur solche Einträge ins Array $_POST['loeschen[]'] übernommen werden, die auch angehakt sind?
 
falsch. Es gibnt kein $_POST['loeschen[]'], sondern ein $_POST['loeschen'] und das ist en Array.
 
Aber da ist es dann richtig, also das nur die markierten Checkboxen ihren Wert liefern.
 
Aha, ich war bisher in dem Glauben, dass $_POST ein Array ist und man auf die Werte darin über den Index zugreift.
z.B. Wenn ich ein Textfeld mit dem name-Attribut "vorname" habe, dann kann ich nach dem senden des Formulars über $_POST['vorname'] darauf zugreifen.

Dadurch, dass ich aber im name-Attribut zwei eckige Klammern anhänge, erzeuge ich doch so gesehen ein 2-dimensionales Array.

Bin verwirrt...
 
Ist ein bisschen verwirrend, das stimmt.

PHP:
<?php
$abc = array("wert 1", "wert 2", "wert 3");
echo $abc[0];

//ist das selbe wie
?>

<input type="checkbox" value="wert 1" name="abc[]">
<input type="checkbox" value="wert 2" name="abc[]">
<input type="checkbox" value="wert 3" name="abc[]">

<?php
echo $_POST["abc"][0];
?>

Der POST-Name ist einfach der Name des Arrays.
 
Hallo zusammen,

habe das nun noch einmal ein paar Tage auf mich wirken lassen.
Danke noch mal für die Erklärung.
Dürfte nun klar sein.
 
Nur um noch mal ein wenig Fachchinesisch umherzuwerfen. Das ganze nennt sich 2-Dimensionales Array (oder allgemeiner mehrdimensional). Da solltest du bei Google auch noch mehr zu finden :)
 
Zurück