Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Функция поиска, по 2м таблицам. MySQL 
:(
    Опции темы
zluka
Дата 3.3.2009, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 27.7.2006

Репутация: нет
Всего: 2



Вот код (результаты выводит в таблицу <table>):
Код

require_once("config.php"); //Подключение к БД

if (!empty($_POST))
{
    echo "<table>";
    echo "<tr>";
    echo "<th>Найдено</th>";
    echo "<th>Где</th>";
    echo "</tr>";

    $search = $_POST['search_query']; //Данные из формы
    $query_select = mysql_query("(SELECT id, Title, `Text` FROM `articles` WHERE `Text` LIKE '%{$search}%') UNION (SELECT id, Title,  `Description` FROM `books` WHERE `Description` LIKE '%{$search}%')"); //Сам запрос по 2м таблицам articles и books
    $rows = mysql_num_rows($query_select);

    for($i=0; $i<$rows; $i++)   //Вывод результатов
    {
        $f = mysql_fetch_array($query_select);

        if($f['Text'])    //Еcли результаты из articles
        {
             echo "<tr>";
             echo "<td><a href='articles.php?id={$f['id']}'>".$f['Title']."</a></td>";
             echo "<td align='center'><a href=view_articles.php>Статьи</a></td>";
             echo "</tr>";
        }
        elseif($f['Description'])   //Еcли результаты из books
        {
             echo "<tr>";
             echo "<td><a href='books.php?id={$f['id']}'>".$f['Title']."</a></td>";
             echo "<td align='center'><a href=view_books.php>Книги</a></td>";
             echo "</tr>";
        }

    }

    echo "</table>";
}

Проблема в том, что из поиск по articles выводит все правильно, а вот поиск по books пишет в <th>Где</th> - Статьи. В чем проблема?
Даю информацию о таблицах:
articles
Код

+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| Title | varchar(50) | NO   |     |         |                |
| Text  | text        | YES  |     | NULL    |                |
| Read  | int(10)     | YES  |     | NULL    |                |
| Date  | char(9)     | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+

books
Код

+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| id          | int(11)     | NO   | PRI | NULL    | auto_increment |
| Title       | varchar(50) | YES  |     | NULL    |                |
| Downloads   | int(11)     | YES  |     | NULL    |                |
| Link        | varchar(50) | YES  |     | NULL    |                |
| Date        | char(9)     | YES  |     | NULL    |                |
| Size        | float       | YES  |     | NULL    |                |
| Description | text        | YES  |     | NULL    |                |
| Type        | varchar(30) | YES  |     | NULL    |                |
+-------------+-------------+------+-----+---------+----------------+



--------------------
user posted image
PM MAIL   Вверх
ТоляМБА
Дата 3.3.2009, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 4
Всего: 252



zluka, наименования полей при использовании UNIОN выводятся из первой таблицы, то есть ты можешь сделть в запросе много юнионов с разными таблицами ки ранзыми по названию полями (разумеется чтобы типы были идентичны или приведены к единому), но в результе имена полей будут:
id, Title, Text
а потом данные из всех таблиц.

Ибо заголовок будет только один!

Это сообщение отредактировал(а) ТоляМБА - 3.3.2009, 16:50
PM   Вверх
zluka
Дата 3.3.2009, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 27.7.2006

Репутация: нет
Всего: 2



И как же тогда сделать?


--------------------
user posted image
PM MAIL   Вверх
ТоляМБА
Дата 3.3.2009, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 4
Всего: 252



Код
$query_select = mysql_query("(SELECT id, Title, `Text`, 'articles' as TableName FROM `articles` WHERE `Text` LIKE '%{$search}%') UNION (SELECT id, Title,  `Description`, 'books' FROM `books` WHERE `Description` LIKE '%{$search}%')");


В результате у тебя будет выводиться ещё и поле TableName со значениями "articles" и "books" в соотвествующих этим таблицам записях.
Значения этого поля и юзай для определения из какой таблицы взята запись.
PM   Вверх
Nestap
Дата 10.3.2009, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 221
Регистрация: 10.10.2008

Репутация: нет
Всего: 0



рибята вот такой вапрос,

ести табле вася: как випольнить поиск по префиксом?

например
колумс: наме:

мама даша
ваша мань
....

ну при поиска "ма*"

биле те две строки?

??

--------------------
<?    echo "Nestap";?>
PM WWW ICQ Skype Jabber   Вверх
bars80080
Дата 11.3.2009, 01:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



Код

$txt = 'ма';
$sql = 'select * from vasja where name like "%'.$txt.'%"';


что-то вроде такого
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0485 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.