[Perl] PROBLEMAS CGI-DBI
Jose Antonio Galicia
jcgalici@cbbanorte.com.mx
Tue, 27 May 2003 18:14:29 -0500 (CDT)
On Mon, 26 May 2003, Juan Carlos Lopez wrote:
Este... sigiero cambio en el código por claridad:
> for $i ( 0 .. $#{$table} ) {
> $num_total=($table->[$i][-1])+$num_total;
> }
for $row ( @{$table} ) {
$num_total+=$row->[-1];
}
con cada iteración asiganas una referencia a $row y queda
menos obscuro lo que haces.
> ###+++++AQUI ES DONDE ESTA EL PROBLEMA######
>
> for $i ( 0 .. $#{$table} ) {
> print "<TR>";
> for $j ( 0 .. $#{$table->[$i]} ) {
> print "<TD>$table->[$i][$j]</TD>";
> }
> $promedio=(($table->[$i][-1])*100)/$num_total;
> $promediogral=$promediogral+$promedio;
> printf ("<TD align='CENTER'>%.2f %</TD>",$promedio);
> print "</TR>";
> }
for $row (@{$table}) {
print "<TR>";
print join('',map{"<td>$_</td>"}@{$row}) . "\n";
$promedio=(($row->[-1])*100)/$num_total;
$promediogral+=$promedio;
printf ("<TD align='CENTER'>%.2f %</TD>",$promedio);
print "<TR>";
}
> $sth->finish();
Si estas leyendo toda la consulta en una sola operación
usando "fetchall_arrayref" deberias soltar la conexión de
inmediato. Si vas a mantenerla abierta hasta este punto
podrias hacer un fetch por cada registro y ahorrarte toda la
memoria y procesador para crear el contenido de "$table".
Esto en cuando al código, no al problema. :(
De este no veo el por qué, ya he leido las respuestas que
te dan y dices que no es un problema de "timeout" de apache.
Lo que no me queda claro es por qué dices que hace un
refresh. A ver, pongámoslo así:
< solictas la forma
> aparece la forma
< llenas la forma y das submit (cámbialo por post)
> inicia despliegue de la información....
... algo pasa y solicita nuevamente la página
> regresa una consulta incorrecta.
¿Es así?
¿Estas usando frames? Tal vez en uno de ellos tienes un
refresh. Has esto (expicación del post):
$ telnet maquina 80
GET /ruta/al.cgi?losparametros=valores&van=aqui HTTP/1.0
Dos enteres más y ves el resultado. Para evitar escribir
todos los campos (perecen muchos) haslo en tu browser y
copia el URL ;)
Saludos,
Toño
---
nolo contendere:
A legal term meaning: "I didn't do it, judge, and I'll never do
it again."