$id = $_POST['id'][$key];
$name1 = $_POST['name1'][$key];
$name2 = $_POST['name2'][$key];
^ tato cast je podla mna urcite zle.
Foreach fungujre tak ze zobere kazdy jeden prvok nachadzajuci sa v poli. A pre kazdy jeden z nich spravi co mu povies.
Ty si si obsah $_POST zobral a rozbil na $key a $val co su veci s ktorymi pracujes vnutri for each. Ale nie s $_POST, lebo to je stale to iste velke pole ktore si mal na zaciatku. Ak chces pouzivat $_POST, tak kazdy jeden prvok je pristupny cez $key.
$_POST[$key] == $val (= hodnota aktualnej iteracie prechodu nad polom).
Cize ak mas $_POST[0] co obsahuje ['name1'], ['name2'], ['id'] tak $_POST[0] je rozobrate na key = 0 a val = $_POST[0]
Skus si zbehnut tento kus kodu aby si tomu chapal: (prevzate z
https://www.php.net/manual/en/control-structures.foreach.php)
$a = array(
"one" => 1,
"two" => 2,
"three" => 3,
"seventeen" => 17
);
foreach ($a as $k => $v) {
echo "\$a[$k] => $v.\n";
}
Takze si myslim, ze ten zly blok kodu musi vyzerat skor nejak takto:
$id = $val['id'];
$name1 = $val['name1'];
$name2 = $val['name2'];