2013-11-18 3 views
-1

у меня есть 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 (в этом файле я хочу, чтобы искать (как ac_text слово для поиска и слово для поиска как n_text в 2 таблицы активных & новостей в то же время и отображения результата поиска, содержащих ссылки на исходные файлы ех ,

Это мой запрос

$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 колонке ссылка будет <a href=news.php?op=displaynews&n_id=$n_id>$n_title</a>

+1

[Пожалуйста, прекратите использование mysql_ * функций] (http://stackoverflow.com/q/12859942/1238019) в новом коде, они [официально устарели] (https://wiki.php.net/гк/mysql_deprecation). Вместо этого посмотрите [подготовленные заявления] (http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html) и используйте [Mysqli] (http://php.net/manual/en/book.mysqli.php) или [PDO] (http://php.net/manual/en/book.pdo.php). – zessx

ответ

0

Союз не расскажет вы из какой таблицы пришли данные, поэтому используйте ваш запрос как

(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>"; 
    } 

ПРИМЕЧАНИЕ как вы используете соединение, вы получите название столбца в поля столбца первого столбца таблицы, поэтому вы не получите ac_title отдельно, но столбец n_title будет содержать данные для ac_title, и wchtab сообщит вам, из какой таблицы были данные.

Смежные вопросы