当用户在我的网站上进行搜索,并且只有一个条目时,我想将用户重定向到搜索结果。我目前这样做的方式很差。以下是我目前的做法:
如果搜索结果页面上只有一个搜索结果,那么我将呈现ID为“redirect”的隐藏输入以及要重定向到的链接值。在javascript中,如果存在ID为“redirect”的隐藏输入,则用户将被重定向到元素的值。
执行此操作的方法很糟糕,因为首先加载单个搜索结果,因此用户实际上看到有一个搜索结果。然后,它会在3秒后加载。
有更好的方法吗?
答案 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();
重定向。您可能需要向结果集(数据库表)添加更多信息以使其成为可能。
然而,我认为更进一步,也是自动重定向某些术语。你会一石二鸟。
假设您有一个term
和url
的数据库 - 您可以在列表中添加某些术语,这些术语也可用作重定向。这对于某些具有变体的关键字非常有用。尽管如此,请谨慎使用 - 与网站统计信息结合使用非常棒。它可以在显示0条记录的情况下帮助您。