• Publicidad

Impresión de un tag radio_group

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

Impresión de un tag radio_group

Notapor reLlene » 2012-08-08 12:15 @552

Tengo el siguiente fragmento de código:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print start_form( -method => 'post', -action => '172.20.0.156/cgi-bin/Test.pl' ), "\n";
  2.  
  3. while ( ( $llave, $valor ) = each %hash ) {
  4.     print "$valor ", radio_group( -name => 'valor', -value => "$valor" ), br, "\n";
  5.  
  6.     # lo imprime así, por ej para perro:
  7.     # <input type="radio" name="Dog" value="Dog" checked="checked" />Dog
  8. }
  9. print submit( -name => 'Action', -value => 'Mostrar' );
  10. print end_form;
  11.  
  12.  
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4

Como así también, tengo un hash, claro...
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. %hash=
  2. ( 'Perro'->'Dog',
  3. 'Gato'->'Cat'
  4. );
  5.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Y a la hora de mostrármelo, lo hace de esta manera
Imagen

y yo lo que busco es que el radio tome como value a Dog y a Cat pero no así me los imprima. Busco que me imprima la llave y no el valor como lo hace ahor... ¡¡¡No encontré nada por la web!!! :(
Última edición por explorer el 2012-08-08 12:35 @566, editado 1 vez en total
Razón: Formateado de código con Perltidy
Sexo : unzip ; strip ; touch ; grep ; finger ;mount ; fsck ; more ; yes ; umount ; sleep.
Avatar de Usuario
reLlene
Perlero nuevo
Perlero nuevo
 
Mensajes: 97
Registrado: 2012-06-04 07:16 @344

Publicidad

Re: Impresión de un tag radio_group

Notapor explorer » 2012-08-08 12:54 @579

A ver si con esto te vale:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/env perl
  2. use CGI ':standard';
  3.  
  4. my %hash = (
  5.     Perro       => 'Dog',
  6.     Gato        => 'Cat',
  7. );
  8.  
  9.  
  10. print start_form( -method => 'post', -action => '172.20.0.156/cgi-bin/Test.pl' ), "\n";
  11.  
  12. print radio_group(
  13.     -name       => 'animalejos',
  14.     -values     => [ keys %hash ],
  15.     -default    => 'Perro',
  16.     -linebreak  => 1,
  17.     -labels     => \%hash,
  18. ), "\n";
  19.  
  20. print end_form, "\n";
  21.  
  22. __END__
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Salida:
Sintáxis: [ Descargar ] [ Ocultar ]
Using html4strict Syntax Highlighting
  1. <form method="post" action="172.20.0.156/cgi-bin/Test.pl" enctype="multipart/form-data">
  2.  
  3. <label><input type="radio" name="animalejos" value="Gato" />Cat</label><br />
  4. <label><input type="radio" name="animalejos" value="Perro" checked="checked" />Dog</label><br />
  5.  
  6. <div><input type="hidden" name=".cgifields" value="animalejos"  /></div></form>
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

Es decir:
  • ya que es un control de tipo radio, todos los 'name' deben ser iguales, para que el usuario solo pueda elegir a uno solo de los elementos (sino, sería un control de tipo 'option')
  • usamos una sola instrucción radio_group() porque solo tenemos un conjunto de opciones (un hash)
  • radio_group() espera una lista de valores. Se lo damos con la función keys(), que nos devuelve las claves del hash
  • pero como queremos que lo que vea el usuario sean otras etiquetas, necesitamos definir la correspondencia entre valores y etiquetas. Por eso usamos -labels y le pasamos el mismo %hash, ya que contiene justo esa correspondencia. El usuario ve al 'Dog' y al 'Cat' pero el formulario recibe 'Perro' y 'Gato'.
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: Impresión de un tag radio_group

Notapor reLlene » 2012-08-10 12:29 @561

¡Clarísimo, explorer! ¡¡Desconocía completamente de la etiqueta labels!!

Ahora estoy queriendo hacer algo similar pero ya no con un hash sino que se trata de unos registros (venga, en realidad de una consulta a una base de datos que me devuelve registros, claro) y con checkbox_group() mostrar cada uno de los registros al estilo checkbox y UNO de los campos de la consulta pasar a ser los values. :?

Pongo un ejemplo de una consulta cualquiera como lo puede ser:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. sub Consulta {
  2.     $query = "SELECT rid, nombre, domicilio FROM personas";
  3.  
  4.     my $stat = $db->prepare($query);
  5.  
  6.     my $return = $stat->execute;
  7.  
  8.     while ( my @array = $statement->fetchrow_array() ) {
  9.         print @array, "\n";
  10.     }
  11. }
  12.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Sexo : unzip ; strip ; touch ; grep ; finger ;mount ; fsck ; more ; yes ; umount ; sleep.
Avatar de Usuario
reLlene
Perlero nuevo
Perlero nuevo
 
Mensajes: 97
Registrado: 2012-06-04 07:16 @344

Re: Impresión de un tag radio_group

Notapor explorer » 2012-08-10 20:45 @906

Los argumentos de checkbox_group() son los mismos que los de radio_group(), con la diferencia de que pueden existir más de un valor por defecto (es claro: en un checkbox se puede elegir más de un valor).
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: Impresión de un tag radio_group

Notapor danimera » 2012-08-13 14:24 @641

:? Con todo respeto, te aconsejo que uses las metodologías de Perl moderno...

Por lo menos un sistema de plantilla o un formbuilder...
No está mal lo que haces para algo puntual... pero mi recomendación es que busques usar template toolkit o html-template, para trabajar código HTML y quizás un CGI-Formbuilder para trabajar formularios.
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Re: Impresión de un tag radio_group

Notapor explorer » 2012-08-13 14:54 @662

Tienes razón, danimera.

En los foros en inglés se comenta que usar CGI.pm es cosa del siglo pasado (hace 12 años).

Creo que deberíamos hacer algo al respecto, en estos foros...
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: Impresión de un tag radio_group

Notapor danimera » 2012-08-13 15:18 @679

En mi pensar, si se eliminaran todos los ejemplos de Perl de la red que usen CGI o sean reemplazados por ejemplos con algún sistema de plantillas, creo que el panorama sería muy, pero muy diferente, pero así es nuestro amado Perl... nos brinda muchas formas de hacer lo mismo :?
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Re: Impresión de un tag radio_group

Notapor reLlene » 2012-08-14 10:54 @495

¿Se refieren al descarte del uso del módulo CGI.pm y al uso de expresiones del tipo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print "<html>";
  2. print "<head>";
  3. ...
  4.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
?

He intentado ejecutar el script comida.pl del tutorial http://perlenespanol.com/tutoriales/mod ... plate.html pero me tira error a la hora de localizar el módulo HTML::Template. ¿Será que debo de importarlo de CPAN? ¿Podrían decirme ?:?
Sexo : unzip ; strip ; touch ; grep ; finger ;mount ; fsck ; more ; yes ; umount ; sleep.
Avatar de Usuario
reLlene
Perlero nuevo
Perlero nuevo
 
Mensajes: 97
Registrado: 2012-06-04 07:16 @344

Re: Impresión de un tag radio_group

Notapor danimera » 2012-08-14 13:35 @608

Sí, exacto, pero debes indicar cuál es el error que te sale en pantalla...
Ahora, si estas usando Windows con ActiveState es super sencillo instalar si usas Linux, pues es sencillo para el que sabe...

En todo caso solo tienes que bajar el módulo y copiarlo al directorio donde estén las librerías o módulos de Perl.
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Re: Impresión de un tag radio_group

Notapor explorer » 2012-08-14 14:53 @662

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


Volver a Web

¿Quién está conectado?

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