Перейти к содержимому



Вывод с условием

#1 WebKiD

WebKiD
  • Пользователь
  • 27 сообщений
  • Репутация: 0
0

Отправлено 05 Февраль 2009 - 16:15

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

*HELP*

Вот пример таблицы:
Изображение

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 05 Февраль 2009 - 16:30

WebKiD, вы до конца не объяснили.
Ведь чтобы вывести тех кто ТЕБЯ добавил, а ТЫ их нет. Нужно знать ТВОЁ ID. Так?
То есть мы будем сверять данные определённого friend_u_id...
Прав я или нет?
  • 0

#3 WebKiD

WebKiD
    Topic Starter
  • Пользователь
  • 27 сообщений
  • Репутация: 0

Отправлено 05 Февраль 2009 - 16:35

Да, прав.
Для этого я и вывел кусок таблицы. Там юзер с id=1 есть в друзьях у 9 человек, а у него в друзьях 7 человек.
  • 0

#4 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 05 Февраль 2009 - 17:00

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

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

Данные в таблице
Изображение

Запрашиваемые данные
Изображение

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

#5 WebKiD

WebKiD
    Topic Starter
  • Пользователь
  • 27 сообщений
  • Репутация: 0

Отправлено 05 Февраль 2009 - 17:11

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

  • 0

#6 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 05 Февраль 2009 - 22:58

Конечно можно, только должна быть таблица пользователей.
Делаем так.
<?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);

?>

  • 0

#7 WebKiD

WebKiD
    Topic Starter
  • Пользователь
  • 27 сообщений
  • Репутация: 0

Отправлено 06 Февраль 2009 - 00:45

По моему где то ошибка, т.к. выводит "У вас нет новых друзей", хотя в друзья не подтвержденно 2 юзера.
зы. Имена таблиц сменил и подключил к БД.
  • 0

#8 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 06 Февраль 2009 - 00:51

Ошибку исправил...
Забыл передать параметр в mysql_num_rows()
  • 0

#9 WebKiD

WebKiD
    Topic Starter
  • Пользователь
  • 27 сообщений
  • Репутация: 0

Отправлено 06 Февраль 2009 - 11:37

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

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru