Wenn du das ganze per "normalem" Formularversand machen würdest, könntest du bspw. die Eingabefelder so benennen, dass du in PHP ein Array bekommst, welches du dann durchläufst.
Kurz zum Ablauf:
Der User muss erst die Anzahl der Schüler angeben. Dann wird mit JS eine Tabelle nach den Muster
<input id="name_1"><input id="vname_1">
<input id="name_2"><input id="vname_2">
etc.
in ein bislang leeres <div> geschrieben.
Der User gibt seine Daten ein und klickt auf speichern.
In der aufgerufenen "AJAX"-Funktion (1. Posting) werden dann die Schüler einzeln in die DB eingetragen.
Das kannst du per AJAX natürlich analog machen.
Wie? Ich baue in JS eine 2-dim Array für die Schüler und schicke das einfach an die php-Datei? Die php-Datei versteht das dann als Array?
Dein anderer Vorschlag wäre dann folgendes gewesen, oder?
<form action="schuler_in_db_eintragen.php" method="post">
<input id="name_1"><input id="vname_1">
<input id="name_2"><input id="vname_2">
etc.
<input type="submit">
</form>
Richtig?