【发布时间】:2013-05-06 14:00:07
【问题描述】:
我有一个 Perl 脚本,它从数据库中读取数据并在 HTML 表单/表格中打印出结果。每本书的表单还包含一个提交按钮。
我希望 Perl 创建一个文本文件(或读入一个已经创建的文件)并打印提交表单中的书名。但我似乎无法让param() 捕捉到提交操作!
#!/usr/bin/perl -w
use warnings; # Allow for warnings to be sent if error's occur
use CGI; # Include CGI.pm module
use DBI;
use DBD::mysql; # Database data will come from mysql
my $dbh = DBI->connect('DBI:mysql:name?book_store', 'name', 'password')
or die("Could not make connection to database: $DBI::errstr"); # connect to the database with address and pass or return error
my $q = new CGI; # CGI object for basic stuff
my $ip = $q->remote_host(); # Get the user's ip
my $term = $q->param('searchterm'); # Set the search char to $term
$term =~ tr/A-Z/a-z/; # set all characters to lowercase for convenience of search
my $sql = '
SELECT *
FROM Books
WHERE Title LIKE ?
OR Description LIKE ?
OR Author LIKE ?
'; # Set the query string to search the database
my $sth = $dbh->prepare($sql); # Prepare to connect to the database
$sth->execute("%$term%", "%$term%", "%$term%")
or die "SQL Error: $DBI::errstr\n"; # Connect to the database or return an error
print $q->header;
print "<html>";
print "<body>";
print " <form name='book' action='bookcart.php' method=post> "; # Open a form for submitting the result of book selection
print "<table width=\"100%\" border=\"0\"> ";
my $title = $data[0];
my $desc = $data[1];
my $author = $data[2];
my $pub = $data[3];
my $isbn = $data[4];
my $photo = $data[5];
print "<tr> <td width=50%>Title: $title</td> <td width=50% rowspan=5><img src=$photo height=300px></td></tr><tr><td>Discreption Tags: $desc</td></tr><tr><td>Publication Date: $pub</td></tr><tr><td>Author: $author</td></tr><tr><td>ISBN: $isbn</td> </tr></table> <br>";
print "Add this to shopping cart:<input type='submit' name='submit' value='Add'>";
if ($q->param('submit')) {
open(FILE, ">>'$ip'.txt");
print FILE "$title\n";
close(FILE);
}
print "</form>"; # Close the form for submitting to shopping cart
【问题讨论】:
-
你在什么环境下运行这个脚本?它是由网络服务器运行的 CGI 脚本吗?
bookcart.php是什么?$data是什么?为什么要将 html/form 创建与参数评估混合在一起?您希望输出文件的文件名是什么样的? -
输出是访问页面的用户的IP地址,它的html,所以我可以格式化数据库的输出,脚本是在提交搜索词后从书籍数据库中提取数据另一个 html 页面,$data 是一个占位符,用于将数据从数据库绘制移动到 html 表。
-
好吧,我猜你会惊讶地看到真正的输出文件名。我猜您没有回答最重要的问题:为什么要将 html/表单创建与参数评估混合在一起?
-
那为什么不尝试一步一步地学习一件事呢?使用表单创建一个 html 文件,将表单提交给一个小脚本并使用它。
-
因为它会在 2 个半小时后到期......我从星期五开始一直在做这个......直!