2009-11-30 105 views
0

我有一个广告网站,有很多记录存储在mysql数据库中。这样做是“更好的方式”吗?

在我的主页上,我有一个表单,用户可以指定他们的搜索条件。 操作设置为myPhp.php文件。

myPhp.php不包含HTML,PHP只有代码,它基本上是这样的:

1- get values from FORM and build a SQL query 
2- query MYSQL db. 
3-display all results in a table using 
`while($row=mysql_fetch_array($res))` 
4- echo the table. 

在此表中这是在PHP创建,我有几个环节也,而每当他们被点击,调用父页面上的JavaScript函数,该函数将隐藏的输入值设置为某个值,然后再次使用所选变量提交表单。例如:当用户想要转到搜索结果的下一页时,他们必须点击在PHP中创建的“下一个”链接,然后调用javascript,将隐藏的输入值设置为'next ',然后再次提交表单,PHP文件从隐藏输入中获取变量,并检测其值是否设置为'NEXT',然后显示下一个结果。

难道真的没有其他办法可以做到这一切吗? (就性能和可靠性而言,这是一个更好的方法)

我还在学习,所以我非常感谢您的帮助! 我会在需要更多输入时更新此问题。

感谢

+0

我在你的问题中将“querystring”更改为“SQL query”,因为querystring在web上下文中具有另一个特定含义。 – 2009-11-30 12:52:47

+1

需要注意的一个问题是,并非所有用户都已启用javascript!你也应该确保可以使用你的链接而不使用javascript – espais 2009-11-30 13:02:30

回答

3

替换链接的下一个JavaScript调用

http://yourdomain/myPhp.php?page=2 

然后检查myPhp.php的get参数:

if(isset($_GET['page']) AND is_numeric($_GET['page'])){ 
    $limit = (int) $_GET['page'] * MAX_RECORDS . ', ' . MAX_RECORDS; 
} else { 
    $limit = MAX_RECORDS; 
} 

//... 
$query .= 'LIMIT '. $limit; 

当然,你必须改变它作为你的常量会发生变化等等。
此方法称为分页。看看Zend FrameworkPaginator模块,以便更好地理解。

+0

好的,但是如果我确实发送了像你上面提到的那样的变量给PHP文件,那么表单提交的其他变量会消失吗? (如查询字符串,价格和其他用户输入) – pesar 2009-11-30 13:03:37

+0

Foa:不发送查询字符串。 2:如果你不发布你的数据,你不能从POST超全球获得他们。 – erenon 2009-11-30 13:08:01

+0

请在downvote后发表评论。 – erenon 2009-11-30 14:25:35

0

如果这些链接跨板至少有一个相同的类(带有title属性),您可以附加到它们以将所有这些链接附加到单个点击事件并测试以查看单击元素上的标题。

有了这个,你可以使用开关触发正确的功能来执行任务(我想用JQuery/Ajax)。

这应该工作。至少没有隐藏的字段。

例子:

<a href="myPhp.php?whatever you querystring is" title="NEXT">Next</a> 

<a href="myPhp.php?whatever you querystring is" title="AdDetails">Ad Details</a> 
0

在创建链接,您可以使用查询字符串指定你想发送到服务器,而不是提交表单参数。所以,如果你有一个叫旁边形式的隐藏的输入,那么你可以accompish这样同样的事情:

<a href="myPhp.php?next=NEXT">Next</a> 

在myPhp.php页面,您可以得到,当你发送以类似的方式未来的价值表单。

+0

好吧,但如果我确实再次发送像上面提到的PHP文件那样的变量,那么表单提交的其他变量会消失吗? (如查询字符串,价格和其他用户输入) – pesar 2009-11-30 13:04:07

+0

哦。我没有得到表单中有其他数据。我以为你想知道用户点击了哪个链接。如果表单中的所有字段都是隐藏的,那么您可以使用此方法,如果用户可以编辑表单,则按照您已经完成的方式执行。你可以像这样添加多个查询字符串:url?var = val&var2 = val2&var3 = val3 – 2009-11-30 13:22:40

相关问题