$_REQUEST es una variable que se usaba en versiones anteriores de php, actualmente esta por compatibilidad y otros temas menores, su uso es en la practica reemplazado por el de $_POST y $_GET
Ahora, vamos por partes que tu codigo tiene muchos errores:
Código HTML:
Ver original<form method="post" action="recepcion.php"><!-- En minusculas, no cambia nada, pero es mas prolijo;) --> <td>Nombre
</td><td> <input type="text" name="nombres[]"></td><!-- Vas a cargar varios, por lo que todos deben tener el mismo nombre, y como es un conjunto de valores, no uno solo, se le agregan los corchetes, que indican que es un array --> <td> Nota
</td> <td> <input type="text" name="calificaciones[]" size="5"> </td><!-- Idem del anterior --> <--
A partir de aca, puedes agregar todas las filas que quieras, sean 2, 5, 20, 100 o N, las que quieras, el algoritmo funcionara para cualquier cantidad que agregues. puedes usar si quieres tu for para meter la cantidad que quieras, da lo mismo.
NOTA: si usas el for, el tr de arriba no va ya que el for los genera a todos iguales, es medio obvio, pero lo aclaro por las dudas.
-->
<td>Nombre
</td><td> <input type="text" name="nombres[]"></td> <!-- fijate que uso ciempre el mismo name --> <td> Nota
</td> <td> <input type="text" name="calificaciones[]" size="5"> </td><!-- y aca tambien, siempre los mismos dos names --> <td> Nota
</td> <td> <input type="text" name="calificaciones[]" size="5"> </td> <input type="submit" value="enviar"> </form> <!-- esto quizas lo recortaste accidentalmente, pero de bede ir -->
Paso a explicar, el atributo name es unico y lleva al nombre con el que identificaras el campo en php, pero en este caso (y muchos otros) tu no tienes un nombre, sino varios, y tu no tienes una nota, sino varias entonces lo que tienes es un arreglo de nombres y un arreglo de notas, los arreglos comparten un mismo nombre y difieren en su indice.
Similar a la sintaxis de php (aunque no tienen nada que ver unos con otros, ojo!) usar
name="nombres[]" lo que hace es agregar un elemento al array nombres incrementando su indice, ¿Que significa? bueno, significa, a efectos practicos, que estas dos expreciones son equivalentes:
Código HTML:
Ver original<!--esto-->
<input type="text" name="nombres[]"> <input type="text" name="nombres[]"> <input type="text" name="nombres[]">
<!-- es lo mismo que esto -->
<input type="text" name="nombres[0]"> <input type="text" name="nombres[1]"> <input type="text" name="nombres[2]">
¿Se entiende la idea? usando la primer forma podemos repetir el codigo tantas veces como queramos y el navegador solo armara los indices, si lo hacemos de la segunda forma, nosotros tenemos que definir los indices explicitamente.
(No considero importante profundizar mas, si tienes dudas o no se entiende, preguntas)
Ahora bien, te dije al principio que $_REQUEST es un poco viejita y que hay variables "nuevas" para esto, (nuevas va entre comillas, porque hace mucho que estan disponibles, son mas recientes que $_REQUEST, nada mas)
Ahora, bien ¿cuales son, y como las usamos? tu formulario lo envias por POST asi que la variable a usar es la superglobal $_POST
Código PHP:
Ver original// Cambie algunos nombres de variables para que sea mas claro, nada mas.
$calificaciones = $_POST["calificaciones"]; // Esto lo hago solo con fines didacticos, en la practica puedes trabajar directamente con la superglobal, no necesitas copiar su contanido a otra variable, es una "mala practica" por llamarlo de alguna manera.
$nombres = $_POST["nombres"]; // Idem anterior.
// Ahora, si te fijas, $calificaciones y $nombres no son valores fijos, sino que son arrays:
// Haces el calculo:
foreach($calificaciones as $nro => $nota)
{
if($nota >= 7)
$resumen_notas["aprobados"][] = $nombres[$nro];
elseif($nota >= 4)
//...
else
//...
}
//Y ahora solo mostras la info:
echo ("Aprobados (".count($resumen_notas["aprobados"]).") : ".(implode(", ", $resumen_notas["aprobados"])."<br>"); // Idem para los otros 2.
en la parte de mostar podes hacer una tabla o lo que se te ocurra, yo lo puse asi para simplificar