我正在尝试创建一种更新按钮,当用户单击 HTML Perl 按钮时,它会要求确认(是/否)。
如果用户单击"is",它会运行一个 SQL 脚本,然后返回一个弹出窗口 (JavaScript),说明操作成功(或不成功)。
SQL 代码正在创建一个备份表,然后将存储在数据库中的当前值复制到这个备份表中,因此不需要刷新屏幕。下面提供了完整且有效的代码:
CREATE TABLE IF NOT EXISTS backup_tab_right_mapping
LIKE tab_right_mapping;
DELETE FROM backup_tab_right_mapping
WHERE group_id = "1"
AND role_id = "1";
INSERT INTO backup_tab_right_mapping
SELECT * FROM tab_right_mapping
WHERE group_id = "1"
AND role_id = "1";
但是我不想使用 PHP,我正在寻找一个 Sub 解决方案。
感谢您的宝贵时间以及您可以提供的任何帮助 XD
编辑:项目要求只允许我使用 perl、HTML 和 JavaScript。
最佳答案
在没有 JavaScript 的情况下也能工作。您需要添加更多的客户端错误检查,以防程序异常中止。
为遵循最佳实践,将数据库凭据存储在程序之外。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><head><title />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js" />
</head><body><form action="backup-table" method="POST"><input type="submit" /></form>
<script>
$('form').submit(function() {
if (confirm('Backup table?')) {
$.post("backup-table", function(data) {
alert($(data).text());
});
return false;
};
});
</script>
</body></html>
#!/usr/bin/perl -T
use strict;
use warnings FATAL => 'all';
use CGI qw();
use DBI qw();
my $dbh = DBI->connect('dbi:…', '…username…', '…password…', {RaiseError => 1, AutoCommit => 1,});
for my $sql (
'CREATE TABLE IF NOT EXISTS backup_tab_right_mapping
LIKE tab_right_mapping;',
'DELETE FROM backup_tab_right_mapping
WHERE group_id = "1"
AND role_id = "1";',
'INSERT INTO backup_tab_right_mapping
SELECT * FROM tab_right_mapping
WHERE group_id = "1"
AND role_id = "1";',
) {
$dbh->do($sql);
}
my $cgi = CGI->new;
print $cgi->header('application/xhtml+xml');
print '<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><head><title /></head>
<body><p>Backup complete</p></body></html>';
关于javascript - 带有 SQL 问题的 HTML Perl 更新按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5220075/