重定向到单个搜索结果?

时间:2011-07-25 20:52:21

标签: php javascript jquery

当用户在我的网站上进行搜索,并且只有一个条目时,我想将用户重定向到搜索结果。我目前这样做的方式很差。以下是我目前的做法:

如果搜索结果页面上只有一个搜索结果,那么我将呈现ID为“redirect”的隐藏输入以及要重定向到的链接值。在javascript中,如果存在ID为“redirect”的隐藏输入,则用户将被重定向到元素的值。

执行此操作的方法很糟糕,因为首先加载单个搜索结果,因此用户实际上看到有一个搜索结果。然后,它会在3秒后加载。

有更好的方法吗?

4 个答案:

答案 0 :(得分:3)

如果只有1个结果,你可以使用header()PHP函数重定向。

header("Location: http://www.example.com/");

答案 1 :(得分:1)

您应该使用PHP来确定是否只有一个结果,然后执行服务器端重定向,如下所示:

header( 'Location: http://www.yoursite.com/redirect_page.html' );
exit;

在将任何内容打印到页面之前,检查是否只有一个结果,如果是,则渲染该脚本并退出,以便不处理任何其他内容。

答案 2 :(得分:1)

<?php 
//Query & other stuff

$num_of_results=mysql_num_rows($result);
if($num_of_results==0){
    //no results

}elseif($num_of_results==1){
    //only 1 result
    //pseudo-code
    //get id or controller ect from result set
    header('Location: ./page/'.$id);
    die();
}else{
    //normal display of search results
    while($row=.......){

    }
}
?>

答案 3 :(得分:1)

您的逻辑问题是您正在等待页面中的某些内容加载然后重定向。我认为一个更优雅的解决方案是改变事物的流动,为你提供更多的灵活性。

首先,您需要预处理查询并检查相关信息;如果有一个结果,请使用上述header();重定向。您可能需要向结果集(数据库表)添加更多信息以使其成为可能。

然而,我认为更进一步,也是自动重定向某些术语。你会一石二鸟。

假设您有一个termurl的数据库 - 您可以在列表中添加某些术语,这些术语也可用作重定向。这对于某些具有变体的关键字非常有用。尽管如此,请谨慎使用 - 与网站统计信息结合使用非常棒。它可以在显示0条记录的情况下帮助您。