A parte de que si no existe el fichero no haces nada (debería, al menos, devolver un mensaje de error) y que acceder directamente a los valores de $_GET es muy mala idea (habría que hacer alguna comprobación de que el dato se recibe y está dentro de lo esperado), parece que el problema es de sintaxis. Asegúrate de que el servidor está en modo depuración y devuelve todos los avisos y mensajes de error, y usa el depurador de tu navegador para ver qué devuelve exactamente en cada petición.
[edito]Acabo de ver dónde está el problema, así que añado la solución: USAR CONSTANTES. A ver si lo pillas.
Tú pones:
Código PHP:
<?php
if (file_exists("fichero.txt"))
{
$fa2 = file("fichero,txt"); // leemos todo el fichero en un array
}
Yo hubiera puesto
Código PHP:
<?php
if (!file_exists ("fichero.txt")) die ('No existe el fichero.txt');
$fa2 = file("fichero,txt"); // leemos todo el fichero en un array
if ($fa2 === FALSE) die ('No pude leer fichero.txt');
Antes de seguir, haz el cambio, tal cual, y mira lo que pasa. ¿Sorprendido? ¿Lo has visto?
La solución que propongo, y que en mi opinión habría que usar siempre, es esta:
Código PHP:
<?php
define ('ARCHIVO_DATOS', 'fichero.txt');
if (!file_exists(ARCHIVO_DATOS))
die ('<pre>no encuentro el fichero "'.ARCHIVO_DATOS.'".</pre>');
$fa2 = file(ARCHIVO_DATOS); // <-- Aquí es donde estaba el fallo.
if ($fa2 === FALSE) // <-- Con esta línea hubieras encontrado el problema.
die ('<pre>No pude leer el fichero "'.ARCHIVO_DATOS.'".</pre>');
...
if (!isset ($_GET['Control1']))
die ('<pre>No recibí nada por el parámetro "Control1".</pre>');
if (!is_numeric ($_GET['Control1']))
die ('<pre>El parámetro "Control1" debe ser un número.</pre>');
...
Es decir:
comprueba los valores siempre.
[/edito]