3

我计划创建一个网站,让您迭代地构建SQL查询。

思路如下:

while(user wants more where clauses)
{
    show selection (html select) for table columns
    let user choose one column
    upon selection, show distinct values of that column
    let user choose one/multiple value(s)
}

我知道如何处理该SQL部分,但我不确定如何处理页面的迭代构建。

所以我的问题是:

  1. 使用上面概述的想法迭代构建页面的最佳方法是什么?
  2. 如果用户更改了之前的选择之一,我该怎么办?

该网站将建立,Perl我正在考虑将其Ajax用于动态部分。

任何帮助深表感谢。

4

2 回答 2

0

如果我要这样做,我会使用SQL::Abstract

更新:

如果您不想重绘整个页面,您将使用 AJAX。因此,请为自己找到一个您觉得很舒服的 JavaScript 库,其中包括 ajax 调用。Jquery 有这个,其他一些也有。人们对各种图书馆有不同的看法。

无论如何,您的工作流程如下所示:

  1. 用户提交表单
  2. javascript 执行客户端验证
  3. javascript 向服务器提交 AJAX 样式
  4. 服务器执行服务器端验证、数据操作等。
  5. 服务器响应数据paylod
  6. 客户端根据有效负载的内容更新了屏幕。

因此,让我们专注于 5 和 6。

数据负载:AJAX 中的 X 表示 XML,但许多应用程序会发回 JSON 或 HTML。

更新屏幕:

您可以通过设置标签的 innerHTML 或 outerHTML 属性直接将 HTML 应用到现有页面。但这不会更新 DOM。如果您不在 clcinet 代码中挖掘 DOM,那么这就足够了。如果您四处寻找,那么您需要构建节点并将它们添加到您页面的 DOM 中,因此您可能需要考虑发回 JSON 或 XML。

因此,假设您有一个 id='generatedSQL' 的 div,当您的 AJAX 调用重新运行时,它将触发一个回调方法(我们称之为 updateSQL()),并且在回调中,您将拥有类似于以下的代码:

$(#generatedSQL).innerHTML = theVariableHoldingTheHtml;

您的另一个选择是解析 JSONXML/等。并使用 createNode() 等,构建新的 DOM 位并将它们插入您的页面。我没有为你写这个的 jquery 印章。每次我需要做类似的事情时,我都会查找它。

如果查询文本只是仅显示,并且您从不尝试在客户端对其进行挖掘,则只需使用 innerHTML 方法,无论您传递 HTML 还是传递 JSON 并从中生成 HTML。如果查询文本对客户端的内部工作很重要,那么您将需要编写一堆 DOM 操作代码。

于 2012-11-16T16:01:21.377 回答
0

不确定您将使用什么,但是,如果使用单击某物然后使用带有 ajax 调用脚本的元素的 Onload 事件,该脚本会带回数据/内容,并且在 readystate 上只需更新容器 DIV 的 innerHTML。希望下面的链接能帮助您理解这个概念,也将为您提供一个开始的代码。 http://www.w3schools.com/php/php_ajax_database.asp

于 2012-11-14T21:57:09.463 回答