Hmm. W zapytaniu które podałeś brakuje tylko 'id'.
Wnioskuje że:
- to zapytanie ma być wykonane po formularzu nr 2,
- to id (w zapytaniu) masz przekazać z pierwszego formularza do drugiego.
Więc zatwierdzając formularz nr 1, przekazujesz do skryptu zmienną $_POST['id'], więc generując formularz nr. 2 dodajesz tylko jedno pole (określające id edytowanego elementu):
<?php
$id_kategorii = (int) $_POST['id'] : ; // Plus jakies sprawdzenie czy jest > 0, i niepuste itd.
// I np. tak:
$ret .= '<p>Id: <input type="text" name="id" value="' . $id_kategorii . '" /></p>';
// a jak nie chcesz zeby to bylo widoczne to tak:
$ret .= '<input type="hidden" name="id" value="' . $id_kategorii . '" />';
?>
I tym sposobem z formularza nr. 2 dostajesz zmienne w tablicy post: id, name, type i position, które możesz sobie wrzucić do zapytania sql.
Wsjo.
Edit:
Acha i w drugim formularzu przydałoby się jakoś pobrać dane edytowanej (bo chyba to chcesz zrobić) kategorii.
Nie zauważyłem skąd chcesz brać 'name' i 'type' edytowanego elementu. Nie ma wcześniej żadnego zapytania do bazy.