带有SQL问题的HTML Perl更新按钮

时间:2011-03-07 13:04:39

标签: javascript mysql html perl button

我正在尝试创建一种更新按钮,当用户点击HTML Perl按钮时,它会要求确认(是/否)。

如果用户单击“是”,则运行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。

2 个答案:

答案 0 :(得分:2)

也可以不使用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>';

答案 1 :(得分:0)

我不确定你为什么要这样做。 但我会这样做

  • 创建一个脚本,将所有复制内容保存在服务器上。
  • 在其提交按钮中创建一个带有 XMLHttpRequest 的网页,其中将调用执行sql操作的原始脚本。
  • 捕获 responseText 响应并使用js在您的页面上打印消息,或在其中放置一个警告框。

更简单的解决方案是:

  • 在服务器上创建一个脚本,该脚本具有提交按钮和一个可以告知下一个操作的隐藏输入
  • 基于隐藏参数调用您的sub可用于与sub。
  • 相同的脚本
  • 捕获响应并执行您想要执行的java脚本魔术。 如果您需要,我也可以为第二种方法提供样品。