【问题标题】:Populating drop-down list from MySQL using Perl使用 Perl 从 MySQL 填充下拉列表
【发布时间】:2013-09-21 11:14:15
【问题描述】:

我正在尝试从 mysql 数据填充下拉列表并从Populating a Drop-Down list using DBIHow do I get selected value from drop down box in Perl CGI

我有以下代码:

#!/usr/bin/perl
use warnings;
use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use DBI;
use Data::Dumper;
print "Content-type: text/html\n\n";
my $dbh = DBI->connect();
my @tables=$dbh->selectcol_arrayref('select TABLE_NAME from 1009_table_list order by TABLE_NAME');
print Dumper@tables; #this dumper is giving results
print qq[
<!DOCTYPE html>
<html>
<head></head>
<body>
<form id="upload-form"><table>
<tr><td>Table Name:</td><td><select name="tbname">
];
print Dumper@tables; # this dumper is not printing anything
foreach my $table(@tables)
{
print qq "<option value=\"$table\">" . $table . "</option>";
}
print qq[
</select>
</td></tr>
</table></form></body>
</html>
];

在代码中的第二条注释中,我无法获取下拉列表的 @tables 值。 为什么?

【问题讨论】:

  • 你能给我们展示一下 Dumper 的结果吗(如果太长,可以展示一部分)?
  • ctrl+u 在浏览器中查看第二个转储程序?此外,print qq{&lt;option value="$table"&gt;$table&lt;/option&gt;};
  • @M42 转储器是$VAR1 = [ 'ABSTRACT-ACCOUNT-CURRENT', 'CHALLAN-INVOICE', 'CLEARANCE-DETAIL-FOR-INTER-UNIT-TRANSFERS', 'CLEARANCE-DETAILS', 'DETAILS-OF-CENVAT-CREDIT-TAKEN-UTILIZED', 'HEADER-DATA', 'OTHER-PAYMENTS', 'PAID', 'RECEIPT-DETAILS-OF-INTERMEDIATE-GOODS-RECEIVEDS', 'SELF-ASSESSMENT-MEMORANDUM' ];
  • @mpapec 是的,它显示了自卸车,但如何让它进入下拉菜单......它不起作用。 printqq 已更正。

标签: html mysql perl


【解决方案1】:

selectcol_arrayref 返回数组 ref,所以:

my $tables = $dbh->selectcol_arrayref('select TABLE_NAME from 1009_table_list order by TABLE_NAME');

foreach my $table (@$tables) {
  print qq{<option value="$table">$table</option>};
}

【讨论】:

    【解决方案2】:

    my @tables=$dbh-&gt;selectcol_arrayref('select TABLE_NAME from 1009_table_list order by TABLE_NAME');

    返回一个array_ref,为了使用它,你必须取消引用它:

    my $tables=$dbh->selectcol_arrayref('select TABLE_NAME from 1009_table_list order by TABLE_NAME');
    foreach my $table (@$tables) {
        print qq~<option value="$table">$table</option>~;
    }
    

    【讨论】:

    • 您可以取消引用my @tables=@{$dbh-&gt;selectcol_arrayref},这样其他所有内容都将保持原样。
    猜你喜欢
    • 1970-01-01
    • 2018-03-12
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 2012-02-06
    • 1970-01-01
    相关资源
    最近更新 更多