X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Вывод с условием
WebKiD
WebKiD
Topic Starter сообщение 5.2.2009, 17:15; Ответить: WebKiD
Сообщение #1


Нужно вывести из таблицы в mysql данные:
Таблица: fr_id, u_id, friend_u_id (fr_id дружеской связи, u_id пользователя который добавил в друзья, friend_u_id того кого добавили в друзья)
Суть такова: в u_id записан id пользователя который добавил в друзья, а в friend_u_id записан id того, кого добавил в друзья.
Нужно вывести так: если меня добавили в друзья, а я его не добавил в друзья - нужно вывести id того кто добавил...

*HELP*

Вот пример таблицы:
[img]http://www.ii4.ru/images/221665prev.JPG[/img]
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 5.2.2009, 17:30; Ответить: ZiTosS
Сообщение #2


WebKiD, вы до конца не объяснили.
Ведь чтобы вывести тех кто ТЕБЯ добавил, а ТЫ их нет. Нужно знать ТВОЁ ID. Так?
То есть мы будем сверять данные определённого friend_u_id...
Прав я или нет?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
WebKiD
WebKiD
Topic Starter сообщение 5.2.2009, 17:35; Ответить: WebKiD
Сообщение #3


Да, прав.
Для этого я и вывел кусок таблицы. Там юзер с id=1 есть в друзьях у 9 человек, а у него в друзьях 7 человек.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 5.2.2009, 18:00; Ответить: ZiTosS
Сообщение #4


Тогда можно воспользоваться подзапросом.

SELECT * FROM friend WHERE NOT(u_id  IN (SELECT friend_u_id FROM friend WHERE u_id=1)) AND friend_u_id=1

Выбрать все поля из базы друзей ЕСЛИ
1) Не выполняется(NOT) условие, что Добавляющий вас не находится в списке ваших друзей
И
2) Все записи только с вашим friend_u_id=1

Данные в таблице
[img]http://i019.radikal.ru/0902/52/19244f4f18a4.gif[/img]

Запрашиваемые данные
[img]http://s53.radikal.ru/i140/0902/dd/15a4b009e7bc.gif[/img]

Если что-то не понятно со вложенными запросами, или как работает запрос... Отвечу на все вопросы.


Поблагодарили: (0)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
WebKiD
WebKiD
Topic Starter сообщение 5.2.2009, 18:11; Ответить: WebKiD
Сообщение #5


Спасиб. А можешь изобразить в php коде, как будет это выглядеть?
т.е. Если есть кто то кто добавил меня в друзья - вывести:
echo"Меня кто то добавил в друзья!";

А если нет новых друзей:
echo"У меня нет новых друзей...";
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 5.2.2009, 23:58; Ответить: ZiTosS
Сообщение #6


Конечно можно, только должна быть таблица пользователей.
Делаем так.
<?php

/* прототип функции формирования списка новых друзей */
function newFriends($id) {
   $friends = "";
   $query = "SELECT * FROM friend WHERE NOT(u_id  IN (SELECT friend_u_id FROM friend WHERE u_id={$id})) AND friend_u_id={$id}";
   $res = mysql_query($query);
   if(mysql_num_rows($res) == 0)
   {
      $friends = "У вас нет новых друзей";
   }
   else
   {
      while($array = mysql_fetch_array($res)) // Цикл перебора всех записей по запросу
         $friends .= formingFriend($array['u_id']); // Формируем по u_id
   }
   return $friends;
}

/* прототип функции формирования одного друга */
function formingFriend($id) {
   $temp = "";
   $query = "SELECT * FROM users WHERE id={$id} LIMIT 1"; // Выбираем добавившего пользователя из таблицы users
   $res = mysql_query($query);
   if(mysql_num_rows($res) != 0)
   {
      $friend = mysql_fetch_array($res);
      $temp = "{$friend['username']} ";  // Заносим имя друга
   }
   return $temp; // Возвращаем сформированную строку друга
}

/* Выводим новых друзей пользователя с id = 5 */
echo newFriends(5);

?>
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
WebKiD
WebKiD
Topic Starter сообщение 6.2.2009, 1:45; Ответить: WebKiD
Сообщение #7


По моему где то ошибка, т.к. выводит "У вас нет новых друзей", хотя в друзья не подтвержденно 2 юзера.
зы. Имена таблиц сменил и подключил к БД.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 6.2.2009, 1:51; Ответить: ZiTosS
Сообщение #8


Ошибку исправил...
Забыл передать параметр в mysql_num_rows()
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
WebKiD
WebKiD
Topic Starter сообщение 6.2.2009, 12:37; Ответить: WebKiD
Сообщение #9


Спасиб. Все работает))

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Ручной обмен, ввод/вывод электронных валют | ЮMoney, WMZ, Крипта, Приват, Монобанк | Низкие комиссии, минимальные суммы сделок
быстро, удобно, по доступному курсу
200 Sostavitel 98204 11.2.2024, 21:07
автор: Wolfhound
Открытая тема (нет новых ответов) Sbitcoin.ru – Ввод, Вывод, Обмен: Qiwi, YD, Btc, Btc-e, PM, Cash IN, PR24, MG, WU, Нал (RU, UA).
9 sbitcoinru 6784 10.10.2023, 19:25
автор: Sbitcoin
Горячая тема (нет новых ответов) Обмен WebMoney - Яндекс - QIWI. Вывод/ввод Приват24 UAH
225 himin 132838 7.5.2023, 13:26
автор: Вера_Симонова
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлы«»101Crypta.com«»ВВОД/ВЫВОД/ОБМЕН«»BTC/ETH/QIWI/USDT/VISA/MC«»НАЛИЧНЫЕ/СНГ/ЕВРОПА«»
13 101Crypta 12160 18.4.2023, 23:15
автор: 101Crypta
Открытая тема (нет новых ответов) Нужен вывод в топ наших роликов Youtube
3 wep 1929 23.3.2023, 17:39
автор: distrib095


 



RSS Текстовая версия Сейчас: 20.4.2024, 4:58
Дизайн