Su formulario onsubmit parece estar mal onsubmit debe ser una función javascript function no es un php file . si necesita enviar un archivo php, debe usar action atributo de form . actualmente lo has dado como report.php . es posible que deba cambiarlo a yearpdf.php o redirigir en el report.php
EDICIÓN 1:
el problema es que estás llamando a window.open que abre una url pero no envía su valor de entrada. así que la primera vez no pasará nada. pero sin embargo en el siguiente window.open o en la próxima actualización, existe la variable de sesión de report.php y, por lo tanto, recupera los datos. puedes seguir algunas opciones
- coloque el código de report.php para procesar el envío en yearpdf.php y cambie el formulario "acción" a yearpdf.php. y eliminar la función onclick
- O Redirigir de report.php a yearpdf.php al final de report.php. Para redirigir, puede usar
header('Location: https://www.yoursite.com/yearpdf.php');. y eliminar la función onclick - O modifique su código JavaScript para enviar algo como esto
window.open("yearpdf.php" + "?course_year=" + document.getElementsByName("course_year")[0].value));y cambia tu$r1=$_SESSION['year1'];a$r1=$_GET['course_year'];en añopdf.php
La opción 1 es la forma recomendada y sencilla. La opción 2 es una sobrecarga y no funcionará si genera cualquier html antes de la redirección. y la Opción 3 produce una ventana innecesaria.