搜索多个表并显示指向不同文件的链接

时间:2013-11-18 09:50:57

标签: php mysql search

我有2个表,第一个是tblactive(ac_id,ac_title,ac_text),第二个是tblnews(n_id,n_title,n_text)

我还有3个文件

Active.php(在此文件中,我从表中获取数据并通过函数displayac显示,例如<a href=active.php?op=displayac&ac_id=$ac_id>$ac_title</a>

News.php(在此文件中,我从表新闻中获取数据,并通过函数displaynews显示,例如<a href=news.php?op=displaynews&n_id=$n_id>$n_title</a>

问题

Search.php(在这个文件中我想搜索(如同2个表中的n_text的ac_text和searchword,同时显示活动和新闻),并显示包含原始文件链接的搜索结果,例如

这是我的查询

$result ="(select n_title,n_text, n_id from tblnews  where n_text LIKE '%$searchword%')
        union
        (select ac_title,ac_text, ac_id from tblactive  where ac_text LIKE '%$searchword%') limit $page, $perpage";
        $query=mysql_query($result);

如果在ac_text列中找到搜索词,则链接将为<a href=active.php?op=displayac&ac_id=$ac_id>$ac_title</a>

如果在n_text列中找到了searchword,则该链接将为<a href=news.php?op=displaynews&n_id=$n_id>$n_title</a>

1 个答案:

答案 0 :(得分:0)

Union不会告诉您数据来自哪个表,因此将查询操作为

(select n_title,'n' as wchtab, n_text, n_id from tblnews  where n_text LIKE '%e%')
union
(select ac_title,'a' as wchtab, ac_text, ac_id from tblactive  where ac_text LIKE '%e%')

其中'wchtab'告诉您数据来自哪个表,现在您可以在获取记录时检查

while ($row = mysql_fetch_assoc($result)) {
    if($row['wchtab'] == 'n'){
        $n_title = $row['N_TITLE'];
        $n_id    = $row['N_ID'];
        echo "<a href=news.php?op=displaynews&n_id=$n_id>$n_title</a>"
    }
    else if($row['wchtab'] == 'a'){
        $ac_title = $row['N_TITLE'];
        $a_id    = $row['N_ID'];
        echo "<a href=active.php?op=displayac&ac_id=$ac_id>$ac_title</a>";
    }

注意,当您使用union时,您将获得列的标题作为第一个表名列字段,因此您不会单独获取ac_title,但是列n_title将保存ac_title和wchtab的数据告诉你数据来自哪个表格。     }