2010-01-11 73 views
1

我正在构建一个使用PHP 5,MySQL 5和Javascript与jQuery和AJAX的Web应用程序。一步一步查询MySQL数据库 - 最佳方法?

该应用程序是一个非常复杂的选择过程,具有多个下拉菜单,用户可以按任意顺序进行选择。每个下拉菜单中的选择都会给出更多选择标准,这将限制其他下拉菜单中的选择,并最终提供有限的结果集。

我在客户端使用Javascript与服务器和MySQL数据库连接到PHP的AJAX,想法是,每次用户从下拉选择的东西我发送一个AJAX请求来更新所有其他下拉。当所有可能的参数被设定后,结果将被显示出来。

(我也想保持逻辑在服务器端由于种种原因,为此使用AJAX。)

现在,我不知道什么是处理这种“迭代”的过程对每个用户的最佳方式:

我有一个表,每个选择结果的所有条件。由于每个下拉选择将导致一组如果选择标准,我可以存储查询字符串在服务器上添加到每个选择。然后,我运行当前存储的查询字符串,找出每个下拉菜单应该进入的内容,将该数据发送给客户端,然后在更多条件添加,运行,发送等等时存储该查询以供后续使用。 然后我必须将该查询字符串存储在每个用户的服务器上,或许存储在一个文本文件中。或者作为一个存储过程,请参见下面的内容....

另一种方法是在选择完成后使用新条件运行查询,发送数据以更新下拉列表,然后将选择存储在临时表,我运行下一个查询等等等等。所以临时表将收缩每个选择,直到我呈现结果。

应用程序可以有多个用户在同一时间工作,所以必须通过可能的Cookie /会话ID以某种方式识别用户....(?)

而存储的查询或临时表后,必须消失有些时候每个用户都离开了......怎么样?

筛选方法,以添加越来越多的标准来选择从表中,允许进行选择复杂的计算:

  • 使用连接

  • 使用正受到越来越多的限制临时表因为添加新标准时会删除记录。

  • 使用子选择。

储藏方法,以保持轨道上为每个用户在每个步骤之间:

  • 在一个服务器上的文件存储参数,并将其插入到SQL或存储过程中的每个选择步骤,做一个新的查询每个步骤的整个数据库,但每次都添加更多标准。

  • 在一个文件中存储一个sql查询,并将其扩展为每个步骤....

  • 存储在表/场中的SQL查询.....

  • 存储在存储过程中的SQL查询.....

  • 商店的实际限制结果集的前面对于模板表中每个用户的选择将越来越小,因为每一步都会删除越来越多的记录。

  • 存储会话期间在客户端的参数,他们都重新发送到服务器的每个选择

任何人都可以对这个决定帮助吗?

RGDS PM

回答

1

,我会建议将每个在下拉框中的值由用户更换的时间运行不同的查询的最佳方法。如果你有5个下拉框,当用户在第一箱变值,你从你的AJAX页面运行查询:

SELECT * FROM table WHERE val1 = x; 

然后,一旦用户决定改变另一个值,你可以运行更多的收窄查询,例如

SELECT * FROM table WHERE val1 = x AND val2 = y; 

然后你可以重复这个过程,直到所有的下拉框被改变。

至于使用临时表或存储过程。我想说这可能不是你想要达到的目标所必需的,而且很可能只是增加了项目的复杂性。

如果您知道需要从前端检查哪些字段,那么您应该将所选值从下拉框发送到AJAX页面,以便它可以决定需要运行的查询并返回结果(XML/JSON对此很有帮助)。

+0

谢谢!认为我对自己有点过于复杂......只会跟踪在客户端使用/单击哪些下拉菜单,然后在单击一个下拉菜单时将这些内容发送到服务器端。然后,服务器可以执行一些操作,如SELECT * FROM table WHERE field1 = param1 AND Field2 = param2等可达15个。尚未解决的参数可以设置为通配符,因此我可以始终使用相同的查询字符串(我猜是? .... –