Hi!
Irgendwie bekomm ich das einfach nicht gebacken :/
Mein Datensatz hat z.B. die ID 204, der zugehörige Button die Nummer (change)2... wie geht das? :/Das Statement welches dir sämtliche Datensätze ausgibt, erweiterst du um eine LIMIT-Klausel die dir die ID eines Datensatzes beginnend ab dem n-ten Datensatz liefert.
Es geht einfacher und ohne potentielles Problem, denn die Position in der Ergebnismenge könnte sich zwischen Abfragen und Eintragen der Änderungen ändern (zum Beispiel wegen gelöschter Datensätze). Deshalb lieber die ID anstatt einer Position nehmen. Und die ID steht auch schon bei der Abfrage zur Verfügung. Der Zähler für die Position wird auch nicht benötigt.
Die ID wird als Namensbestandteil des Submit-Buttons eingefügt. Als Wert (value) lässt sie sich leider nicht verwenden, denn auf dem Button soll ja "Bearbeiten" stehen.
printf('<input type="submit" name="change[%s]" value="Bearbeiten" />', $row->id');
(Für den Kontextwechsel beim Einfügen der ID brauchen wir nichts weiter zu unternehmen, da die ID immer nummerisch ist, wenn die ID-Spalte vom Typ INT oder vergleichbar ist. Für die anderen Werte sollte das aber unbedingt erfolgen: htmlspecialchars().)
Wenn PHP Klammern [] sieht, legt es ein Array in $_POST/$_GET an. Das empfangene Script bekommt damit die ID quasi wie bei
$_POST['change'][id] = 'Bearbeiten';
übergeben. Der Wert interessiert nicht weiter, aber der Schlüssel vom ersten Eintrag von $_POST['change'] ist die gesuchte ID. Die extrahiert man mit reset($_POST['change']); $id = key($_POST['change']);
Lo!