Página 1 de 1

Menú desplegable dinámico (MySQL)

NotaPublicado: 2011-06-14 11:00 @500
por luisjf
Hola, muy buenos días.

Estoy desarrollando un pequeño sistema que va a requerir una interfaz web bastante sencilla. En este caso estoy manipulando mis datos con MySQL, y precisamente para la interfaz me ha surgido la necesidad de crear un menú desplegable (drop box) que muestre información directa de la base de datos. ¿Cuál es el método más efectivo para lograrlo o con qué herramientas cuento? ¿Lo hago con código Perl o es solo HTML? Agradecería cualquier ayuda que se me pueda prestar. Muchas gracias de antemano...

Saludos

Re: Menú desplegable dinámico (MySQL)

NotaPublicado: 2011-06-14 12:49 @576
por explorer
Con el módulo DBI puedes recuperar la información de la base de datos.

Luego, puedes crear el contenido de la lista desplegable, y mostrarlo dentro de la página HTML, generándolo con alguno de los muchos módulos disponibles para Perl. Yo suelo usar el módulo CGI, HTML::Template o CGI::Application (pero hay muchas más).

Depende de lo compleja que quieras que sea tu aplicación.

Con CGI, por ejemplo, con la función popup_menu() se puede generar esa lista.

Hay incluso módulos que son capaces de entender el esquema de la base de datos y mostrarlo en un formulario HTML, casi de forma directa. Lo malo es que cuesta bastante personalizar la salida.

Re: Menú desplegable dinámico (MySQL)

NotaPublicado: 2011-06-15 13:50 @618
por luisjf
Gracias por tu pronta respuesta, explorer; efectivamente, estuve revisando los módulos que me indicas y están muy completos, y bueno, en virtud que necesitaba algo bastante puntual y sencillo resolví haciendo estas simples líneas:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use CGI;
  3. use DBI;
  4. $dbh = DBI->connect( "DBI:mysql:nombredb", "xxx", 'xxx',
  5.     { mysql_enable_utf8 => 1 } );
  6. print "Content-Type: text/html\n\n";
  7. <select name="nombredelselect">
  8. $sth = $dbh->prepare("select col1 from tabla");
  9. $sth->execute;
  10. while ( ($col1) = $sth->fetchrow() ) {
  11.     print "<option value=$name>$name</option>";
  12. }
  13.  
  14.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Re: Menú desplegable dinámico (MySQL)

NotaPublicado: 2011-06-15 14:22 @640
por explorer
Esta es mi versión:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use CGI;
  3. use DBI;
  4.  
  5. # consulta a la base de datos
  6. my $dbh = DBI->connect(
  7.     "DBI:mysql:base_datos", 'root', 'piwuehfs1a',
  8.     { mysql_enable_utf8 => 1 },
  9. );
  10.  
  11. my $cols_ref = $dbh->selectall_arrayref('select screenName from User_');
  12.  
  13. # pasamos de un array de arrays, a solo un array
  14. my @cols = map { $_->[0] } @{$cols_ref};
  15.  
  16. # salida
  17. my $cgi = CGI->new();
  18.  
  19. print
  20.     $cgi->header(),
  21.     $cgi->start_html('Resultados'),
  22.     $cgi->start_form(),
  23.     $cgi->popup_menu(
  24.             -name   => 'nombredelselect',
  25.             -values => \@cols,
  26.         ),
  27.     $cgi->end_form(),
  28.     $cgi->end_html(),
  29.     ;
  30.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

sale:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Content-Type: text/html; charset=ISO-8859-1

<!DOCTYPE html
        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">
<head>
<title>Resultados</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<form method="post" action="http://localhost" enctype="multipart/form-data">
<select name="nombredelselect" >
<option value="10118">10118</option>
<option value="abadia">abadia</option>
<option value="adrianperez">adrianperez</option>
<option value="africa">africa</option>
<option value="visual">visual</option>
<option value="xtina">xtina</option>
<option value="xtranas">xtranas</option>
<option value="yeika">yeika</option>
<option value="zagales">zagales</option>
</select></form>
</body>
</html>
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Re: Menú desplegable dinámico (MySQL)

NotaPublicado: 2012-12-14 22:24 @975
por cjbustos
Me ha servido la información. En lo que estoy perdido es en encontrar la forma de que la selección dentro de la lista la pueda utilizar para otra operación, por ejemplo, para cargar del dato a un carrito de compras, ¿alguna idea de cómo hacerlo?
Muchas gracias, excelente este sitio, ¡Felicitaciones!

Re: Menú desplegable dinámico (MySQL)

NotaPublicado: 2012-12-15 07:13 @342
por explorer
Bienvenido a los foros de Perl en Español, cjbustos.

Bueno, como las páginas y contenidos se generan de forma dinámica, puedes hacer eso mismo con la parte que rellena el carro de la compra...