Rozwiązanie czysto poglądowe (nie przyczepiam się do luk typu sql injection w skrypcie, jednak miej świadomość że tak się w PHP nie pisze funkcji bazodanowych)
Możesz przecież przekazać zmienną $result (ewentualnie przepisać wszystkie zmienne do jednej tablicy asocjacyjnej)
<?php
function createDiaryEntries($entries, $grade) {
while($entry = $entries->fetch_assoc()) {
insertIntoDataBase($entry, $grade);
}
}
function insertIntoDataBase($entry, $grade) {
//insert into costam (imie, nazwisko, ocena) values ($entry['imie'], $entry['nazwisko'], $ocena)
}
?>
A wywołanie powyższego wystarczy zrobić tak:
//wysłany formularz tutaj, zainicjowana $_GET['ocena'];
$result = $conn->query($sql);
$grade = $_GET['ocena'];
createDiaryEntries($result, $grade);
Przy czym sam musisz zadbać o to, żeby ogarnąć czy formularz został wysłany (np zbadać, czy zmienna $_GET['ocena']) istnieje w pliku ocena.php, możesz też akcję dać na osobny skrypt.
Sprawdzenie czy została taka zmienna wysłana np poprzez:
function isFormSubmitted() {
return array_key_exists('ocena', $_GET);
}
if (isFormSubmitted()) {
//dalsze dzialania
}