[Perl] PROBLEMAS CGI-DBI
Juan Carlos Lopez
jclp77@yahoo.com.mx
Tue, 27 May 2003 19:30:39 -0500 (CDT)
Gracias Toño, ya cambie las lineas en donde me haces
las observaciones; mira el procedimiento es el
siguiente:
< solicito la forma (script base_1)
> aparece la forma con parametros de consulta (estas
me sirven para construir la sentencia SQL)
> le doy SUMBIT a la forma con el parámetro POST para
que el script consulta_1 tome los parametros.
< En algunas ocasiones el navegador empieza a
interpretar el script (consulta_1) pero se queda en la
forma (script base_1) como si no hubiera presionado el
boton de SUBMIT. Cuando sí realiza la consulta,
muestra algunos registros e inmediatemente hace un
refresh y borra todos los registros (antes impresos).
Y logicamente me envia un error de ejecución de
consulta, ya que la cadena de consulta
generada($post_consulta) pierde todos los parámetros
del tipo $familia=$query->param('Familia');
Cuando realizo consultas pequeñas no tiene mayor
problema pero cuando hago una consulta del tipo SELECT
* FROM RED_LAC; (es decir que selecciono todos los
parámetros) es cuando tengo problemas, cabe mencionar
que tengo en mi base de datos alrededor de 7692
registros.
Esta muy raro el asunto, ya quite la tabla e instale
el modulo HTML-table con el codigo que me envió
Gunnar, elimine el codigo javascript (Mauricio
Herrera), Cambie el Timeout a 900 segundos (Noel
Vazquez) y aun así no funciona. Por cierto, no estoy
utilizando frames.Estoy utilizando Apache+Perl+Access
y/o Mysql con Windows XP Home.
Saludos
Juan Carlos
--- Jose Antonio Galicia <jcgalici@cbbanorte.com.mx>
escribió: > 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."
>
>
_________________________________________________________
Do You Yahoo!?
La mejor conexión a internet y 25MB extra a tu correo por $100 al mes. http://net.yahoo.com.mx