[Perl] problemas cgi+dbi
Gunnar Wolf
gwolf@gwolf.cx
Tue, 27 May 2003 15:25:53 -0500
Juan Carlos Lopez dijo [Tue, May 27, 2003 at 01:01:13PM -0500]:
> Gracias Gunnar, pero aun asi la linea donde ejecuto la
> consulta es la siguiente:
> (...)
> my $sth = $dbh->prepare ($post_consulta);
> $sth->execute();
Exacto, es tal como te lo decía - No estás revisando que el sth se cree
exitosamente. Conviértelo en:
my $sth = $dbh->prepare ($post_consulta) or die $dbh->errstr;
y verás cuál es el problema.
> Al parecer cuando mando a imprimir la tabla HTML con
> los registros (alrededor de 7692) el navegador no
> soporta la cantidad de datos a imprimir y hace un
> refresh y por lo tanto pierde la cadena
> $post_consulta; por lo que ya no puede ejecutar la
> consulta y envía en error de ejecución.
>
> Lo más raro es que en vez de imprimir los datos en el
> navegador los envío a un archivo con la extensión html
> no tiene ningún problema e imprime los 7692 registros
> con la tabla.
Ummm... Me suena muy raro - Intenta no imprimir una tabla -aunque sea
por un par de ejecuciones, sólo para probar- sino que mandar los valores
tal cual.
Me suena muy raro, es cierto, que enviando los datos a un archivo los
muestre correctamente - ¿Qué navegador usas? ¿Has intentado con otro?
¿Has intentado, desde tu navegador, ver el fuente de la página? ¿Tu
página es válida según W3C? (http://validator.w3.org/)
Otra cosa que podría sugerirte es, en vez de crear la tabla manualmente,
usar el módulo HTML::Table - un muy bonito móduolo que genera tablas
correctamente formadas. Lo equivalente a tu código sería:
my $table = $sth->fetchall_arrayref();
my $t = HTML::Table->new;
foreach my $i (@$table) {
$t->addRow(@$i);
}
$sth->finish;
$t->print;
Saludos,
--
Gunnar Wolf - gwolf@gwolf.cx - (+52-55)5630-9700 ext. 1366
PGP key 1024D/8BB527AF 2001-10-23
Fingerprint: 0C79 D2D1 2C4E 9CE4 5973 F800 D80E F35A 8BB5 27AF