Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Respuesta del servidor

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Experto
Mensaje Dom Nov 09, 2008 12:05 pm
Naika
Perlero Nuevo
Perlero Nuevo
Registrado: 09 Nov 2008
Mensajes: 3
Respuesta del servidor Responder citando

Hola, no sé si exactamente mi pregunta puede ir en esta sección, pero bueno ahí va.
Estoy realizando una pequeña Intranet, en la cuál el usuario carga un fichero de texto, este fichero se muestra en una tabla y por cada fila el usuario tiene una opción que marcar.
Finalmente se envía la petición mediante un botón final.
Mi problema es éste, si el tamaño del fichero es pequeño, unas 6 o 7 líneas, una vez que se procesa el fichero, se muestra la respuesta HTML sin problemas, pero en cambio si el fichero es más grande, todo el proceso interno se hace correctamente, pero cuando finaliza muestra la página HTML en blanco.
¿Alguien sabe qué puede estar pasando? ¿o hay alguna idea?

Muchas gracias. Cómo se podrá observar es mi primera aplicación en Perl.

¡Ah! no estoy utilizando CGI, imprimo, leo, la plantilla HTML mediante read_file() de la librería File::Slurp y envío la plantilla mediante un print() Very Happy
Mensaje Lun Nov 10, 2008 10:31 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4239
Ubicación: Valladolid, España
Responder citando

Bienvenido a los foros de Perl en Español, Naika.

Ver algo de tu código sería interesante...

Quizás sea un simple problema con el vaciado de caché... Pon a 1 la variable especial $|.
Mensaje Mar Nov 11, 2008 1:44 am
Naika
Perlero Nuevo
Perlero Nuevo
Registrado: 09 Nov 2008
Mensajes: 3
Responder citando

Hola explorer, gracias por responder, he inicializado la variable que me indicas por cada fila del fichero que leo e inserto en la BD, pero sigue pasando lo mismo.

El código que utilizo para cargar las filas del fichero en la tabla de la BD es el siguiente:
Perl:
sub ProcesarFichero ($ $ $ $){
   my $NombreFichero=shift;
   my $tipoaccion = shift;
   my $AlumnosInsertados = shift; # referencia
   my $AlumnosRepetidos = shift; # referencia
   
  if (-e,$NombreFichero){
    #Fichero existe
   
    my $RutaFichero='c:/temp/'.$NombreFichero;
    my $i=0;
    my $salida;
   
   
    if ($tipoaccion eq 'alta') {
      my @text = read_file( $RutaFichero ) ;

           
      overwrite_file('c:\temp\test123.txt',"");
     
      append_file('c:\temp\test123.txt',"numero de filas ".scalar(@text)."\n");
      for ($i = 0; $i < scalar(@text); $i++) {
       
         chomp($text[$i]);
         
         my $linea=$text[$i];
         
        append_file('c:\temp\test123.txt',"-$i-$text[$i]-<br>\n");         
         
         my $NIF=substr($linea,0,10);
         my $curso=substr($linea,21,3);
            if (($NIF ne '') and ($curso ne '')){
           if (ValidarLinea($linea)==1){
           my $NIF=substr($linea,0,10);
         
           
           if (ValidarNIF($NIF)==1){
              $salida=InsertarAlumnos($linea);
              append_file('c:\temp\test123.txt',"el NIF insertado".$NIF."\n");
                     
               if ($salida==1){
                  #insertar sin  problemas
                  $$AlumnosInsertados=$$AlumnosInsertados + 1;
             
                }else{
                 #con problemas
                 $$AlumnosRepetidos=$$AlumnosRepetidos + 1;
           
                }
            }else{
               $$AlumnosRepetidos=$$AlumnosRepetidos + 1;
            }
        }
        else {
          $$AlumnosRepetidos=$$AlumnosRepetidos + 1;
         
        }
       }else{
        append_file('c:\temp\text123.txt',"NIf vacio".$NIF."\n");
       }
       $|=1;
     } # finfor
     append_file('c:\temp\test123.txt',"NUM. LINEAS =".scalar(@text)."<BR>\n");
      $$AlumnosRepetidos=scalar(@text) - $$AlumnosInsertados;
    }


y después de esta función dibujo el resultado con el siguiente código:
Perl:
sub DibujarSalidaAlta($ $ $){
   my $DIRPLANTILLAESINE = shift;
   my $AlumnosInsertados = shift;
   my $AlumnosRepetidos = shift;
   
   
    print "Content-type: text/html\n\n";
   my $plantillaAlta = read_file($DIRPLANTILLAESINE."OpcionesESINE.htm");

   
   
 append_file('c:\temp\test123.txt',"ini dibujarsalidaalta\n");
   my $sustituye0='<input  type="file" name="archivo"><br>';
   $plantillaAlta=~ s/\<!--SeleccionaArchivo-->/$sustituye0/;
   my $sustituye1;
   
   $sustituye1="Alumnos Insertados: ".$AlumnosInsertados."\n";
   $plantillaAlta=~ s/<!--CargadosAlta1-->/$sustituye1/;
#   
   my $sustituye2="Alumnos con Problemas: ".$AlumnosRepetidos."\n";
   $plantillaAlta=~ s/<!--CargadosAlta2-->/$sustituye2/;
   print "Content-type: text/html\n\n";
   print $plantillaAlta;
   append_file('c:\temp\test123.txt'," Imprimo plantilla de alta\n")

}


Muchas gracias por tu tiempo.
Mensaje Mar Nov 11, 2008 2:53 am
Naika
Perlero Nuevo
Perlero Nuevo
Registrado: 09 Nov 2008
Mensajes: 3
Responder citando

Hola otra vez,
ya lo he solucionado, el error estaba en insertar alumnos, cuando el alumno estaba repetido no devolvía 0 que era el resultado que yo esperaba, así que se quedaba en un bucle de errores llegando a afectar a el controlador de la BD.

Muchas Gracias por el interés.
Mensaje Mar Nov 11, 2008 4:08 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4239
Ubicación: Valladolid, España
Responder citando

La variable especial $| solo es necesario ponerla una vez, generalmente al principio del programa, o justo antes de empezar a escribir.

Recuerda que puedes borrar o modificar tus propios mensajes.
Publicar nuevo tema   Responder al tema    Foros de discusión -> Experto Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group