• Publicidad

CGI no muestra información de la BD

Todo lo relacionado con el desarrollo Web con Perl: desde CGI hasta Mojolicious

CGI no muestra información de la BD

Notapor alphabravo » 2008-04-08 00:32 @064

Hola, tengo esta aplicación en Perl que debe de funcionar en cgi.
Ya lo guardé como programa.pl y programa.cgi. Lo pongo en la carpeta cgi-bin y no lo corre. ¿Por qué?

Lo pongo así
http://localhost/cgi-bin/programa.pl

También probé así
http://localhost/cgi-bin/programa.cgi

y me dice Internal Server Error ¿por qué? ¿qué tengo que hacer?
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#! /usr/bin/perl -w
# usando módulo o librería CGI
use CGI;
use DBI;

# creando el OBJETO de tipo CGI
$q = new CGI;

# mandando servidor los encabezados de la página html
print $q->header;
print $q->start_html();

# creando una form o ventana
print $q->startform();

# creando un submit button
print $q->submit('DESPLEGAR');

# cerrando la forma
print $q->endform();

#cerrando html
print $q->end_html;

if ( $q->param('DESPLEGAR')) {
    print $q->hr();

    # empezando una tabla html
    print "<HTML><TABLE Border=10 CellPadding=5><TR>";

    # construyendo los encabezados de la tabla
    print "<th bgcolor=Green>CLAVE</th><th bgcolor=White>NOMBRE</th><th bgcolor=Red>EDAD</th><th bgcolor=blue>ESTATURA</th></TR>";

    # creando enlace o conexión dbh=>database handle
    my $dbh = DBI->connect('DBI:mysql:mibase:localhost','root','')|| die "ERROR CONECCION : $DBI::errstr";

    # preparando el query sql
    # sth=>statement handle convencion mysql tambien
    my $sth = $dbh->prepare('SELECT * FROM mitabla');
    $sth->execute;

    # ciclo de lectura de todos los renglones de la tabla
    while ( my ($clave, $nombre, $edad, $estatura) = $sth->fetchrow_array() ) {
        print "<TR><TD>"."$clave"."</TD><TD>"."$nombre"."</TD><TD>"."$edad"."</TD><TD>"."$estatura"."</TD></TR>";
    };

    # cerrando tabla, instrucción y conexión
    print "</TABLE>";
    $sth->finish;
    $dbh->disconnect();
    print $q->hr();
};
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4
alphabravo
Perlero nuevo
Perlero nuevo
 
Mensajes: 19
Registrado: 2008-04-06 16:44 @739

Publicidad

Notapor explorer » 2008-04-08 02:07 @130

Es muy posible que el script no tenga permisos de ejecución.
Ponle permisos 755, por ejemplo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
chmod 755 programa.pl
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

Recuerda: los ficheros de log son tus amigos.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor alphabravo » 2008-04-08 10:15 @469

Hola, ya me corrió bien el único problema era que le faltaba exit(1);

Ahora otra cosa, no me despliega lo que está en la tabla ¿por qué? ¿qué está mal? y sí hay datos en la tabla.
alphabravo
Perlero nuevo
Perlero nuevo
 
Mensajes: 19
Registrado: 2008-04-06 16:44 @739

Notapor explorer » 2008-04-09 00:17 @053

Pues yo veo que imprimes el end_html() antes de la tabla... eso es un error.

Haz la prueba de mirar el código fuente de la página HTML que te devuelve el cgi, a ver si después de la etiqueta de fin de HTML está la tabla.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor alphabravo » 2008-04-09 00:30 @063

Hola. Ya me corre bien lo que tenía mal. Es que me faltaba instalar DBD::mysql. Gracias.
alphabravo
Perlero nuevo
Perlero nuevo
 
Mensajes: 19
Registrado: 2008-04-06 16:44 @739


Volver a Web

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 10 invitados