Perl en Español

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

CGI no muestra información de la BD

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> CGI
Mensaje Lun Abr 07, 2008 11:32 pm
alphabravo
Perlero Nuevo
Perlero Nuevo
Registrado: 06 Abr 2008
Mensajes: 12
CGI no muestra información de la BD Responder citando

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?
Perl:
#! /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();
};
Mensaje Mar Abr 08, 2008 1:07 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4092
Ubicación: Valladolid, España
Responder citando

Es muy posible que el script no tenga permisos de ejecución.
Ponle permisos 755, por ejemplo:
bash:
chmod 755 programa.pl

Recuerda: los ficheros de log son tus amigos.
Mensaje Mar Abr 08, 2008 9:15 am
alphabravo
Perlero Nuevo
Perlero Nuevo
Registrado: 06 Abr 2008
Mensajes: 12
Responder citando

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.
Mensaje Mar Abr 08, 2008 11:17 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4092
Ubicación: Valladolid, España
Responder citando

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.
Mensaje Mar Abr 08, 2008 11:30 pm
alphabravo
Perlero Nuevo
Perlero Nuevo
Registrado: 06 Abr 2008
Mensajes: 12
Responder citando

Hola. Ya me corre bien lo que tenía mal. Es que me faltaba instalar DBD::mysql. Gracias.
Publicar nuevo tema   Responder al tema    Foros de discusión -> CGI Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group