• Publicidad

CGI con DIV oculto

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

Re: CGI con DIV oculto

Notapor gonzalos » 2011-08-30 09:52 @453

Parece ser que hay dos errores

El primero aparece al cargar la página

-
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Error: syntax error
Archivo de origen: http://localhost/cgi-bin/lineas2.cgi
Línea: 9, columna: 28
Código fuente:
function muestra_oculta(id){....................................
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


y el segundo al intentar ejecutar el código JavaScript, si picamos sobre el enlace.

--
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Error: muestra_oculta is not defined
Archivo de origen: http://localhost/cgi-bin/lineas2.cgi
Línea: 1
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Antes de añadirlo al script, probé en HTML y funcionaba sin problemas.

Un saludo
Gonzalo
gonzalos
Perlero nuevo
Perlero nuevo
 
Mensajes: 77
Registrado: 2009-11-27 05:47 @283

Publicidad

Re: CGI con DIV oculto

Notapor explorer » 2011-08-30 09:55 @455

gonzalos escribiste:Antes de añadirlo al script, probé en HTML y funcionaba sin problemas.

entonces... viendo las diferencias entre uno y otro, puedes ver qué es lo que sobra, lo que falta, o lo que está mal...
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

Re: CGI con DIV oculto

Notapor gonzalos » 2011-09-01 06:34 @315

Buenas tardes a todos

Finalmente he conseguido que funcione la aplicación, a excepción de una cosa y es que el Div que debería estar oculto aparece visible al cargar la página.

Además he hecho unas pequeñas modificaciones en el código, para que el el id del Div se asocie al id de la tabla de la BBDD y así el código javascript funcione independientemente con cada párrafo a ocultar.

Aquí dejo las modificaciones

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print table (
  2.  
  3.                     Tr({ -align => 'CENTER', -valign => 'top' }, [
  4.                         td([
  5.                             a({-href=>"#", -Onclick=>"muestra_oculta('$id')"},$denominacion),
  6.                
  7.                                 $grupo]),
  8.                     ]),
  9.                 );
  10.            print div({id=>$id},
  11.            
  12.                   table (
  13.  
  14.                     Tr({ -align => 'CENTER', -valign => 'top' }, [
  15.                         td([
  16.                
  17.                                 $explicacion]),
  18.                     ]),
  19.                 ),
  20.              ),
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Seguiré buscando para corregir el pequeño error que queda por solucionar.

Un saludo
Gonzalo
gonzalos
Perlero nuevo
Perlero nuevo
 
Mensajes: 77
Registrado: 2009-11-27 05:47 @283

Re: CGI con DIV oculto

Notapor explorer » 2011-09-01 06:44 @322

Quizá sea tan sencillo como poner un display:none:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print div({-id => $id, -style => 'display:none'},
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
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

Re: CGI con DIV oculto

Notapor gonzalos » 2011-09-01 07:06 @337

Estupendo, muchas gracias por la respuesta.

Un saludo
Gonzalo
gonzalos
Perlero nuevo
Perlero nuevo
 
Mensajes: 77
Registrado: 2009-11-27 05:47 @283

Re: CGI con DIV oculto

Notapor gonzalos » 2011-09-02 02:57 @164

Buenos días para que se vea más claro aquí dejo el código completo del script, con las modificaciones que se han ido haciendo a lo largo del hilo.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!c:/xampp/perl/bin/perl.exe
  2. use strict;
  3. use warnings;
  4. use CGI qw/:standard/;
  5. use DBI;
  6.  
  7.  my $denominacion;
  8.  my $id;
  9.  my $explicacion;
  10.  my $grupo;
  11.  
  12.  
  13. my $dbh=DBI->connect("DBI:mysql:mysql;host=localhost",'user','pass')
  14.         or die "Cannot connect to database:$DBI::errstr";
  15.        
  16. my $sth=$dbh->prepare("SELECT denominacion,grupo,explicacion FROM lineas ORDER BY grupo");
  17. $sth->execute() or die "Cannot execute sth:$DBI::errstr";
  18.  
  19. my $codigo_js = <<EOJ;
  20. function muestra_oculta(id) {
  21.     if (document.getElementById){             // se obtiene el id
  22.         var el = document.getElementById(id); // se define la variable "el" igual a nuestro div
  23.                                               // damos un atributo display:none que oculta el div
  24.         el.style.display = (el.style.display == 'none') ? 'block' : 'none';
  25.     }
  26. }
  27. window.onload = function() {
  28.     // hace que se cargue la función
  29.     // lo que predetermina que div estará oculto hasta llamar a la función nuevamente
  30.     // "contenido_a_mostrar" es el nombre que le dimos al DIV
  31.     muestra_oculta('id');
  32. }
  33. EOJ
  34. ;
  35. print header;
  36. print start_html(
  37.      -title  => 'RECETAS DE COCINA',
  38.      -script => $codigo_js,
  39. );
  40.  
  41.  
  42. while(($id, $denominacion,$grupo,$explicacion)=$sth->fetchrow_array()){
  43.     if ($explicacion eq "") {
  44.         $explicacion="<b>sin datos</b>";
  45.     }
  46.     print
  47.         table(
  48.             Tr({ -align => 'center', -valign => 'top' }, [
  49.                 td([
  50.                     a({ -href => "#", -Onclick => "muestra_oculta('$id')" }, $denominacion),
  51.                     $grupo,
  52.                 ]),
  53.             ]),
  54.         );
  55.      
  56.     print
  57.         div({ id => $id, -style => 'display:none' },
  58.             table(
  59.                 Tr({ -align => 'center', -valign => 'top' }, [
  60.                     td([
  61.                         $explicacion,
  62.                     ]),
  63.                 ]),
  64.             ),
  65.         ),
  66.   };
  67. print end_html;
  68. $dbh->disconnect();
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Un saludo
Gonzalo
gonzalos
Perlero nuevo
Perlero nuevo
 
Mensajes: 77
Registrado: 2009-11-27 05:47 @283

Re: CGI con DIV oculto

Notapor explorer » 2011-09-02 06:31 @313

Esta es mi versión (no probada):
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!c:/xampp/perl/bin/perl.exe
  2. use strict;
  3. use warnings;
  4.  
  5. use CGI qw<:standard>;
  6. use DBI;
  7.  
  8. my $dbh = DBI->connect("DBI:mysql:mysql;host=localhost",'user','pass')
  9.     or die "Cannot connect to database:$DBI::errstr";
  10.  
  11. my $sth = $dbh->prepare("SELECT denominacion,grupo,explicacion FROM lineas ORDER BY grupo");                                                                                    
  12.  
  13. $sth->execute()
  14.     or die "Cannot execute sth:$DBI::errstr";
  15.  
  16. my $codigo_js = <<EOJ;
  17. function muestra_oculta(id) {
  18.     if (document.getElementById){             // se obtiene el id
  19.         var el = document.getElementById(id); // se define la variable "el" igual a nuestro div
  20.                                               // damos un atributo display:none que oculta el div
  21.         el.style.display = (el.style.display == 'none') ? 'block' : 'none';
  22.     }
  23. }
  24. EOJ
  25.  
  26. print
  27.     header,
  28.     start_html(
  29.         -title  => 'RECETAS DE COCINA',
  30.         -script => $codigo_js,
  31.         -onLoad => "muestra_oculta('id')",
  32.     )
  33.     ;
  34.  
  35. while(my($id, $denominacion, $grupo, $explicacion) = $sth->fetchrow_array()) {
  36.  
  37.     $explicacion = b('sin datos') if not $explicacion;
  38.  
  39.     print
  40.         table(
  41.             Tr({ -align => 'center', -valign => 'top' }, [
  42.                 td([
  43.                     a({ -href => "#", -Onclick => "muestra_oculta('$id')" }, $denominacion),
  44.                     $grupo,
  45.                 ]),
  46.             ]),
  47.         ),
  48.         div({ id => $id, -style => 'display:none' },
  49.             table(
  50.                 Tr({ -align => 'center', -valign => 'top' }, [
  51.                     td([
  52.                         $explicacion,
  53.                     ]),
  54.                 ]),
  55.             ),
  56.         )
  57.         ;
  58. }
  59.  
  60. print
  61.     end_html
  62.     ;
  63.  
  64. $dbh->disconnect();
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
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

Anterior

Volver a Web

¿Quién está conectado?

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

cron