Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите с запросом

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Помогите с запросом
cyberx
Отправлено: 01 Января, 2010 - 18:40:21
Post Id


Новичок


Покинул форум
Сообщений всего: 30
Дата рег-ции: Дек. 2009  


Помог: 0 раз(а)




Помогите сделать правильный запрос. Сделал добавление друзей на сайте и в базу так заносится:

id friend_author friend_address
1 2 13
2 2 11
3 8 11
4 11 13

Где мой id (11). Например когда я кого то добавляю в друзья мой id садится в friend_address а когда меня добавляют то в friend_author. Тут видно что я двоих добавил в друзья под id (2 и 8) а id (13) добавил меня к себе. Проблема в том что я не могу нормально вытащить эти данные из базы. хочу сделать такой запрос чтоб выходили те id пользователей с которыми я дружу, значит (2,8,13). Запрос должен вытаскивать id которые связаны со мной и не должен выходить мой id, только те которые связаны со мной. я столько собирал сайт и мне все портит эта вещь.
 
 Top
Мелкий Супермодератор
Отправлено: 01 Января, 2010 - 19:30:53
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




CODE (text):
скопировать код в буфер обмена
  1. select friend_author, friend_address from table where friend_author=11 or friend_address=11

Далее в коде проверяете, какое из полей не равно 11 Улыбка

А зачем поле id? составного ключа friend_author & friend_address более чем достаточно будет...


-----
PostgreSQL DBA
 
 Top
cyberx
Отправлено: 01 Января, 2010 - 19:51:51
Post Id


Новичок


Покинул форум
Сообщений всего: 30
Дата рег-ции: Дек. 2009  


Помог: 0 раз(а)




да но я не знаю как отфильтровать эти данные. например

CODE (text):
скопировать код в буфер обмена
  1.  
  2. $result = mysql_query("select friend_author, friend_address from friends where friend_author = '$my_id' or friend_address = '$my_id'",$db);
  3. $myrow= mysql_fetch_array($result );
  4. do
  5. {
  6. и что суда записать чтоб вышли нужные данные? $my_id это мой id, в этом случае (11)
  7.  
  8. }
  9. while($myrow= mysql_fetch_array($result ));
  10.  
 
 Top
Мелкий Супермодератор
Отправлено: 01 Января, 2010 - 20:07:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




да из какого мана такая конструкция идёт? Дайте ссылку хоть посмеяться... Вот как такой код отреагирует, если mysql вернёт 0 записей?

PHP:
скопировать код в буфер обмена
  1. $result = mysql_query("select friend_author, friend_address from friends where friend_author = "$my_id" or friend_address = "$my_id"");
  2. while($myrow = mysql_fetch_array($result));
  3. {
  4. //если это мы, то выведем другую графу, их же всего 2
  5. if ($myrow["friend_author"]==$my_id) echo $myrow["friend_address"];
  6. else echo $myrow["friend_author"];
  7. }
  8.  

(Отредактировано автором: 01 Января, 2010 - 20:07:54)



-----
PostgreSQL DBA
 
 Top
cyberx
Отправлено: 01 Января, 2010 - 22:34:58
Post Id


Новичок


Покинул форум
Сообщений всего: 30
Дата рег-ции: Дек. 2009  


Помог: 0 раз(а)




Решил проблему таким запросом:

PHP:
скопировать код в буфер обмена
  1.  
  2. $result = mysql_query("SELECT friend_author FROM friends WHERE friend_address = '$my_id'
  3. UNION DISTINCT
  4. SELECT friend_address FROM friends WHERE friend_author = '$my_id'",$db) or die("error");
  5. if (mysql_num_rows($result) > 0)
  6. {
  7. $myrow= mysql_fetch_array($result);
  8. do
  9. {
  10. echo $myrow['friend_author'];
  11. }
  12. while($myrow= mysql_fetch_array($result));
  13. }
  14.  

(Отредактировано автором: 01 Января, 2010 - 22:48:23)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB