关于为mysql查询编写动态表单的提示

时间:2009-11-06 01:27:13

标签: php javascript mysql dynamic

我是一个初学者并试图尽可能多地生成我自己的代码而不必经常要求别人为我编写代码,所以关于这个问题,我正在寻找正确方向的提示,而不是彻底的工作实例。你们这些人都非常有才华,但如果我自己解释一下,我会学得最好。如果我打砖墙,我一定会问问具体细节。 : - )

我想为MySQL查询构建一个表单,它有很多复选框选项,并不是所有大多数用户一次只能对一次搜索感兴趣。我不想提供一个庞大的表单,而是希望能够控制有多少后续选项可供选择,而无需转到新页面(如果可能的话)。

假设的例子:电影演员的数据库,其中包括每个演员的国籍,通过选择各种演员,表格查询将返回他们一起出现的所有电影。

ACTOR NATIONALITY
[] Any
[] German
[] Russian
[] British
[] American
[] Japanese
[] Chinese

首先不显示进一步的信息。如果用户检查[] Any,则会显示完整表格:

German   Russian   British   American   Japanese    Chinese
[]GER1    []RUS1    []BRIT1   []AMER1    []JPN1      []CHN1
[]GER2    []RUS2    []BRIT2   []AMER2    []JPN2      []CHN2
[]GER3    []RUS3    []BRIT3   []AMER3    []JPN3      []CHN3
 etc.

但如果用户只对德语&日本演员,他会检查这两个框,然后会出现以下内容:

German   Japanese 
[]GER1    []JPN1
[]GER2    []JPN2
[]GER3    []JPN3 
我有道理吗?

此时我的编码知识仅限于PHP / MySQL,因此只包含PHP的解决方案是理想的,但如果需要javascript,请指出正确的方向,我将努力添加必要的知识!< / p>

谢谢!

编辑 - 是的,所有复选框信息都是从数据库中提取的

2 个答案:

答案 0 :(得分:2)

我想用javascript。

我可能会将子选择放在TD或DIV中并使用style =“display:none”隐藏它们,并在复选框onclick事件上,如果选中该复选框,我会将该特定TD设置为可见..您还可以添加一些javascript代码,以确保未选中隐藏的TD或DIV中的复选框。并在PHP端再次进行一些验证。如果选中ANY,则让ur函数显示所有TD或DIV。

更多信息:

这需要我所看到的最少的javascript。 PHP也应该非常直接,因为你只需要拉动所有内容并在页面上回显,只能隐藏用户看到的DIV,除非他真的想看到它。使用PHP会增加页面加载,除非你使用AJAX,这可能是一种过度杀伤。

所以你主要是从javascript处理style属性的display属性,应该很简单。

答案 1 :(得分:1)

我同意Sabeen的意见; javascript是要走的路,但我会使用ajax方法而不是隐藏其他表单元素......

您可以使用js“监听”发生在第一个复选框组中的事件(即onclick,onmouseover,等等),当进行更改时,您可以使用ajax方法将表单数据发送到一个小的PHP脚本。然后该脚本确定构建哪些子菜单,并将相关的html片段返回给调用的php脚本。 Js接受此响应并操纵DOM以将新的复选框组添加到页面,所有这些都无需重新加载整个页面。

如果你是js / ajax世界的新手,那么我可以完全推荐jQuery。其他风格的js框架(在我的头顶)包括PrototypeMooToolsDojo

我希望不要太模糊,你确实说你想要朝着正确的方向努力,而不是具体的例子! :)

修改 我应该提一下,我假设驱动这些复选框的数据来自数据库。如果没有,那么Sabeen的方法实现起来更简单,并且会产生更小的执行开销。