这种做法是“更好的方式”吗?

时间:2009-11-30 12:42:39

标签: php javascript mysql html

我有一个广告网站,其中有很多记录存储在mysql数据库中。

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

myPhp.php包含NO 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函数,它会为某些东西设置隐藏的输入值,然后再次提交表单选择的变量。

Ex:每当用户想要转到搜索结果中的下一页时,他们必须点击在PHP中创建的“下一个”链接,然后调用javascript,将隐藏的输入值设置为“next” ,然后再次提交表单,PHP文件从隐藏输入中获取变量并检测其值设置为“NEXT”,然后显示下一个结果。

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

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

由于

3 个答案:

答案 0 :(得分: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模块,以便更好地理解。

答案 1 :(得分: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>

答案 2 :(得分:0)

创建链接时,您可以使用查询字符串指定要发送到服务器的参数,而不是提交表单。因此,如果你在一个名为next的表单中有一个隐藏的输入,那么你可以像这样使用相同的东西:

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

在myPhp.php页面上,您可以通过与发送表单时类似的方式获取next的值。